![通过同一子网中的其他 IP 路由互联网流量](https://linux22.com/image/679451/%E9%80%9A%E8%BF%87%E5%90%8C%E4%B8%80%E5%AD%90%E7%BD%91%E4%B8%AD%E7%9A%84%E5%85%B6%E4%BB%96%20IP%20%E8%B7%AF%E7%94%B1%E4%BA%92%E8%81%94%E7%BD%91%E6%B5%81%E9%87%8F.png)
我想在我的路由器中创建一个伪后备 WAN 连接,但它本身并不支持此功能。
我有一个 192.168.93.0/24 的网络,我的“主”路由器和默认网关在 192.168.93.1,这也是 DHCP 服务器,它将自己的 IP 作为默认网关分发给所有客户端。
然后我有第二个路由器,其 IP 地址为 192.168.93.2,具有 4G 连接,该路由器不执行 DHCP。
现在,我一直在研究我的第一个路由器,它连接到 WiFi 热点以进行 WAN 连接。每当此连接成功时,它都会将路由添加到其路由表(目标 0.0.0.0/0 - 即整个互联网),该路由指向 WiFi 热点网关的任何 IP,度量为 0。
所以我想我在其路由表中添加一个手动条目,其目标网络相同,为 0.0.0.0/0,但网关为 192.168.93.2(我的第二个 4G 路由器)。
这似乎在某种程度上是有效的,因为当我的第一个路由器没有连接 Wifi 热点时,我可以完美地 ping 到互联网上的任何地方。但是,当我尝试使用 chrome 等浏览器浏览某个地方时,所有请求都会超时。
当我在客户端启动 wireshark 跟踪时,我看到很多令人担忧的日志,例如:
- TCP 重传
- 虚假重传
- TCP 重复确认
现在,当我在客户端上删除到 192.168.93.1(第一个路由器)的 0.0.0.0/0 路由时,将其重新配置为直接转到 192.168.93.2(第二个路由器),一切正常。
现在我在考虑这个问题,我想知道这是否真的可行,但为什么 ping 却能正常工作呢?无论如何,如果有人能确切解释为什么这不起作用,那就太好了。
答案1
嗯...取决于当默认路由(0.0.0.0/0)指向内部网络(您的 4G 路由器)时,您的第一个路由器实际上在做什么。
将 ping 的 wireshark 跟踪(icmp-echo-request/response)与另一个 TCP-connect 跟踪(浏览时建立)进行比较。
您是否看到任何 TCP(syn-ack)从服务器返回到您的客户端。
进一步查看 Wireshark 中的 MAC 地址,了解传入数据包是从第一个还是第二个路由器传到您的客户端。