主路由性能难以支持clash分流等操作,clash分流时依赖CPU性能而不是硬件转发,故而存在性能瓶颈。实验证实,高性能软路由往往能支持100Mbps甚至更高速率的外网转发,这一点是普通路由器难以做到的。而对于普通的NAT转发,路由器的硬件加速较软路由有着“四两拨千斤”的效果。
器材:x86机器安装Docker,单网口也可实现软路由。
注意事项
收获
软路由确实有效,但是仍旧需要良好的订阅作为支撑
DHCP默认网关与路由器中路由表的默认网关不同,前者为下发给设备的默认网关,后者不是。对于本校(SNNU),若贸然更改默认网关(后者),会导致路由器掉线,原因是更改默认网关后路由器会重连,与外网无关。
未解决的问题:
WLAN/Ethernet链路聚合失效,原因不明
这里说的链路聚合,严格意义上说是负载均衡。手动指定WLAN与Ethernet网卡的跃点,可以实现两个网络连接叠加的效果。
主路由的VPN连接失效,具体故障应该是DNS解析失败,IP访问外网正常(但无法接入Google)
已解决,DHCP配置DNS时不必设为旁路由IP,无法接入Google是因为路由器自己充当了默认网关路由器下发给客户端的默认网关是服务端的IP地址,这是PPTP的特性决定的,后面的想法是对于服务端IP设定特别的网关
原因分析:可能是下发的默认网关使二者失效,暂时的解决方法是在有需要时更换DHCP默认网关。
下一步,在软路由上配置双网卡,真正将软路由作为路由器使用。
更新
软路由在稳定性上存在问题。若软路由死机,网络瞬间崩溃。
为了解决此问题,首先要做的改变是将DHCP服务器下发的默认网关删除,不论软路由是否出现问题,至少应保证网络可用。
解决此问题有两个思路,
解决策略:对路由器的CPU实现超频,由880MHz提升至1100MHz,使用SSR+进行代理工作。
弊端:超频依赖CPU体质与主板供电情况,已经有一个路由器因超频损坏了USB3.0接口。另外,超频带来的性能提升不及软路由,连接速度在100Mbps左右,因此应考虑如何解决软路由的稳定性问题。
2024.3.17更新
软路由的稳定性问题已有突破口。
据查,软路由的内存有问题,主要表现在随着使用时间增加,内存缓存增多,进行一些安装软件的操作时会出现段错误。为解决此问题,
尽量使用最少的资源实现功能。
遇到的问题:
开启内核转发与tun设备后只能用socks代理连接,无法转发数据包。
iptables -F
命令清除后成功转发数据包。说明iptables阻碍转发。service iptables save
,对ubuntu来说明显是错的,没有这个服务。有的说使用iptables-save
,明显也不对,运行了依然无法保存。有的说用iptables-persistant
,依然如上。/etc/iptables.rules
加载规则。目前使用iptables -F
对其无效。观察/etc/iptables.rules
的内容,可以看出forward链中有一条REJECT操作,删除后,重启即可生效。不建议全部删除iptables中的规则,否则会有意想不到的后果。后续需要将REJECT添加回iptables表,并在forward链中添加特定网络的转发规则。clash开机启动
可以使用以下方法:Sitoi/SystemdClash: Clash 以 systemd 服务的方式开机自启 (github.com)
需要提醒的是,不同用户运行应指定好配置文件,可用-f参数指定,建议最好将配置文件放入~/.config/clash
目录下。例如,此服务以root权限运行,配置文件应放入/root/.config/clash
中。
使用效果:
代理可达满速
工作稳定,内存占用<1GB,平时CPU占用在1%以下,系统负载为0.09(测速时),0.03(有连接时),0.00(无连接时),响应速度快。