软路由指南
Highlights
- 什么是软路由?🛠️
- 软路由相较硬路由的优势⚙️
- 常见软路由系统介绍📦
- 刷入OpenWRT固件的方法📲
- 配置OpenWRT的步骤🖥️
- 科学上网工具及设置🕵️
- 网络问题及解决方案🔧
OpenWrt/ImmortalWrt
固件选择器:https://firmware-selector.immortalwrt.org
自定义构建参考Package:
https://downloads.immortalwrt.org/releases/23.05.1/packages/x86_64/luci/Packages
OpenWrt支持的设备:https://openwrt.org/toh/start
英特尔CPU性能对比:https://www.intel.cn/content/www/cn/zh/search.html
1. 什么是软路由?
- 软路由是指可以安装软件的路由器,它不一定是传统意义上的路由器,可能是一台迷你PC、工控小主机、开发板,甚至是闲置的笔记本电脑。
- 与硬路由(功能固化的家用路由器)不同,软路由可以安装各种路由系统(如OpenWrt、PFsense、RouterOS、iKuai、梅林等),并支持丰富的插件扩展功能。
2. 为什么需要软路由?
- 科学上网:软路由可以在路由器层面运行代理工具(如v2ray、Clash等),使所有连接到路由器的设备都能自动科学上网,无需在每个设备上单独配置代理。
- 解决设备限制:某些设备(如电视盒子、VR头显)无法直接运行代理工具,软路由可以绕过这些限制,让这些设备也能访问被墙的网站。
- 功能扩展:软路由支持安装各种插件,提供比硬路由更强大的功能,如广告过滤、流量监控、虚拟化等。
3. 软路由的应用场景
- 家庭网络:通过软路由实现全家设备的科学上网,解决电视盒子、VR设备等无法直接使用代理工具的问题。
- 跨境电商:对于需要管理多台设备的用户(如群控),软路由可以简化科学上网的配置。
- 网络优化:软路由支持多种网络优化功能,如负载均衡、流量控制等。
4. 软路由的系统安装
- 固件获取:可以通过官方OpenWRT、immortalWRT等获取固件,immortalWRT提供了丰富的插件支持。
- 刷机工具:使用Rufus(Windows)或 balenaEtcher(Mac/Linux)将固件写入SD卡或U盘。
- 系统启动:将写入固件的SD卡或U盘插入设备,启动后即可进入OpenWRT系统。

下面开始实际操作一下:
我这里选择OpenWrt
,它是个开源免费的路由系统,提供了完整的路由功能,并且可以安装各式各样的插件,最主要的是安装代理插件(OpoenClash
),实现全家科学上网。
我们需要先确定,什么样的设备能够运行op
系统,这里说的设备,是指不同SoC
平台的嵌入式设备,主要指的是硬路由,像X86这种通用平台不用担心这个问题。简单理解。除了电脑,你家其他所有带程序控制的设备,都算是嵌入式设备,比如冰箱、空调、洗衣机、电视、音响、路由器等等。
如果你有一条闲置的路由器,想看看能不能刷op,最简单的方式就是去官网查看。
OpenWrt支持的设备:https://openwrt.org/toh/start
以价格250的友善nanopi r2s开发板为例:
NanoPi R2S
价格:250元
SoC: RK3328
待机功耗: 2W
两个千兆网口
1个USB2.0接口
无内置存储 (需使用SD卡)
能跑满千兆带宽,科学上网能跑500m,具体要看你的节点速度,对大部分人来说性能过剩了。
颜值高,价格低,可以说就是为软路由而生的,缺点就是SoC属于RAM架构,不能说是缺点,只是很多软件和系统仅提供x86架构的版本,无法在arm架构的机器上运行,所以局限性比较大,但如果你只用来当路由科学上网不折腾的话足够了。
设备有了,接下来就要给他安装openwrt系统了,获取适合你设备的固件主要有三种途径
第一种方式最简单,使用网上别人编译好的op固件,他们在编译的时候会内置各种插件,你要做的就是下载他的固件,刷入之后就能直接用了,非常方便省事。
但缺点也很明显,为了尽量满足所有人,作者会编译大量你可能永远都不会点开的插件,显得系统很臃肿,最重要的是刷别人的固件存在安全风险,可能夹带了私货,跑他的脚本,收集你的信息,甚至给你安装“有主机上线”也说不定,所以我不推荐这种方式,你要用的话建议找你信得过的人编译的固件。
第二种方式就是自己编译固件,你想要啥插件就编译啥,最大程度满足你的需求,编译也很简单,网上有很多教程,跟着一步步操作就行了,虽然各位前辈将编译固件的难度降低到了小白就能操作的水平,但过程还是非常繁琐的,容易打消积极性。
第三种方式,也是我比较推荐的方式,直接使用官方固件,openwrt每次发布新的版本都会给所有支持的设备编译一个最小系统固件以及对应的软件源,该固件没有携带任何第三方插件,非常纯净,所以只能满足最基本的路由器功能,可以通过安装官方源里的插件添加新功能,但遗憾的是官方源有点过于纯净了,插件很少,四舍五入一下约等于没有,所以我这里推荐大家使用openwrt的分支项目,ImmortalWrt
,以下简称Imm,Imm同样是免费开源的,与官方openwrt的主要区别在于,Imm的软件源提供了大量常用的第三方插件,并且提供了cdn加速的镜像源,可以非常方便的安装和管理插件。
接下来就是刷入ImmortalWrt
的纯净op固件,配置好网络并且安装插件实现科学上网。

