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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绛洞花主敏明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值