旁路由通用部署指南
放在主路由上的透明代理固然很好,但是对自己的技术不放心,担心影响家人的网络?又或者是自己的网络架构不允许/不喜欢?别担心!这些通通可以使用旁路由玩转透明代理。
“旁路由”并不是一个专业的词汇,它实际上是一个网关服务器,不过既然已是约定俗成,我们这里就用“旁路由”称呼。
旁路由的优点很明显,它对设备要求比较低,不需要有无线网卡,一个网口就够,配置简单、灵活,故障时不会影响全部内网设备,不需要对网络结构大改。
设备选择
能运行linux的设备基本都可以是旁路由,安卓手机、虚拟机、小主机等等,有一个网口就足够了。比较常见的旁路由设备是刷过机的电视盒子、arm开发板、淘汰的旧电脑。没有网口还可以考虑用usb网卡。
我建议是优先找个手边已有的设备,如果没有再考虑购买。旁路由对性能要求不高,不过一般要一直开机,用旧电脑可能会有些得不偿失,因为体积大、噪音大以及有点费电,如果可以接受的话也不是不行。
操作系统debian、armbian、Ubuntu、OpenWRT等等只要能实现透明代理科学上网的都可以。
配置方法
因为是通用方法,所以不会提到具体的操作方式。建议配合ai以及其他教程使用。
配置静态IP
配置静态IP没什么好说的,一般需要配置IP、网关、dns、子网掩码,这一部分网络上的资料很多,问问AI也可以。旁路由的网关应该填主路由的ip,确保旁路由本身可以上网,dns建议也填主路由的ip。
用Openwrt的在lan口配置即可,协议选静态地址,dns也要添加到lan口中,还有就是不要忘记关闭DHCP服务器!IPv4 广播地址这一项可以留空。旁边的wan口就没有用了,删了还是留着都不影响用。
填写ip时可能需要用CIDR格式,例如:192.168.1.1/24,这里的/24等同于子网掩码255.255.255.0
安装代理客户端
代理客户端的配置方法与主路由相同,能实现透明代理均可。
配置流程基本为添加订阅,启动透明代理,选择节点
Openwrt客户端选择比较丰富,OpenClash、Nikki、Momo、Homeproxy、passwall、ssrp+等等都可以
Armbian、Debian、Ubuntu等等各种Linux发行版上的选择比较少,可以选择Shellcrash、daed、V2rayA。当然了,自己裸核运行也是可以的,手搓iptables/nftables透明代理的相关教程和命令网上都能找到。
使用方法?
需要代理的设备手动配置网关和dns到旁路由,未修改的则正常使用主路由上网。这样旁路由出现故障也只会影响修改过网关和dns的设备,必要时可以切换回自动配置ip。
高级用法
大部分设备需要代理
如果局域网里大部分设备都需要代理那么一台一台设备的配置网关和dns就显得有些繁琐了,这里可以翻转一下用法:让不需要代理的设备手动配置dns和网关到主路由。
这个也有不同的实现方式。
直接关闭主路由的DHCP功能,开启旁路由的DHCP,让局域网的设备默认被分配到旁路由。(旁路由如果不是Openwrt可能需要额外安装软件实现dhcp服务器的功能。)
如果主路由支持的话可以考虑修改DHCP设置,让主路由DHCP默认下发的网关为旁路由的IP。
主路由功能强大还可以进一步修改DHCP设置,让DHCP服务器对不同的客户端下发不同的配置。这样可以在主路由上控制设备是否使用代理,无需在设备上手动配置ip。
主路由流量转发到旁路由
有些人的主路由解锁了SSH,但由于是硬路由闪存或内存空间不足以运行代理客户端,无法使用主路由透明代理。此时可以考虑在主路由上运行iptables/nftables透明代理脚本将需要代理的流量发送到旁路由的Tproxy代理端口,体验与主路由透明代理基本相同,不需要手动修改设备的网关和dns。
如果主路由的闪存或内存空间充足还可以安装daed,通过配置socks5端口到旁路由的代理客户端,实现享受ebpf高性能直连的同时还能有丰富的代理协议支持也不会与IPv6冲突,更重要的是这个方法不需要手搓透明代理脚本。(我是不是应该出一篇这么做的教程?)
在实践主路由转发到旁路由时记得在主路由的流量转发规则上绕过旁路由的ip,防止酿成流量回环惨案。
坑
坑1 - 无法访问国内网络
这个问题实际上与主路由的流量处理逻辑有一定的关系,在旁路由上绕过中国大陆或者是使用了ebpf的直连才会出现。旁路由上开启对lan口的NAT功能可解,Openwrt则直接开启lan口的IP动态伪装就行,也可以试试在防火墙页面取消勾选“丢弃无效数据包”。
导致这个问题的可能原因可以看这篇文章:关于旁路由设置后,主路由WIFI无法上网的问题「建议收藏」 - 腾讯云开发者社区
坑2 - 玩旁路由开IPv6会害了你
IPv6的配置与IPv4是分开的,它有自己的网关和dns,在有IPv6的环境下操作系统会优先使用v6的dns与网关等连接网站,这会直接绕过手动配置的IPv4网关与dns。如果想要让旁路由正常运作要么关闭IPv6要么手动配置v6的网关和dns,但是目前很多设备对IPv6的支持都不完整,很可能无法手动配置。
如果一定要IPv6建议考虑一下直接主路由科学,或者是主路由转发到旁路由的方案。


