说明:
须要将外网访问本地IP(192.168.75.5)的80端口转换为访问192.168.75.3的8000端口,这就须要用到iptables的端口映射
实现:
1. 须要先开启linux的数据转发功能linux
# vi /etc/sysctl.conf,将net.ipv4.ip_forward=0更改成net.ipv4.ip_forward=1 # sysctl -p //使数据转发功能生效
2. 更改iptables,使之实现nat映射功能ubuntu
将外网访问192.168.75.5的80端口转发到192.168.75.3:8000端口。 # iptables -t nat -A PREROUTING -d 192.168.75.5 -p tcp --dport 80 -j DNAT --to-destination 192.168.75.3:8000 将192.168.75.3 8000端口将数据返回给客户端时,将源ip改成192.168.75.5 # iptables -t nat -A POSTROUTING -d 192.168.75.3 -p tcp --dport 8000 -j SNAT --to 192.168.75.5
3. 查看nat,能够使用命令:iptables -t nat –list检查nat列表信息tcp
以上是针对从一台机到另外一台机的端口转发,若是要针对本机进行端口转发,就须要按以下操做:spa
将外网访问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) 的访问也属于本地链接。
iptables删除操做:
查看nat规则,并显示行号
iptables -t nat --list --line-numbercode
删除一条nat 规则 删除SNAT规则
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7进程
ubuntu中iptables重启生效:
查看nat规则,并显示行号
iptables -t nat --list --line-numberip
删除一条nat 规则 删除SNAT规则
iptables -t nat -D POSTROUTING 1
iptables -t nat -D POSTROUTING 7it