端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。简单来说,我需要一个跳板(堡垒机)去访问目标应用。
1. 开启IP转发
- 编辑conf
# vi /etc/sysctl.conf
- 开启转发项
net.ipv4.ip_forward = 1
# 默认值0是禁止ip转发,修改为1即开启ip转发功能。
- 保存并使之生效
# sysctl -p(使之立即生效)
2. 配置端口转发
假设用户访问172.16.31.81:728时我想让它转发到192.168.88.223:8080,这里介绍2种方式:
注意:请保证你的端口没有被占用。
2.1. 动态添加
管理员模式下,在终端下输入以下命令:
# iptables -t nat -A PREROUTING -p tcp -d 172.16.31.81 --dport 728 -j DNAT --to-destination 192.168.88.223:8080
# iptables -t nat -A POSTROUTING -p tcp -s 192.168.88.223 --sport 8080 -j SNAT --to-source 172.16.31.81
# service iptables save(将当前规则保存到 /etc/sysconfig/iptables)
2.2. 修改配置文件
- 修改vi /etc/sysconfig/iptables,添加如下内容:
-A PREROUTING -d 172.16.31.81 -p tcp -m tcp --dport 728 -j DNAT --to-destination 192.168.88.223:8080
-A POSTROUTING -s 192.168.88.223 -p tcp -m tcp --sport 8080 -j SNAT --to-source 172.16.31.81
- 开放728端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 728 -j ACCEPT
- 重启防火墙:
# service iptables restart
3. 本机端口转发
如果只需要在本机间不同的端口转发就比较容易了,比如访问 http://ip:729 我想返回 http://ip:80的内容,配置如下(终端下输入):
# iptables -t nat -A PREROUTING -p tcp --dport 729 -j REDIRECT --to-ports 80
# service iptables save
# service iptables restart
4. 防火墙开放端口
- 修改/etc/sysconfig/iptables文件,增加如下一行(这里开放10000端口):
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10000 -j ACCEPT
- 重启 iptables
# service iptables restart
- 重启防火墙方式
- 重启后生效
开启:chkconfig iptables on
关闭:chkconfig iptables off
- 即时生效,重启后失效
开启:service iptables start
关闭:service iptables stop