
流量从公网进来,从 192.168.10.1 打到 192.168.10.120 之后,回包是回给公网的,此时回包的数据包回给 192.168.10.2 ,而不是直接给主路由
192.168.10.2 收到其他机器给外网的数据包之后,开始伪装,把 sip 改为自己的 ip ,也就是 NAT 伪装
此时 192.168.10.1 蒙圈了:
在默认的伪装策略之前加一条,当来源 ip 是 10.120 且来源端口是 80 的时候,直接接受而不是伪装:
iptables -t nat -I POSTROUTING -o eth0 -p tcp -s 192.168.10.120 --source-port 80 -j ACCEPT iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE 但是似乎不生效,求解
看了一下 OP 的 iptables ,发现这个策略没有收到包和流量,看起来是没有命中?
1 zhangsanfeng2012 2022 年 6 月 1 日 旁路由的 nat 没有必要,取消就行了 |
2 phpfpm OP @zhangsanfeng2012 这个不是 NAT ,就是一个转发,不加这个 masquade 就都没法用 |
3 bfdh 2022 年 6 月 1 日 我也觉得旁路由做 MASQUERADE 有点奇怪,按你这个拓扑,旁路由挂了,整个网络也就挂了,那何不直接把旁路由做主路由? |
4 phpfpm OP |
5 bfdh 2022 年 6 月 1 日 要不换个思路,试试多转一遍,不管 iptables 了? visitor:12345 => publicip:8888 => 10.2:8888 => 10.120:80 |
7 zhangsanfeng2012 2022 年 6 月 1 日 @phpfpm MASQUERADE 就是 snat ,去掉 nat ,同子网内走二层转发就没问题了 |
8 phpfpm OP |
9 zhangsanfeng2012 2022 年 6 月 1 日 @phpfpm pc 的默认网关是旁路由,旁路由的默认网关是主路由: pc->旁路由->主路由->nat 出公网,这个路径是通的。不知道你的旁路由是什么系统,防火墙是不是关闭了,ip forward 是不是打开了。 |