背景:
主路由为红米 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 。
1
Pillanangel 27 天前
不知道 OP 的网络需求为什么给 OpenWRT 放到二级路由上,可以设置成旁路网关模式,那不影响目前网络配置,而且可以同网段下设备互访。
如果 OpenWRT 作二级路由无法静态路由是没有好办法的,除非用其他打洞比如 Zerotier ,或者加个旁路网关做静态。 |
2
comlewin OP @Pillanangel 放二级主要是虚拟机太多了,想让真实的设备的都在 192.168.31 这个网段里面,虚拟机的放在子网 10.0.8 里面,这样路由器 app 里面看起来也清爽,不然米家设备,虚拟机那就可太多了
|
3
winterbells 27 天前
咱俩几乎是一样的需求😂
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 之类的命令不熟不想搞了,之前存过一份静态路由的设置,想不起来在哪儿了 |
4
hefish 27 天前
跑路由协议啊,用 unbound 。。。
|
5
comlewin OP @winterbells 我是 ax5400 ,不是电竞版的,固件版本号也不一样,不知道能不能搞,我在看看还有其他方案没,这小米真的服,高级设置里面 vpn 端口转发都有,就是没有路由表功能
|
6
winterbells 27 天前 via Android
@comlewin 不需要是电竞版,我就是普通的
|
7
TESTFLIGHT2021 27 天前
家用设备就别折腾了
|
8
ccoming077 27 天前
三个方法
1. 主路由 DHCP 下发网关改为 Openwrt ,也就是通常说的旁路由使用的方法 2. 需要访问 10 网段的设备上配置静态路由,下一跳指向 Openwrt 的地址(如果终端设备也不支持配置静态路由那么 GG ) 3. 主路由和 Openwrt 搭 VPN ,下发相关路由(不清楚支持的 VPN 种类,不一定可行) |
10
comlewin OP @ccoming077 方法 2 应该可以,到时尝试下
|
11
ranaanna 27 天前
@comlewin @ccoming077 按照 OP 的连线方式( openwrt 的 wan 在 192.168.31.0/24 ),方法 1 和 2 都还不行,还需要在 openwrt 上设置 SNAT ,或者 port forwarding ,而且即使这样也只能访问 10.0.8.0/24 特定终端的特定端口。感觉 OP 的设置有点自找麻烦。都在一个局域网内不完美吗?多几个终端而已。如果想要隔离用 VLAN 。终端多不是用所谓的“二级路由”的理由。第一个回复 @Pillanangel 即是正解
|
12
Pillanangel 27 天前
|
13
datoujiejie221 27 天前
我的小米路由器支持 ssh ,一开始配的静态路由,折腾了半天还把路由器端口暴露在公网了,最后放弃静态路由,直接端口映射+openvpn 了
|
14
ccoming077 27 天前 via iPhone
@ranaanna openwrt 在 192 的广播域内,为什么方法一和二不行?
我看不到任何需要做 SNAT 和端口转发的地方。 非要说需要补充什么的话,无非就是需要注意在 openwrt 上开放 192 到 10 的转发防火墙而已 |
15
ranaanna 27 天前
@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 所说的“转发防火墙”?
|
16
ranaanna 26 天前
@ccoming077 续#15 ,看下来一事不懂想问明白,对于 openwrt 的那个路由器:
ip forwarding 默认打开是无疑的,所以 wan 和 lan 接口是可以互相到达的, 路由器默认打开的 SNAT 规则是:所有到达 wan 接口的数据包都伪装成 wan 地址和端口出去 OP 需要打开的 SNAT 规则是:所有到达路由器(其实就是 lan 接口)的数据包都伪装成 lan 地址和端口出去 出于安全以及内网地址的考虑普通路由器都不会做后者。抑或 openwrt 默认就有,或者可以设置?这好像不是设置静态路由可以解决的 |
17
comlewin OP @ranaanna 数据到达网关后 192.168.31.1 (主路由),主路由会解析数据包头部,获取目的 IP 地址 10.0.8.x ,查找路由表,如果路由表找到了,就发给下一跳,大概就是这样子
|
18
ranaanna 26 天前
@comlewin 可能要请 OP 了解一下 routing 和 NAT 的区别。终端和主路由当然可以而且必须要设置 10.0.8.0/24 的下一跳,最后跳到 openwrt 的 wan 地址 192.168.31.5 。但如果是普通路由器,并不会反向地作 NAT 与其内网通信。openwrt 或许可以,因为是基于 linux ,因为如果是 linux ,增加一条 nftables nat 链 postrouting 的规则即可
|
19
ranaanna 26 天前
@comlewin 所以 @Pillanangel 是终极解决方案,openwrt 这个“旁路网关”让 10.0.8.0/24 可以连到 192.168.31.0/24 ,还需要再增加一个“旁路网关”让 192.168.31.0/24 可以连到 10.0.8.0/24 。在此基础上才可以有静态路由
|
20
comlewin OP @ranaanna openwrt 本身就是路由,它把 10.0.8.0/24nat 后到上一级,上一级发送数据到 openwrt ,他在发给下面 vm ,vm 设备的网关就是 openwrt 本身 ip 。
|
21
Ipsum 26 天前
主路由没法设置,那就在本机设置,效果一样的。
|
22
ranaanna 26 天前 via iPhone
@comlewin 好吧,说了这么多只是想告诉 OP“到上一级”默认是有的,但“上一级发给下面 vm”默认是没有的,需要额外的设置(或者简单粗暴地再增加一个反向的“二级路由”vm )。要验证是否这样也超级简单,不能在主路由上设置静态路由,在主机上设置不也就是 ip route add 10.0.8.0/24 via 192.168.31.5 的事
|
23
ccoming077 25 天前 via Android
@ranaanna 你需要复习下计网相关知识了…
正常情况下家用网络需要将 LAN IP 地址 NAT 成 Wan 地址,仅仅是因为通常情况下 LAN 地址为私网地址,而私网地址无法直接在公网环境中寻址而已。 如果 LAN 为公网且路由被正确配置,如 IPv6 ,则 NAT 是完全没有必要的东西。 这种情况也适用于两个使用私网地址的 LAN 互访。 |