Linux(ubuntu)如何用iptables实现端口映射
主机1:(用来转发的连接公网的服务器)
内网: 192.168.0.101 //内网IP
公网:202.102.1.3 //公网IP
主机2:(服务器分发的局域网的主机)
内网:192.168.0.102 //内网IP
拓扑图如下图所示:
(在转发服务器上进行设置)
首先,必须开启linux的数据转发功能,具体开启步骤如下:
vim /etc/sysctl.conf
2 将net.ipv4.ip_forward=0更改为net.ipv4.ip_forward=1 ,并取消掉前面的注视符“#”
3 sysctl -p(这条命令是使数据转发功能生效)
现在就可以更改iptables了,使之实现nat映射功能:
例如:你要将外网访问本地IP(192.168.0.102)
的80端口转换为访问192.168.0.101
的8000端口,你可以用如下命令:
(1)iptables -t nat -A PREROUTING -d 192.168.0.101 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.102:8000
(2)iptables -t nat -A POSTROUTING -m tcp -p tcp --dport 8000 -d 192.168.0.102 -j SNAT --to-source 192.168.0.101
说明:
iptables -t nat -A PREROUTING -d "对外公网ip" -p tcp --dport "对外端口" -j DNAT --to "内部实际提供服务的ip":"实际提供服务的端口"
iptables -t nat -A POSTROUTING -d "内部实际提供服务的ip"-p tcp --dport "实际提供服务的端口" -j SNAT --to-source "运行iptables机器的内网ip"
可以使用命令:iptables -t nat —list检查nat列表信息:
Nat列表信息删除:
iptables -t nat -D PREROUTING 1 //序号从1 开始,后边以此+1.
iptables -t nat -D POSTROUTING 1 //序号从1 开始,后边以此+1.
最后把/bin/iptables.sh脚本加入开机运行
echo "/bin/iptables.sh" >> /etc/rc.local
重启网络服务
/etc/init.d/network restart
介绍两个实用的博客地址:
https://icewing.cc/post/25-iptables-policy.html\#toc-492
https://blog.csdn.net/zzhongcy/article/details/42738285
还没有评论,来说两句吧...