实操:双路由实现ip无感分流,丢掉你的旁网关
在传统的主路由+旁路由的分流模式中,设备需要配置网关为旁路由,一来要给设备单独设置网关不方便;二来如果旁路由因为各种问题导致下线或者出现故障,会导致对应的设备无法上网,破坏了网络的稳定性。所以最好实现无感分流,这样哪怕旁路由物理损坏也不会导致任何的网络波动。
前几期有写过一期《双路由实现无感ip分流,硬路由也适用,再见旁路由》,但是那一篇只说了思路,很多童鞋希望有个具体教程,后面也统计了下都用的啥路由器,大部分都是硬路由,本篇用的也是tplink的硬路由+单网口软路由(op),硬路由为主路由,软路由为旁路由(这里旁路由不是旁网关,没有任何网关指向它,为了好称呼本文还是叫旁路由)。至于为什么要用硬路由当主路由,很显然,硬路由效率高,不是软路由能比的。
特别说明:如果主路由是软路由也一样,相关步骤是类似的,操作上和硬路由没太多区别。用软路由的童鞋照葫芦画瓢基本上都可以用,我具体配置策略是基于我自己的需求,可以照葫芦画瓢,但不要全抄。
相关原理以及优点自行查看往期文章,这里不再赘述。硬路由需要用到策略路由,如果路由器不支持建议更换个路由器或者用软路由当主路由,不过tp支持策略路由的路由器也才几百,小黄鱼更便宜。
一、配置硬路由网口
这里为了好区别设备,我给软路由单独分配了一个网段和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地址池可以看大佬整理的:
https://ispip.clang.cn/
我这里只添加了内网ip池和软路由的ip,至于国内的ip池路由器自带了,不用我手动添加。如果自己路由器没自带这些,就需要手动导入添加。
有童鞋会问ipv6呢,ipv6也是一样的导入,虽然我图中是只有ipv4地址,那是因为我不用ipv6(被回收了而已)。而且鉴于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服务器,另一个dns通过doh解析海外域名,确保国内外的域名解析都正常。
不过部署dns服务不属于本篇的内容,可以查看往期adghome那几篇,adghome本质上就是dns服务器,很适合在内网部署。
六、访问
只要配置正确,就可以直接访问了,网关都不用改,还是主路由的网关。软路由后台也可以看到对应的流量。
哪怕旁路由坏了炸了也不会影响整个稳定性,因为可以设置如果接口不在线就不启用规则,至于这么检测接口不在线,ping检测不就行了,ping不通说明旁路由寄了,规则也就不生效。这样分流规则不生效自然也不会有任何影响,一切都无事发生。
七、不支持多lan口的情况
有些软路由或者硬路由,本身只能存在一个lan口,此时需要把第一步修改成建立一个wan口,第二步也需要修改成一个lan口一个wan口,方便数据流入流出。但是这样在软路由内部要经历一次nat,我个人不太建议这样。(我也不知道是哪些天才想到的限制)
八、特殊优化
建议把dns单独配置策略路由,确保是直连而不是过分流,且禁止海外quic流量。