我这里选最新的,实际上作为一个路由器,应该以稳定为主,不宜追新,并且23版对比21版有个非常巨大的改变,配置防火墙的工具从iptables
变成了nftables
,有些插件还没有添加对nftables
的支持,比如ssrp
。

并且已经支持nftables
的插件也可能存在兼容性问题。
ImmortalWrt
里面输入你的设备型号,官方支持的设备这里都有,比如r2s,只有一个结果,下方有两个不同文件系统格式的固件,EXT4
和SQUASHFS
,主要的区别是
SQUASHFS
格式修改的配置文件会写入到挂载的overlay
分区里,而不是覆盖原来rom的文件,所以这种格式可以通过抹除overlay
分区达到恢复出厂设置的效果。

EXT4
的话没有这种机制,所以不能恢复出厂设置

按你的需求选择即可。
除了使用Imm
预编译好的op固件,也可以点击这里使用网站提供的Imagebuilder
在线自定义编译固件,可以设置你要编译到固件里的插件,输入框里的是默认需要编译的,保证最小系统能够正常提供路由功能,一般不要去动它,除非你明确知道自己的需求。
比如你确定你不需要PPPoP
拨号,不需要ipv6
,就可以把相关组件删掉,如果想要添加插件,你需要先知道插件的完整包名,可以进入这个链接查看luci包名,比如我要安装OpenClash
,那么他的完整包名就是luci-app-openclash
,将其添加到预安装列表,可以添加多个,注意用空格隔开。
下方还可以设置固件安装之后首次开机运行的脚本,比如修改LAN的ip地址,设置PPPoP
的账号密码等等,配置好之后就可以请求构建了,这样就会利用imm服务器的计算资源帮我们编译固件了,可以说是非常方便。
但是除非你有很多机器要定制化安装,否则不建议使用该功能。因为本来就只能添加imm软件源里有的插件,而这些插件都能在刷好纯净固件之后直接安装,没必要先编译进去,再者编译也需要时间,你还得等,也可能会出错导致编译失败,所以建议直接下载imm提供的纯净固件,编译好之后可以在这里查看编译过程中的日志输出,在下方下载刚才生成的自定义固件。
接着演示x86
固件,目前你能买到的都是64位的cpu指令集架构,x86
提供了非常多的固件类型,很多都是给虚拟机用的,我们主要看结尾是img.gz
的文件,比如第一个就是。
EXT4
表示文件系统格式,刚才讲过与之对应的是squashfs
,combined
译为组合,表示内核与根文件系统都在固件里,efi
是引导类型,或者叫uefi
,近些年的主板都支持efi
引导,后面的img就是固件的格式,gz
就表示这是一个压缩文件,这是我们需要的,点击下载,下方还提供了非efi
引导的固件,也就是传统的Legacy
引导,如果你的主板不支持efi
引导的话就刷这个,不确定的话也可以直接刷这个。
再下方的话就是squashfs
的文件系统,也就是支持恢复出厂设置的格式,按需选择即可,同样squashfs
也提供了非efi
的Legacy
引导固件。
img
固件里面就是一个完整的openwrt
系统,我们要做的就是将内容完整的拷贝到你的u盘或者sd卡里,这个操作也叫写盘,arm
小主机一般都是使用sd卡当作硬盘,而x86
小主机可以在机器内部安装硬盘,也可以通过修改启动引导用U盘当作系统盘。
常见的写盘工具,首先最推荐的就是rufus,非常小巧,只有1.4M大小,不过只支持windows,下载这个p版,也就是便携版。
先以arm小主机R2S为例,将你的sd读卡器插入电脑的usb接口,软件会自动识别,然后将你需要刷入的固件拖入软件界面任意位置,可以直接拖入gz压缩包文件,无需解压,然后直接点击开始。
固件地址:https://github.com/stupidloud/nanopi-openwrt

注意确认设备是不是你插入的sd卡,里面的分区信息和数据全部都会被抹掉,注意提前做好备份。
等待进度条走完之后就刷入成功了,此时你的sd卡里面就有一个OpenWrt
的操作系统了,接着插入R2S
,通电开机,就会自动启动OpenWrt
系统了.
虽然没法接显示器,但相信我openwrt已经运行!
其实不用担心sd卡影响系统运行速度,开机后系统会被加载到内存里运行,不是运行在sd卡里,除非你要进行高强度的文件读写操作,否则是不会影响系统运行速度的。
开始操作:
第一步,先把ipv6关闭,因为ipv6在透明代理中会出现各种奇怪的问题,现在还不是解决它的时候
来到接口页面,删除wan6接口,然后编辑br-lan接口,来到dhcp服务器,将lan口的ipv6所有服务全部禁用,点击保存,再来到dhcp高级设置,勾选过滤ipv6解析,最后点击保存并应用,这样设置之后,局域网其他设备就不会被分配ipv6地址。
接着给root用户设置一个密码。
来到设备页面,由于我的主机只有两个网口,如果你有两个以上的网口,不清楚多余的网口是否会自动桥接,并且只使用了eth0和eth1,

需要把剩下的网口全部桥接到br-lan,点击br-lan右侧的配置,网桥端口这里把除了wan口的eth1,剩下空闲的网口全部桥接上,点击保存,这样剩下的网口都能用了。

这里说的网桥其实就是交换机,交换机就是有多个接口的网桥,桥接的操作就相当于给交换机添加网口。
lan口这边暂时配置好了,接下来配置wan口。
将你家硬路由wan口的网线拔下来,插到软路由的wan口上,也就是eth1,

此时软路由就和光猫建立了连接,wan口默认的协议是dhcp客户端,也就是wan口会找光猫获取ip地址。

可以发现br-lan的网段和wan口的网段是相同的,

此时会造成冲突,需要修改lan口的网段。
注意
由于纯净的ImmortalWrt
系统默认的网段是192,168.1.x
,所以这里需要修改网段,
而R2S官方固件的网段默认是192,168.2.x
,所以就不用设置。
点击编辑,将其改成其他网段ip,比如192.168.2.1,保存并应用。
此时会弹出警告,提示我们修改了lan口ip为192.168.2.1,而当前的luci管理网址是192.168.1.1,修改之后会导致当前的网页丢失,如果90秒内没有访问新的luci管理网址,他就认为你改了之后进不来了,配置将会回滚到修改之前,相当于给了你一剂后悔药,如果你不想要这剂后悔药,可以点击红色的应用并保留设置,我这里就点击连接丢失后应用还原,此时会等待90秒,如果你没有访问新的luci管理地址,90秒后会自动回滚回192.168.1.1。

我们可以看看电脑网卡当前获取的ip,已经切换到192.168.2.1了。
可以访问这个新的管理地址,回到接口页面,此时lan口和wan口就不是同一网段了,接着尝试访问百度,我可以正常访问,但是你很有可能不能访问。
这是因为光猫有桥接和路由两种连接模式,
桥接模式相当于光猫将光纤里的光信号转换为电信号之后,直接发给路由器,路由器要负责pppoe拨号,很显然刚才没有操作拨号这一步,如果你家的光猫是桥接模式,那肯定不能上网,而我能正常访问百度,说明我用的不是桥接模式,而是路由模式,
路由模式相当于光猫将光信号转换为电信号之后,自己还得进行pppoe拨号获取公网ip,然后在lan口提供dhcp服务,路由器连接了光猫的lan口,通过dhcp获取到光猫分配的ip192.168.1.13,所以我的软路由不用拨号就可以正常上网。
但此时有个问题,内网设备访问互联网会进行nat处理, 电脑访问百度的数据来到软路由,经过nat处理后源ip被替换为软路由的wan口ip,软路由将数据从wan口发到光猫,此时又会进行nat处理,将源ip替换为光猫通过pppoe拨号获取到的公网ip,再将数据发送到互联网,返回的数据会进行相反的操作,可以发现我们的数据包进行了两层nat处理,也就是传说中的双重nat,会有一定的性能损耗。
如果由路由器负责拨号的话,就只需要进行一次nat了,所以建议将光猫改成桥接模式,只负责信号转换,路由器负责拨号,你可以联系运营商客服修改,或者自己想办法登陆光猫的超级管理员后台自行修改。
此时我将连接模式改成桥接,另外你可以在这里彻底禁用运营商下发ipv6地址,点击保存。
接下来我的路由器wan口就需要负责拨号了,点击编辑,将协议改成pppoe,点击切换协议,在这里输入你家宽带拨号的用户名和密码,点击保存,然后应用,稍等片刻刷新网页,然后你的wan口将会获取到公网ipv4地址,或者经过运营商级别nat的大内网ip地址,以及运营商下发的ipv6 pd,目前我们不需要ipv6,刚才在lan口已经关闭了ipv6,所以局域网里的其他设备不会分配到ipv6地址,如果你有强迫症,看着这个心烦,可以点击wan口编辑,进入高级设置,将获取ipv6地址禁用,保存应用之后,这个wan6的虚拟接口就会消失了。
另外还剩下两个内网ipv6地址,这个无关紧要,你非要关闭的话,lan口可以在全局网络选项中清空这个ula地址,,wan口可以在光猫里改成只下发ipv4,然后重启wan口,这样wan口的ipv6也没有了。
注
注意,以上操作如果你家本来就是桥接模式的话,不用更改!自动就是正确的!
现在电脑应该就能正常访问百度了。
不过又有一个问题,现在你家的硬路由被换下了,而这个软路由无法发射wifi,并且像r2s只有两个网口的话,没法再接入新的设备了,也就相当于现在只有你的电脑能上网,你家其他设备全断网了。
所以我们还需要把你家的 硬路由重新利用 起来,把它当作一台带 wifi功能的交换机 使用,也就是大家常说的 无线AP(Access Point,无线接入点)。
重新通过网线或者wifi连上的路由器,进入路由器的管理页面,将工作模式改成有线中继,在上网设置下方找到工作模式切换,选择有线中继模式,点击下一步,根据提示将软路由的lan口连接到硬路由的wan口,点击下一步,提示设置成功之后这台路由器就变成一台无线ap了。

需要注意的是这里会将访客WiFi关闭,

访客Wi-Fi是一种独立的无线网络,通常用于:
- 为访客提供网络接入,同时隔离访客设备与主网络,保护主网络的安全。
- 防止访客设备访问内网资源(如NAS、打印机等)。
- 不过,中继模式下,路由器的部分功能(如访客Wi-Fi、高级防火墙、端口转发等)可能会被禁用。


