1.问题描述
某Linux课程上看到,两次DNAT(端口映射)会导致TCP源丢失的问题,因为本身学过网络相关的知识,理论上并未发现会在哪个节点丢失源的问题,遂实验验证。
2.ensp模拟验证
因为使用手头没有eve模拟器,先使用ensp路由器模拟验证,拓扑如下图
路由器配置nat server
命令如下:
R1
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]nat server protocol tcp global current-interface 8080 inside 172.16.12.1 8081
R2
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]nat server protocol tcp global current-interface 8081 inside 172.16.13.2 80
经过测试,发现两次DNAT(端口映射,华为称为nat server)后,依然可以正常访问,并不会出现TCP连接无法建立的情况。
为进一步验证,于是搭建eve模拟器环境用liunx进行测试。
3.eve模拟器centos测试
网络拓扑如下图
配置命令如下:
GW1
iptables -t NAT -A PREROUTING -d 101.163.9.102 -p tcp --dport=55023 -j DNAT --to-destination 172.16.12.1:54023
stream1
iptables -t NAT -A PREROUTING -d 172.16.12.1 -p txp --dport=54023 -j DNAT --to-destination 172.16.13.2:22
打开Linux的路由转发功能
sysctl -w net.ipv4.ip_forward=1
#永久生效
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
经过测试也是可以访问的,最终验证两次DNAT(端口映射)是没有问题的
4.补充
- 以上iptables操作都是临时的,重启后会丢失,永久生效配置如下
yum -y install iptables-services
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables.service --now
#查看命令
iptables -t nat -L -n
- firewalld配置DNAT
```bash
firewalld-cmd --add-forward-port=port=55023:proto=tcp:toport=54023:toaddr=172.16.12.1 --per
firewalld-cmd --reload