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

主路由无法设置静态路由,如何让一级路由访问二级路由网段

  •  
  •   comlewin · 29 天前 · 1283 次点击

    背景:

    主路由为红米 AX5400 ,ip:192.168.31.1 ,设备网段:192.168.31.0/24

    双十一组了一套主机,目前安装了 pve ( pve 真的很赞),pve 管理 ip:192.168.31.10 ,创建了一个虚拟机 OpenWrt 用来做 DHCP ,OpenWrt 的 wan 口接入 vmbr0 ,ip 地址:192.168.31.5 ,lan 口网段:10.0.8.0/24 。

    [img]https://i.imgur.com/BqOZoKF.png[/img]

    设置 nat 后,目前 10.0.8.0/24 可以正常上网,可以到 192.168.31.0/24 。但是 192.168.31.0/24 无法访问 10.0.8.0/24 。

    主路由目前是红米 AX5400 ,没有静态路由的设置,也无法获取 ssh (已经找过相关资料和找过客服),请问各位大佬还有什么办法吗?

    补充:目前是路由器拨号,改成光猫拨号的话,红米 ax5400 可以获取并下发 ipv6 ,但是上网时会转成路由器的 Ipv6 。

    23 条回复    2024-11-30 03:00:13 +08:00
    Pillanangel
        1
    Pillanangel  
       29 天前
    不知道 OP 的网络需求为什么给 OpenWRT 放到二级路由上,可以设置成旁路网关模式,那不影响目前网络配置,而且可以同网段下设备互访。
    如果 OpenWRT 作二级路由无法静态路由是没有好办法的,除非用其他打洞比如 Zerotier ,或者加个旁路网关做静态。
    comlewin
        2
    comlewin  
    OP
       29 天前
    @Pillanangel 放二级主要是虚拟机太多了,想让真实的设备的都在 192.168.31 这个网段里面,虚拟机的放在子网 10.0.8 里面,这样路由器 app 里面看起来也清爽,不然米家设备,虚拟机那就可太多了
    winterbells
        3
    winterbells  
       29 天前
    咱俩几乎是一样的需求😂

    https://www.right.com.cn/forum/thread-8348455-1-1.html

    https://www.right.com.cn/forum/thread-8366186-1-1.html

    AX5400 可以开 ssh 的,照着做就行

    不过我对 iptables 之类的命令不熟不想搞了,之前存过一份静态路由的设置,想不起来在哪儿了
    hefish
        4
    hefish  
       29 天前
    跑路由协议啊,用 unbound 。。。
    comlewin
        5
    comlewin  
    OP
       29 天前
    @winterbells 我是 ax5400 ,不是电竞版的,固件版本号也不一样,不知道能不能搞,我在看看还有其他方案没,这小米真的服,高级设置里面 vpn 端口转发都有,就是没有路由表功能
    winterbells
        6
    winterbells  
       29 天前 via Android
    @comlewin 不需要是电竞版,我就是普通的
    TESTFLIGHT2021
        7
    TESTFLIGHT2021  
       29 天前
    家用设备就别折腾了
    ccoming077
        8
    ccoming077  
       29 天前
    三个方法
    1. 主路由 DHCP 下发网关改为 Openwrt ,也就是通常说的旁路由使用的方法
    2. 需要访问 10 网段的设备上配置静态路由,下一跳指向 Openwrt 的地址(如果终端设备也不支持配置静态路由那么 GG )
    3. 主路由和 Openwrt 搭 VPN ,下发相关路由(不清楚支持的 VPN 种类,不一定可行)
    comlewin
        9
    comlewin  
    OP
       29 天前
    @hefish github 上搜了下,没看懂/(ㄒoㄒ)/~~
    comlewin
        10
    comlewin  
    OP
       29 天前
    @ccoming077 方法 2 应该可以,到时尝试下
    ranaanna
        11
    ranaanna  
       29 天前
    @comlewin @ccoming077 按照 OP 的连线方式( openwrt 的 wan 在 192.168.31.0/24 ),方法 1 和 2 都还不行,还需要在 openwrt 上设置 SNAT ,或者 port forwarding ,而且即使这样也只能访问 10.0.8.0/24 特定终端的特定端口。感觉 OP 的设置有点自找麻烦。都在一个局域网内不完美吗?多几个终端而已。如果想要隔离用 VLAN 。终端多不是用所谓的“二级路由”的理由。第一个回复 @Pillanangel 即是正解
    Pillanangel
        12
    Pillanangel  
       29 天前
    @comlewin 如果 OP 是米家设备用户,有一些强迫症想要帮助米家一统天下,我是能理解这种心情。因为米家的路由目前没有一个原厂固件能自定义 Vlan 多 WIFI SSID 的配置,因为这个需求实在不是家用的普遍刚需,即便是硬件本身有这个基础能力。不过就目前的描述需求,那几乎就是只能换设备的方向了,上级访问下级除了静态木有太好办法。
    @ranaanna 感谢支持。
    datoujiejie221
        13
    datoujiejie221  
       29 天前
    我的小米路由器支持 ssh ,一开始配的静态路由,折腾了半天还把路由器端口暴露在公网了,最后放弃静态路由,直接端口映射+openvpn 了
    ccoming077
        14
    ccoming077  
       29 天前 via iPhone
    @ranaanna openwrt 在 192 的广播域内,为什么方法一和二不行?
    我看不到任何需要做 SNAT 和端口转发的地方。

    非要说需要补充什么的话,无非就是需要注意在 openwrt 上开放 192 到 10 的转发防火墙而已
    ranaanna
        15
    ranaanna  
       29 天前
    @ccoming077 对于 openwrt 你的 192 是 wan ,10 是 lan 。openwrt 默认会通过 SNAT 或 masquerade 将 10 地址转换为 192 地址,这就是为什么 10 网段能访问 192 以及 internet 的原因。如果想要 192 网段能访问 10 网段的特定终端的特定端口,需要设置 DNAT 或 port forwarding 并且用路由器的 wan 地址来访问(抱歉之前写错了应是 DNAT ),这是普通路由器从 wan 访问 lan 的办法。或者在 openwrt 设置通过 SNAT 或 masquerade 同时也将 192 地址转换为 10 地址(这不是普通路由器能办到的,openwrt 或许能?),才能互通。或许这就是 OP 所说的“转发防火墙”?
    ranaanna
        16
    ranaanna  
       29 天前
    @ccoming077 续#15 ,看下来一事不懂想问明白,对于 openwrt 的那个路由器:

    ip forwarding 默认打开是无疑的,所以 wan 和 lan 接口是可以互相到达的,

    路由器默认打开的 SNAT 规则是:所有到达 wan 接口的数据包都伪装成 wan 地址和端口出去

    OP 需要打开的 SNAT 规则是:所有到达路由器(其实就是 lan 接口)的数据包都伪装成 lan 地址和端口出去

    出于安全以及内网地址的考虑普通路由器都不会做后者。抑或 openwrt 默认就有,或者可以设置?这好像不是设置静态路由可以解决的
    comlewin
        17
    comlewin  
    OP
       28 天前
    @ranaanna 数据到达网关后 192.168.31.1 (主路由),主路由会解析数据包头部,获取目的 IP 地址 10.0.8.x ,查找路由表,如果路由表找到了,就发给下一跳,大概就是这样子
    ranaanna
        18
    ranaanna  
       28 天前
    @comlewin 可能要请 OP 了解一下 routing 和 NAT 的区别。终端和主路由当然可以而且必须要设置 10.0.8.0/24 的下一跳,最后跳到 openwrt 的 wan 地址 192.168.31.5 。但如果是普通路由器,并不会反向地作 NAT 与其内网通信。openwrt 或许可以,因为是基于 linux ,因为如果是 linux ,增加一条 nftables nat 链 postrouting 的规则即可
    ranaanna
        19
    ranaanna  
       28 天前
    @comlewin 所以 @Pillanangel 是终极解决方案,openwrt 这个“旁路网关”让 10.0.8.0/24 可以连到 192.168.31.0/24 ,还需要再增加一个“旁路网关”让 192.168.31.0/24 可以连到 10.0.8.0/24 。在此基础上才可以有静态路由
    comlewin
        20
    comlewin  
    OP
       28 天前
    @ranaanna openwrt 本身就是路由,它把 10.0.8.0/24nat 后到上一级,上一级发送数据到 openwrt ,他在发给下面 vm ,vm 设备的网关就是 openwrt 本身 ip 。
    Ipsum
        21
    Ipsum  
       28 天前
    主路由没法设置,那就在本机设置,效果一样的。
    ranaanna
        22
    ranaanna  
       28 天前 via iPhone
    @comlewin 好吧,说了这么多只是想告诉 OP“到上一级”默认是有的,但“上一级发给下面 vm”默认是没有的,需要额外的设置(或者简单粗暴地再增加一个反向的“二级路由”vm )。要验证是否这样也超级简单,不能在主路由上设置静态路由,在主机上设置不也就是 ip route add 10.0.8.0/24 via 192.168.31.5 的事
    ccoming077
        23
    ccoming077  
       28 天前 via Android
    @ranaanna 你需要复习下计网相关知识了…

    正常情况下家用网络需要将 LAN IP 地址 NAT 成 Wan 地址,仅仅是因为通常情况下 LAN 地址为私网地址,而私网地址无法直接在公网环境中寻址而已。
    如果 LAN 为公网且路由被正确配置,如 IPv6 ,则 NAT 是完全没有必要的东西。

    这种情况也适用于两个使用私网地址的 LAN 互访。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   968 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 22:38 · PVG 06:38 · LAX 14:38 · JFK 17:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.