V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wanmyj
V2EX  ›  宽带症候群

上海电信的光猫做主路由,发现不能自定义网关。

  •  
  •   wanmyj · 2023-01-31 14:02:57 +08:00 · 1038 次点击
    这是一个创建于 422 天前的主题,其中的信息可能已经有所发展或是发生改变。

    写在前面:搞网络的时候,很容易把非技术导致的问题归类成技术问题,导致投入大量精力却毫无进展。

    光猫是贝尔的 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 块钱,能节省好多时间和精力

    14 条回复    2023-02-01 14:29:10 +08:00
    godall
        1
    godall  
       2023-01-31 14:51:37 +08:00
    1. 设置 DMZ
    2. 改为桥接。
    kingsoT
        2
    kingsoT  
       2023-01-31 15:11:19 +08:00
    是不是默认开了无线隔离之类的选项?找一找关掉就好了,因为不至于不给修改这个配置吧。
    wanmyj
        3
    wanmyj  
    OP
       2023-01-31 15:41:30 +08:00
    @godall DMZ 的作用和我说的是不一样的
    @kingsoT 有这个可能,但是在 SDN 那个 app 上没找到设置这个的选项。端口映射倒是能用。
    linhu66
        4
    linhu66  
       2023-01-31 16:10:15 +08:00
    @wanmyj 我早就不用 SDN 网关 找电信免费换了非 SDN 光猫
    guazila
        5
    guazila  
       2023-01-31 16:14:47 +08:00
    和我那个运营商送的华为路由器一样,不能设置网关,不能设置 DHCP 下发的 DNS 。
    Xusually
        6
    Xusually  
       2023-01-31 16:16:16 +08:00
    "无线收到下一跳不是指向本设备的包的之后,也不转发,直接丢弃了。"
    op 这句话如果是真的话,你 wifi 访问其他内网设备包括 nas 也是不行的,你试试看。
    这一般都是开启了无线客户端隔离造成的。我的 ap 上这个功能叫“无线网络内部隔离”。
    wanmyj
        7
    wanmyj  
    OP
       2023-01-31 17:15:34 +08:00
    @guazila 不能设置网关其实我还能稍微理解点,大不了我手动在客户端设置,但直接丢包真是太过分了

    @Xusually 你可能把目标地址和路由下一跳搞混了。

    "无线收到下一跳不是指向本设备的包的之后,也不转发,直接丢弃了。" ----- 在以上成立的前提下,我用手机连无线,下一跳指向内部 server ,也可以访问到 nas 里的数据。因为同一个局域网中,直接使用的是目标地址,下一跳不会被使用。

    至于无线隔离,我还没用过这个功能,SDN 的 APP 上也没有这个设置。
    Xusually
        8
    Xusually  
       2023-01-31 17:35:33 +08:00
    @wanmyj #7 啊,没仔细看就回复了,那确实是有区别的,忽略上面的回答吧。
    这问题应该是回程数据校验不通过,SNAT 的问题,之前看到有人讨论过。
    刚看了一下好几种解决方法,server 上如果是 openwrt 的话,lan 开启 ip 动态伪装、或者主动做 SNAT 、或者关闭 lan 桥接并且 wan/lan 共用一个 eth 口。
    你搜索一下关键字旁路由 + SNAT
    blessme
        9
    blessme  
       2023-01-31 17:46:55 +08:00
    不能定义就关闭不让它下发,用局域网里面其他设备做 dhcp 服务器,网关交换机就能干的事。
    futuregaget
        10
    futuregaget  
       2023-01-31 20:15:04 +08:00 via iPhone
    并不是 这是一个陈年 bug 从无线进来的流量被视为 3 层转发 contrack 过旁路由不做 nat 相当于一个包进两次路由 第二次被抛弃
    小米 tplink 都有部份无线是这样的 不知道是哪家的无线驱动搞出来的
    futuregaget
        11
    futuregaget  
       2023-01-31 20:16:42 +08:00 via iPhone
    用了 snat 就别用旁路由了 别扭
    futuregaget
        12
    futuregaget  
       2023-01-31 20:20:04 +08:00 via iPhone
    https://www.v2ex.com/t/743231#reply9
    详细的解释 能确定是 iptable 扔的 但不知道为什么 wifi 进来的二层转发被 contrack 了
    wanmyj
        13
    wanmyj  
    OP
       2023-02-01 14:28:07 +08:00
    我理解的是 @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 非主路由**的数据包。
    wanmyj
        14
    wanmyj  
    OP
       2023-02-01 14:29:10 +08:00
    Sorry 写的有点乱,原来回复框是没有 MD 语法加持的 Hhhh
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1185 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 18:22 · PVG 02:22 · LAX 11:22 · JFK 14:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.