如何在默认转发伪装策略之前加一个不伪装的策略?

2022-06-01 08:20:49 +08:00
 phpfpm

网络拓扑:

  1. 主路由 192.168.10.1
  2. 旁路由 192.168.10.2 ,static ,默认网关是 192.168.10.1
  3. DHCP:主路由下发,下发的网关和 DNS 都指向旁路由
  4. 旁路由设置以下转发规则:
  1. 内网机器 192.168.10.120
  2. 端口转发:8888:主路由公网出口 ==> 192.168.10.120:80

遇到的问题

流量从公网进来,从 192.168.10.1 打到 192.168.10.120 之后,回包是回给公网的,此时回包的数据包回给 192.168.10.2 ,而不是直接给主路由

192.168.10.2 收到其他机器给外网的数据包之后,开始伪装,把 sip 改为自己的 ip ,也就是 NAT 伪装

此时 192.168.10.1 蒙圈了:

  1. 入站 visitor:12345 => publicip:8888
  2. 转发 visitor:12345 => 10.120:80
  3. 回包 10.2:80 => visitor:12345 (这个包的 SRC 存疑,不确定回包的端口号是不是 80 )
  4. 然后发现转发的地址和回包的地址不对,路由器 drop 这个流量,外网收不到回包

可能的解决方案

在默认的伪装策略之前加一条,当来源 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 ,发现这个策略没有收到包和流量,看起来是没有命中?

1178 次点击
所在节点    问与答
9 条回复
zhangsanfeng2012
2022-06-01 09:46:36 +08:00
旁路由的 nat 没有必要,取消就行了
phpfpm
2022-06-01 10:24:52 +08:00
@zhangsanfeng2012 这个不是 NAT ,就是一个转发,不加这个 masquade 就都没法用
bfdh
2022-06-01 11:07:52 +08:00
我也觉得旁路由做 MASQUERADE 有点奇怪,按你这个拓扑,旁路由挂了,整个网络也就挂了,那何不直接把旁路由做主路由?
phpfpm
2022-06-01 11:39:15 +08:00
@bfdh 哈哈哈哈好问题

这么搞可以是主路由可以是傻瓜无线路由器什么的
而且比如迅游主机加速器就是这么搞的去洗流量啊

anyway 回到这个问题本身。。。求点解我该怎么写 iptables
bfdh
2022-06-01 11:57:35 +08:00
要不换个思路,试试多转一遍,不管 iptables 了? visitor:12345 => publicip:8888 => 10.2:8888 => 10.120:80
phpfpm
2022-06-01 13:10:22 +08:00
@bfdh 是我这么搞过 没问题的 但是就是要经过两次转发配置起来很别扭。。。
zhangsanfeng2012
2022-06-01 14:00:08 +08:00
@phpfpm MASQUERADE 就是 snat ,去掉 nat ,同子网内走二层转发就没问题了
phpfpm
2022-06-01 15:15:48 +08:00
@zhangsanfeng2012 但是去掉 nat 之后,就不转发流量了怎么办,使用 10.2 当做网关的机器无法访问外网

求解二层转发的规则怎么写?
zhangsanfeng2012
2022-06-01 15:28:16 +08:00
@phpfpm pc 的默认网关是旁路由,旁路由的默认网关是主路由: pc->旁路由->主路由->nat 出公网,这个路径是通的。不知道你的旁路由是什么系统,防火墙是不是关闭了,ip forward 是不是打开了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/856608

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX