软路由折腾心得

Posted on Dec 12, 2023
软路由折腾史 生命不息折腾不止

为啥要软路由

硬路由:专用硬件路由器或者防火墙如ASUS, NETGEAR等厂商生产的wifi路由器
软路由:采用通用计算机作为硬件通常是x86 PC, raspberry pi发布后 arm架构通用计算机也逐渐多了起来, arm的低功耗在软路由界也是占有一席之地

由于中国的网络环境软路由有特殊的意义,主要用于科学上网,解决DNS污染去广告等。硬路由能不能做同样的事情呢?结论是可以但是必须的刷机,比如Netgear刷OpenWRT, ASUS刷Merlin,然后也能实现安装各种第三方插件,这种刷机过程得到的结果就和使用软路由的逻辑类似,但硬件路由的soc以及ROM的规格和性能都比比普通的x86软路由差太多,这直接影响到网络使用体验。
硬路由是不可或缺的硬路由与软路由也不是对立的,硬路由和软路由各自完成擅长做的工作,软路由提供主要的网络服务硬路由提供wifi,硬路由+软路由才是最经济的组网方式是被大部分人采用。

此外还有很多人使用软路由完成各种需求如自动下载存储服务等,软路由的存在几乎可以满足各种人奇怪的需求。

硬件

一般要作为路由器那么至少得有两个网口(这里不讨论单臂路由),然后功耗要低毕竟7x24小时开机低功耗对硬件得压力也小, 对于cpu有一点小小得要求如aes-ni指令支持有利于硬解ase,体积最好小一点,毕竟是个路由器不要太占地方. 于是理想的硬件大致如下
Intel: Intel core 2代之后的移动cpu以及低功耗台式cpu,它们基本都支持aes-ni硬解, 这10来年间有大量的过时淘汰的产品可选,还有各类mini低功耗主机如nuc, 国产mini主机, 专门的软路由产品等, 选择众多。
AMD: AMD的选择并不多,原因是直到近几年才初见能耗比比较高的,移动产品,过去的几十年内AMD在移动PC市场没有什么作为,可能要到ryzen3 之后才有部分低功耗mini主机上市,不过整体上和Intel并没有太大区别,低功耗老旧设备Intel仍然拥有无法撼动的优势。
ARM: 生态没有x86丰富性能不错的价格比同级别的x86设备更贵,比如大部分ARM设备BSD系列的系统支持非常差或者基本不支持, 优点是这些设备大多集成了多网口形态上接近硬件路由但是生态上远远好于硬路由, 同时还具备低功耗的优势。
Raspberry Pi: 这么贵作为软路由是不是优点浪费,此外它只有单网口并不适合作为软路由, 如果有什么优点的花树莓派的开源生态独一档甚至比起x86有过之无不及。
xxx Pi: 山寨pi作为低功耗的arm开发板低廉的价格或许是为数不多的优势,除此之外几乎全是劣势如生态差开源的系统似乎只有armbian/openwrt可选而且做不到完美支持比如soc的图形单元驱动是没有的,也没有什么网络上的扩展性。

但如果如果不想花钱用淘汰得各类电脑达不到通常我们认为的软路由要求装上一个路由系统其实也可以算是软路由, 没有双网口插一个USB网卡也可以或者单纯单臂路由也能用, 功耗高点就高点体积大点也无妨反正能满足使用需求就行。

软路由操作系统

哪些系统适合作为软路由?
先后使用过 VyOS, OpenWRT, OpenBSD, Debian, OPNsense, FreeBSD 也折腾性质的把玩过 pfSense, BSDRP, IPFire, 爱快等 他们各有各的优点
对于普通家用比较推荐 OpenWRT, OPNsense, pfSense 理由是这些属于成品开箱即可用
对于折腾党更推荐 Debian(别的Linux发行版也一样), FreeBSD, OpenBSD 这类通用操作系统个人更喜欢用FreeBSD

Vyatta/VyOS

最早接触的软路由,并非家用就是用来转虚拟网络做网络实验,这是一个正经的商用企业级路由系统功能齐全rip/ospf/bgp之类的路由协议开箱即用。后来尝试用来家用但是如果要讲科学那得自己找软件或者自行编译或配置Debian仓库,但这其实都有点违背vyos的初衷,只能说vyos不适合我们通常想象的家用多功能软路由。

OpenWRT

开始入坑家用软路由的选择,支持的硬件及其丰富,大部分主流家用路由器都能轻松刷一个,基本上开箱即用,比起家用路由器拥有不错的扩展性, 可以从仓库安装软件如果没有也可以自己编译一些软件,它提供了luci用户界面,也可以通过 uci和firewall配置,不过缺点是OpenWRT仓库软件不全 firewall 也不好用,使用起来是并没有比Linux简化决定弃坑换通用Linux;

Debian

经过OpenWRT折腾之后大概知道一台软路由需要哪些软件来,万能的Debian仓库几乎任何软件伸手就来,防火墙用firewall和iptables都可以,软件生态的丰富可以任性的挑挑拣拣,整体感觉没啥毛病,就是刚开始配置麻烦了点,但是可以脚本化后面再配置就非常方便。

OpenBSD

接触到openbsd纯属偶然,该操作系统画风极为geek,把软路由系统换成了OpenBSD单纯就是觉得酷, OpenBSD 有一套自己的配置逻辑和工具,及其简单很容易上手花很少时间轻易打造可用的软路由,但问题是OpenBSD发行速度快,版本差异大更新容易出稳定性问题不更新担心安全问题,半年一个版本stable版本官方维护一年这跟Fedora一个路数根本不适合用来当长期的服务器使用,之前更新到6.8挂了,OpenBSD用的ufs文件系统用linux读出那些文件都费率点功夫~ 不知道下一次更新是否还会挂 ,不敢再用用来当主路由了。

OPNsense

这应该是一个相当完美的软路由系统,开箱即用很容易上手易用程度个人感觉是低于OpenWRT,缺点是只支持x68 无线驱动也不太行,功能比OpenWRT强如果不考虑wifi应该可以很好替代OpenWRT,对于我个人而言比用web配置防火墙就很难受远不如直接写pf.conf。

FreeBSD

跟Debian 类似都是通用操作系统,优点也几乎相同:官方支持周期长软件齐全对于命令党来说操作简单统一,安全和稳定性也和Debian 类似,理论上软件性能会略逊于Debian 而网络性能相反但实际也未必至少我测试结果基本上看不出什么却别都在误差范围内。和Debian 不一样的是防火墙用pf(可选ipf/ipfw) 比iptables好用,这算是我个人最理想的软路由系统了,我目前在用的软路由系统基本都是FreeBSD了。

性能问题

测试了其中几个系统(vyos/openwrt/debian/openbsd/opnsense/freebsd) 这些类UNIX的操作系统性能都还不错, 或许易维护、安全和稳定或许更加重要。

不太能接受一个路由器上运行着kvm/podman/docker之类的虚拟化应用,路由系统的核心是安全稳定易维护,然后才是功能上的满足,如果前者不满足那么它就不应该当作软路由而后者其实所有的软路由系统都能满足。

结论

最终结论最好的软路由系统: Debian(Linux) FreeBSD(BSD) , 很多人不会同意毕竟从通用系统改造成软路由多少有点麻烦, 不过这确实是我的我的结论, 论"折腾"他们会比OpenWRT要简单很多。 那么最好的硬件呢应该是淘汰掉的二手品牌小主机, x86低功耗小主机, 其次树莓派4也是不错的选择。

软件

用过几组方案

OS DNS/DHCP FIREWALL PROXY VPN ADGUARD TRAVERSAL SHARE WEB/MONITOR OTHER
OpenWRT dnsmasq luci-firewall cl*sh openvpn Adguardhome frpc luci
Debian dnsmasq iptables v2**y-core wg/tailscale/openvpn antiadfordnsmasq frpc nfs/samba nginx/caddy+munin pxe
OpenBSD unbound+dhcpd pf v2**y-core openvpn frpc nfs/samba
OPNsense unbound+dhcpd pf v2**y-core wg/tailscale/openvpn Adguardhome frpc/zerotier nfs/samba monit pxe
FreeBSD dnsmasq pf v2**y-core wg/tailscale/openvpn antiadfordnsmasq frpc nfs/samba vnstat shellinaboxd pxe