写在前面:搞网络的时候,很容易把非技术导致的问题归类成技术问题,导致投入大量精力却毫无进展。
光猫是贝尔的 XE140W ,自带 WiFi6 ,本着多一个设备不如少一个设备的原则,就没再装 WiFi 路由器了。 组网也很简单,光猫出来只接交换机,交换机接了几个设备,其中有一个 server 是做透明网关用来科学上网。
这套配置我以前在老家用过,所以轻车熟路搭了起来,但是无论怎么配置,用手机测试透明网关时候就是不能上网。在 server 上各种配置 iptables 和 ip_forward 都不行, 用 iptables trace 监控流量发现来自手机的只有一些组播报文,tcpdump 也是只能抓到这些组播报文。
我以为是 server 的网络配置的问题,到 StackOverflow 各种搜都没用,搜累了,准备放弃的时候,我在 server 上 ping 了一下手机的 IP ,发现延迟可达几十毫秒,这很不正常,但这时候我仍然认为是 server 问题,又是一阵子备份清空 iptables ,重启 server ,最终还是被打败。折腾四五个小时太累了准备睡觉。
洗漱完,打开 xbox 准备看个小电影放松下睡觉,但还是不死心,在 xbox 再测一次试试,手动 IP ,设置下一跳网关为 sever ,MD 这次居然稳稳地能上网了,再把科学开起来,油管刷刷刷地播放起来了。
究其原因,根本就和 server 配置没关系,是传统大坑的电信光猫没有开启 IP 转发,无线收到下一跳不是指向本设备的包的之后,也不转发,直接丢弃了。至于怎么开启,电信 SDN 根本没给这个功能的权限。
吐槽一下,以前我觉得把设备的功能尽可能发挥出来是最优解,现在觉得那种不明不白也没售后的设备最好还是别让它出现在自己的组网里,多花 200 块钱,能节省好多时间和精力
1
godall 2023-01-31 14:51:37 +08:00
1. 设置 DMZ
2. 改为桥接。 |
2
kingsoT 2023-01-31 15:11:19 +08:00
是不是默认开了无线隔离之类的选项?找一找关掉就好了,因为不至于不给修改这个配置吧。
|
3
wanmyj OP |
5
guazila 2023-01-31 16:14:47 +08:00
和我那个运营商送的华为路由器一样,不能设置网关,不能设置 DHCP 下发的 DNS 。
|
6
Xusually 2023-01-31 16:16:16 +08:00
"无线收到下一跳不是指向本设备的包的之后,也不转发,直接丢弃了。"
op 这句话如果是真的话,你 wifi 访问其他内网设备包括 nas 也是不行的,你试试看。 这一般都是开启了无线客户端隔离造成的。我的 ap 上这个功能叫“无线网络内部隔离”。 |
7
wanmyj OP |
8
Xusually 2023-01-31 17:35:33 +08:00
@wanmyj #7 啊,没仔细看就回复了,那确实是有区别的,忽略上面的回答吧。
这问题应该是回程数据校验不通过,SNAT 的问题,之前看到有人讨论过。 刚看了一下好几种解决方法,server 上如果是 openwrt 的话,lan 开启 ip 动态伪装、或者主动做 SNAT 、或者关闭 lan 桥接并且 wan/lan 共用一个 eth 口。 你搜索一下关键字旁路由 + SNAT |
9
blessme 2023-01-31 17:46:55 +08:00
不能定义就关闭不让它下发,用局域网里面其他设备做 dhcp 服务器,网关交换机就能干的事。
|
10
futuregaget 2023-01-31 20:15:04 +08:00 via iPhone
并不是 这是一个陈年 bug 从无线进来的流量被视为 3 层转发 contrack 过旁路由不做 nat 相当于一个包进两次路由 第二次被抛弃
小米 tplink 都有部份无线是这样的 不知道是哪家的无线驱动搞出来的 |
11
futuregaget 2023-01-31 20:16:42 +08:00 via iPhone
用了 snat 就别用旁路由了 别扭
|
12
futuregaget 2023-01-31 20:20:04 +08:00 via iPhone
https://www.v2ex.com/t/743231#reply9
详细的解释 能确定是 iptable 扔的 但不知道为什么 wifi 进来的二层转发被 contrack 了 |
13
wanmyj OP 我理解的是 @Xusually 说的 旁路由 + SNAT 的问题 和 @futuregaget 说的问题是同样的。即和 SNAT 相关。
我的 WiFi 是在作为主路由的"光猫无线一体机"上,主路由是电信的 SDN 光猫,没有破解,所以不可能抓到 WIFI 原始流量。 我在旁路由(或者叫透明网关,Homelab )上用 iptables 的 trace 功能,在 raw 表的 prerouting 链开始跟踪(这个位置早于 contrack status check ),发现没有来自设置好透明网关的手机的流量。也就是说,这个流量没有从主路由被转发到旁路由。所以也不会有数据包‘第二次’进入主路由的情况。合理推断,就是主路由直接丢掉了它收到的‘**D\_IP 是公网,但 D\_MAC 非主路由**’的无线数据包。 我的 Homelab 插在交换机上,我测过当另一台设备直插交换机上时,设置 homelab 为透明网关,是可以正常上网的(因为这个数据包没有像无线数据包一样,通过主路由器) 但我还没有测它是否会丢掉来自主路由__有线网口__的**D\_IP 是公网,但 D\_MAC 非主路由**的数据包。 |
14
wanmyj OP Sorry 写的有点乱,原来回复框是没有 MD 语法加持的 Hhhh
|