请问,主路由+旁路由有什么优势或特点?
我们讨论问题,应当从实际出发,不是从定义出发。 ——《毛泽东选集》第2版第3卷第853页
我认为个人在大部分网络环境下,旁路由模式没有任何优势,反而全是劣势。
先放个暴论:大部分普通家庭用户使用软路由的第一需求都是科**网。
比如我。
其次就是去广告了。
虽然现在各种品牌的硬路由产品百花齐放,功能越来越多,但这两个需求几乎不可能在国内售卖的硬路由上实现,原因嘛大家都懂。
那大家就只能在软路由上实现了。
以前我的核心需求是:
- 对多条WAN进行网络分流。
- 科**网。
- 内网穿透。
这里暂且不论内网穿透,因为这个在完全合规的情况下有太多的实现方式。
那么最简单、成本最低的解决方案就是基于iKuai+OpenWRT的旁路由方案,iKuai负责流控分流,OpenWRT负责科学上网,配置好后只要不折腾,稳定跑了好几年。
目前主流的旁路由方案都是所谓的“网关互指”,即通过DHCP等手段,让旁路由B充当局域网设备的网关,而旁路由B以主路由A为网关,即局域网设备上网时流量是先流经旁路由B后,再流经主路由A,最后再通过光猫(假设有)。 可以看出“网关互指”模式,流量要多经过一个旁路由B,且由于旁路由B插件需要经过规则匹配的原因,会让网络变慢。
就目前大部分的家庭来说,都是只有一条宽带的,那么iKuai主打的多播流控分流就没啥用武之地了,就一条WAN分个啥的流?

那单OpenWRT方案行不行?
很多人都会说不行,什么OpenWRT不稳定啦,折腾挂了会影响全家网络呀,等等。
那我建议你看看这篇:
关于“旁路由”的一些吐槽单OpenWRT主路由完全可行,前提是自己不要瞎折腾,现在很多商业硬路由的底子都是基于OpenWRT,根本不存在不稳定会随便挂掉的问题。
但是单OpenWRT进行科**网,会存在另一个问题——所有连接的设备流量都会被插件代理,而在家庭中往往又只有少数几个设备需要科学上网。
那有没有别的方案呢?
有的,单硬主路由就可以实现了。

但看拓扑图蓝色部分,之前我家的网络拓扑就是典型的主路由+旁路由方案,需要科**网的设备除NAS偶尔需要拉取docker镜像外,就是我的台式电脑需要随时能够访问一些外面的技术论坛了。
在网关指向旁路由的模式下,所有的流量(如微信、QQ、B站、抖音、游戏、BT下载等)不管要不要去外面,都会经过旁路由,再由旁路由中的科**网插件进行规则匹配分流,有形中又给自己加了一层NAT。进行端口映射时只在主路由配置是没用的,而是要先在旁路由配置好指向终端的端口映射,再到主路由配置指向旁路由的端口映射。
那回归到单硬主路由的方式又如何实现呢?
首先0帧起手直接丢掉iKuai和OpenWRT,所有设备正常接入传统硬路由。

然后在局域网中找台24小时开机的低功耗设备(或者在你的All in boom),通过Docker部署科**网应用(如mihomo),开启HTTP或者SOCKS服务,Windows、Mac OS无需安装第三方软件,直接在设置里配置代理服务器地址,填写SOCKS服务地址即可实现科**网以及去广告。
不过我更推荐这样使用:
- 浏览器访问网页:安装ZeroOmega等插件,配置你的HTTP服务地址和端口,将
分流前置,只有外面的流量才发送给Docker设备的科**网节点,而其他流量走直连直接从主路由出去了。 - Docker镜像拉取:修改Systemd服务配置实现,用于
docker pull拉取镜像。步骤为:创建/etc/systemd/system/docker.service.d/http-proxy.conf文件,添加环境变量HTTP_PROXY、HTTPS_PROXY和NO_PROXY。 - Docker容器内部:环境变量配置HTTP_PROXY=http://your-proxy-address:port/,精细化管理每个容器是否需要代理。
- 其他客户端软件:如TG、Steam客户端自带Proxy设置,填写SOCKS服务地址和端口即可。
以上方案完全不会影响局域网中其他设备正常上网。
可以帮看看一下我家网络拓扑吗?路由器只是个网络接入设备,一旦配置好后就忘掉它,让它默默在角落为你提供稳定的网络连接即可,老去折腾路由器干嘛?除非你对路由系统或者计算机网络很感兴趣的相关从业人员,否则Ubuntu、Debian、飞牛、Docker、Python等等哪个不比软路由好玩?
