准备:需要先开启linux的数据转发功能
# vi /etc/sysctl.conf,将net.ipv4.ip_forward=0更改为net.ipv4.ip_forward=1
# sysctl -p //使数据转发功能生效
2、一台主机到另外一台主机的端口转发
将外网访问172.16.0.20的306端口转发到172.16.0.215 3306端口。
iptables -t nat -A PREROUTING -d 172.16.0.20 -p tcp --dport 3306 -j DNAT --to-destination 172.16.0.215:3306
将172.16.0.215 3306端口将数据返回给客户端时,将源ip改为172.16.0.20
iptables -t nat -A POSTROUTING -d 172.16.0.215 -p tcp --dport 3306 -j SNAT --to-source 172.16.0.20
查看nat,可以使用命令:iptables -t nat –list检查nat列表信息
3、要针对本机进行端口转发
将外网访问80端口的数据转发到8080端口
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
将本机访问80端口的转发到本机8080
# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8080
# iptables -t nat -A OUTPUT -p tcp -d 192.168.4.177 --dport 80 -j DNAT --to 127.0.0.1:8080
本地连接指的是在本机上,用 127.0.0.1 或者本机 IP 来访问本机的端口。本地连接的数据包不会通过网卡,而是由内核处理后直接发给本地进程。这种数据包在 iptables 中只经过 OUTPUT 链,而不会经过 PREROUTING 链。所以需要在 OUTPUT 链中进行 DNAT。除了对 127.0.0.1 之外,对本机 IP (即 192.168.4.177) 的访问也属于本地连接。
阅读(1302) | 评论(0) | 转发(0) |