iptables命令实现端口映射——网络透传

本文介绍了如何使用iptables进行端口映射和NAT转发,包括以WAN口IP和接口名为匹配条件的两种方式。在开启Linux核心转发功能后,详细阐述了新增、删除和修改端口映射规则的步骤,并提供了调试命令及实际工作中的应用实例,如端口映射到内网IP和源地址转换。建议在WAN口IP不固定的情况下使用以接口名为匹配条件的方式。
摘要由CSDN通过智能技术生成

前言

实际工作中用到的iptables命令,从当前网页跳转到另一网页,感觉很有用,分享一下。

开启核心转发

如果想要NAT功能能够正常使用,需要开启Linux主机的核心转发功能。

echo 1 > /proc/sys/net/ipv4/ip_forward

方式一:以wan口ip作为匹配条件

1.新增一条端口映射规则

将访问wan口的端口转发至内网某个ip上

iptables -t nat -A PREROUTING -p [tcp/udp] -d wanip --dport wanport -j DNAT --to lanip:lanport

wanip:wan口ip
wanport:wan口端口
lanip:需要转发给局域网主机的ip
lanport:需要转发给局域网主机的端口

2. 删除一条端口映射规则

iptables -t nat -D PREROUTING -p [tcp/udp] -d wanip --dport wanport -j DNAT --to lanip:lanport

仅-A和-D的区别

3. 修改一条端口映射规则

当wanip变化后,需要修改端口转发规则,即修改wanip

iptables -t nat -R PREROUTING rulesnum -p [tcp/udp] -d newwanip --dport wanport -j DNAT --to lanip:lanport

rulesnum:要修改规则的序号,可以查看时通过加--line选项获得

端口转发支持TCP,UDP即可

方式二:以wan口接口名作为匹配条件

1. 新增一条端口映射规则

将访问wan口的端口转发至内网某个ip上

iptables -t nat -A PREROUTING -p [tcp/udp] -i wanifname --dport wanport -j DNAT --to lanip:lanport

wanifname:wan口接口名,例如我们的imx6ul为eth0.1
wanport:wan口端口
lanip:需要转发给局域网主机的ip
lanport:需要转发给局域网主机的端口

2. 删除一条端口映射规则

iptables -t nat -D PREROUTING -p [tcp/udp] -i wanifname --dport wanport -j DNAT --to lanip:lanport

仅-A和-D的区别

3. 修改一条端口映射规则

当wanip变化后,需要修改端口转发规则,即修改输入网络接口名

iptables -t nat -R PREROUTING rulesnum -p [tcp/udp] -i newwanifnamep --dport wanport -j DNAT --to lanip:lanport

rulesnum:要修改规则的序号,可以查看时通过加--line选项获得

rulesnum:要修改规则的序号,可以查看时通过加–line选项获得

对比方式一和二

方式一当wan口ip发生变化时,规则得重新修改,方式二则不需要。方式二当wan口接口名变化时,规则得重新修改。建议选用方式二作为我们端口映射的方法。

调试常用命令

查看端口转发规则:
因为我们的端口转发位于PREROUTING链,所以命令为:

iptables -t nat -nvL PREROUTING

清空nat表,PREROUTING链规则

iptables -t nat -F PREROUTING

打印nat表,PREROUTING链中iptables执行的命令参数

iptables -t nat -S PREROUTING

实例

实际工作中在代码加入的,分享一下。

1.利用iptables命令实现端口映射;
2.将抓拍机eth0的9998端口转发到电子围栏web20.1.178.202:9998端口;
3.所有从抓拍机eth1口接收的包伪装(MASQUERADE),即改为eth1的IP地址;
4.打开内核的路由功能,将文件/proc/sys/net/ipv4/ip_forward内的值改为1。

iptables -t nat -A PREROUTING -p tcp  -i eth0 --dport 9998 -j DNAT --to-destination 20.1.178.202:9998
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward 

PREROUTING是目的地址转换(DNAT),eth0才能访问到电子围栏web20.1.178.202:9998端口。

POSTROUTING是源地址转换(SNAT), MASQUERADE 就是『IP伪装成eth1的IP』 不管现在eth1获得了怎样的动态ip,MASQUERADE会自动读取eth1现在的ip地址然后做SNAT出去,这样就实现了很好的动态SNAT地址转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值