双路由实现IP无感分流:告别传统旁路由模式
双路由实现IP无感分流:告别传统旁路由模式
在传统的主路由+旁路由的分流模式中,设备需要配置网关为旁路由,一来要给设备单独设置网关不方便;二来如果旁路由因为各种问题导致下线或者出现故障,会导致对应的设备无法上网,破坏了网络的稳定性。所以最好实现无感分流,这样哪怕旁路由物理损坏也不会导致任何的网络波动。
在前几期的文章中,我们讨论过如何通过双路由实现无感IP分流,这种方法不仅适用于软路由,硬路由也同样适用。然而,之前的介绍主要集中在思路层面,很多读者希望获得更具体的教程。基于读者反馈,本文将详细介绍如何使用TP-Link硬路由和单网口软路由(OpenWrt)实现无感分流。
一、配置硬路由网口
为了便于区分设备,我为软路由单独分配了一个网段和IP地址。首先,在主路由下单独使用一个物理GE1网口连接到软路由。这里需要将主路由GE1接口的网关地址设置为软路由的地址。
需要注意的是,GE1口不是作为WAN口,而是作为LAN2口存在,与LAN1口处于不同的网段。如果路由器不支持划分不同的LAN口,也可以将其作为WAN口存在。
配置好物理接口后,还需要添加相应的NAT规则,以确保GE1口能够访问互联网。具体配置步骤因路由器型号而异,有些路由器需要手动配置,有些则不需要。但无论如何,这个接口不需要配置DHCP等服务,只需配置GE1口信息即可。
二、配置软路由网口
我的软路由只有一个网口,因此需要将LAN口设置为静态地址。这里的IPv4地址就是软路由的IP地址,同时也是GE1口的网关。软路由的网关则应设置为主路由GE1口的地址。
同时,软路由的DHCP服务需要关闭,因为DHCP服务由主路由的LAN1口提供。此外,软路由的防火墙需要关闭SYN-flood防御,启用FullCone NAT,并开启LAN口的IP动态伪装。
为了防止出现致命问题,建议为软路由分配一个独立的网段。例如,我将常规LAN1网段设置为.31,而为软路由分配了.21网段。因此,还需要在主路由上配置相应的NAT规则,以确保设备可以从.31网段访问到.21网段的设备。如果网络接口数量有限或布线不便,也可以利用VLAN来隔离不同网段。
如果配置无误,此时软路由已经可以访问外网,且软路由的流量可以回到内网。
三、添加主路由IP池
我们需要在主路由器上配置IP池,通常需要配置三个IP池:一个是包含中国所有IP地址的池,一个是内网IP地址池,还有一个是软路由的IP地址池。
国内的IP地址池可以参考大佬整理的列表:ispip.clang.cn。我这里只添加了内网IP池和软路由的IP,因为路由器自带了国内IP池,不需要手动添加。
有读者可能会问,IPv6呢?IPv6的配置方式与IPv4类似,但由于目前IPv6并不普及,且大多数分流服务不支持IPv6,因此建议直接禁用IPv6解析。这部分设置可以在DNS配置中完成,往期文章中有详细说明。
四、配置主路由策略路由
这里我将展示硬路由的具体规则。策略路由通常有优先级,上面的规则优先级更高,因此这里采取了一些取巧的方法。
- 第一条规则是让从软路由发出的数据直接通过PPPoE传输;
- 第二条规则是让从内网发出前往国内的流量通过PPPoE传输;
- 第三条规则中,由于海外流量已经被第二条规则优先分流,剩下的规则是让从内网发出前往海外IP的数据通过GE1口传输到软路由。软路由处理完数据后会重新发送给主路由,此时会触发第一条规则,流量最终通过PPPoE传输。
还可以配置更精细的分流规则,例如TCP协议分流、UDP不分流,或者DNS服务器不走分流等。这些规则可以事半功倍。
五、DNS解析
由于是依靠主路由的IP规则进行分流,因此DNS解析的准确性至关重要。强烈建议在内网部署一个可靠的DNS服务,并使用DOH/DOT等加密DNS,同时禁止IPv6解析,确保解析的IP地址准确无误。
DNS解析应该分为不同域名走不同的DNS服务器,例如国内的域名通过国内114的DNS进行解析,其他域名通过谷歌的DNS进行解析。例如,我这里将国内域名解析交给114,其他域名交给内网另一个DNS服务器,该服务器通过DOH解析海外域名,确保国内外的域名解析都正常。
不过,DNS服务的部署不属于本文的内容,可以参考往期关于ADGHome的文章,ADGHome本质上就是一个DNS服务器,非常适合在内网部署。
六、访问
只要配置正确,就可以直接访问了,网关都不用改,还是主路由的网关。软路由后台也可以看到对应的流量。
即使旁路由出现故障,也不会影响整个网络的稳定性。因为可以设置当检测到接口不在线时就不启用相关规则。检测接口是否在线可以通过ping检测实现,如果ping不通说明旁路由出现故障,相关规则也就不会生效。这样分流规则不生效自然也不会有任何影响,网络依然可以正常运行。
七、不支持多LAN口的情况
有些软路由或硬路由只能存在一个LAN口,这种情况下需要将第一步修改为建立一个WAN口,第二步也需要修改成一个LAN口和一个WAN口,以便数据流入流出。但是这样在软路由内部会经历一次NAT,我个人不太建议这样。
八、特殊优化
建议将DNS单独配置策略路由,确保是直连而不是过分流,同时禁止海外QUIC流量。