原先的192.168.31.1
地址已经不能访问。
如果你的路由器没有中继功能,也可以将软路由的lan口连接到硬路由的lan口,注意是lan口连lan口,找到你路由器dhcp服务的位置,关闭它,然后将路由器的管理地址改成和软路由lan口同网段的某个空闲ip,当前软路由lan口的网段是192.168.31.1,那我就改成192.168.31.191,这样就算是配置好了,这种手动配置和中继模式的主要区别在于,中继模式的wan口也可以当lan口用,相当于wan口桥接到了br-lan加入到了交换机,而通过手动配置的方式不能把wan口当作lan口用,得空着。接下来将你家所有的网络设备重新连接到硬路由,就能恢复整个网络了。
费了那么大劲把 OpenWrt 插进家庭网络中,可不是让它当个普通路由器。来到系统下的 软件包,在这里可以安装你需要的各种插件。Imm 给我们提供了非常丰富的软件源,并且不需要科学上网环境就能安装。先点击 更新列表,确保没有报错。如果报错了,建议再尝试更新。接着就可以在这里安装你想要的插件了。
先来换个主题,搜索 Argon,这个 Luci-Theme-Argon 就是常见的 Luci 主题样式。点击安装,它会自动检测需要安装的依赖项,点击安装,这样就算是安装好了。刷新当前页面,就会切换到新的主题样式。
还有另一个必装的插件,TTYD,可以直接在网页端使用 SSH 命令行。搜索出了三个结果:
- 第一个结果是 TTYD 的主程序,从名称中可以看出它和 Luci 界面没有关系。
- 第二个结果是 Luci 开头的,说明它是基于 Luci 界面的插件,安装后会有图形化界面。
- 第三个是 zh-cn 的中文汉化包,安装它之后 TTYD 的 Luci 将会是中文界面。
这里可以直接安装中文包,可以看到这里会有相应的依赖项,需要依赖 Luci-App-TTYD,而这个 Luci-App-TTYD 又会依赖 TTYD。当我们安装这个中文包的时候,就会自动安装这些依赖。可以看到我们安装中文包之后,上面的依赖也就自动安装了。
安装其他插件也是类似的方式。刷新当前页面,多了一个 终端,这个就是刚才安装的 TTYD 插件,可以在这里执行命令行指令。
你也可以安装 OpenClash,可以看到这个的依赖项比较多。像这种需要安装较多依赖的情况可能会报错。稍等片刻,我们可以刷新页面重新搜索,可以看到其实已经安装上了。如果想要卸载的话也很方便,点击 已安装,搜索 OpenClash,点击 移除,默认会把之前的依赖一并移除,这样就卸载了。到时候想用的时候再安装就行了。
接着安装第二款插件,PassWall,同样直接安装中文包就行了。安装的时候可以不用等当前网页返回,会在后台自动安装。
接着安装第三款,使用 SingBox 内核的 HomeProxy,安装中文包。刷新当前网页,可以看到多了一个 服务 标签页,刚才安装的三款插件都在里面了。如果刷新后没有看到,可以退出 Luci 重新登录。
同一时间只能运行一款科学上网插件,否则会造成冲突。
这里演示一下 OpenClash,回到主界面,将 主节点 改成 禁用,点击 保存应用,此时就会关闭 HomeProxy。来到 OpenClash,刚安装的默认没有内置 Clash 内核。来到 插件设置,选择 版本更新,需要先下载一个内核。以 TUN 内核为例,点击 检查并更新。来到 日志 页面,可以看到访问失败,报错无法链接。因为现在是没翻墙的情况,这个 GitHub 的下载地址被墙了。
此时如果想下载内核,你可以先使用 PassWall 或者 HomeProxy 开启代理,等下载完成后再关了。或者根据他这里的提示进入 复写设置,更换一个 CDN 的下载地址。这里提供了多个 CDN 地址,你可以挨个试试。点击 应用配置,接着重新尝试下载内核。此时提示下载成功,回到 内核 界面,可以看到已经有内核了。
来到 配置订阅 界面,点击 添加,随便给个备注,将你的节点分享链接或者机场的 Clash 订阅地址粘贴到这里。如果你用的是节点分享链接,那就必须开启 订阅转换。点击 保存配置,再点击 更新配置。回到 日志 页面,提示 OpenClash 启动成功。回到主界面,确实成功运行了。尝试访问 Google,没有问题。Clash 可以方便的使用 WebUI 切换节点等操作。
5. 软路由的网络拓扑
- 主路由模式:软路由作为家庭网络的主路由,负责拨号和NAT,所有设备通过软路由上网。
- 旁路由模式:软路由作为旁路由,只负责科学上网,主路由仍然负责拨号和NAT。
6. 硬路由缺点
- 硬路由的设计初衷,就是为了让你正常上网用的,压根没有考虑过科学上网的问题,而科学上网,大量的加密解密运算,对硬路由这种CPU算力来说,确实有点为难了。
- 速度慢,但是可以满足绝大多数人的需求了,但当设备越来越多,需求越来越多,就会出现断流卡顿甚至路由器过热问题。