流量从公网进来,从 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-06-01 09:46:36 +08:00
旁路由的 nat 没有必要,取消就行了
|
2
phpfpm OP @zhangsanfeng2012 这个不是 NAT ,就是一个转发,不加这个 masquade 就都没法用
|
3
bfdh 2022-06-01 11:07:52 +08:00
我也觉得旁路由做 MASQUERADE 有点奇怪,按你这个拓扑,旁路由挂了,整个网络也就挂了,那何不直接把旁路由做主路由?
|
4
phpfpm OP |
5
bfdh 2022-06-01 11:57:35 +08:00
要不换个思路,试试多转一遍,不管 iptables 了? visitor:12345 => publicip:8888 => 10.2:8888 => 10.120:80
|
7
zhangsanfeng2012 2022-06-01 14:00:08 +08:00
@phpfpm MASQUERADE 就是 snat ,去掉 nat ,同子网内走二层转发就没问题了
|
8
phpfpm OP |
9
zhangsanfeng2012 2022-06-01 15:28:16 +08:00
@phpfpm pc 的默认网关是旁路由,旁路由的默认网关是主路由: pc->旁路由->主路由->nat 出公网,这个路径是通的。不知道你的旁路由是什么系统,防火墙是不是关闭了,ip forward 是不是打开了。
|