前言

在教程开始前,博主想说一些和主题无关的题外话、相关知识的科普以及额外的心得收获,不过可能会有点长,大家如果不感兴趣的话可以点击对应的目录跳过这一部分。

软路由与科学上网

去年下半年研究总结科学上网协议和方法那会,我并没有意识到软路由的重要性,因为那时的我对科学上网的了解还不够深入,基本还只停留在研究客户端的配置上面。在对客户端配置与协议有足够了解以后,我又花了整整两周的时间完成了完整的软路由配置流程以及家庭网络的重组。在这个过程中,我也渐渐地对软路由有了更多的了解,于是准备写这篇文章记录下这完整的流程。

目前主流的个人科学上网方法(客户端实现方式)大体可以分为以下三种:

  1. 客户端

    这里的客户端其实就是大家熟知的,也是目前最容易接触到的普通的科学上网客户端,往通俗来说其实就是安装在手机或者电脑上的各种科学上网客户端软件。

    以目前最为主流的科学上网协议V2ray(包括Xray)来说,Windows平台支持的客户端包括用的最多的V2rayN、Clash for Windows、Qv2ray等,安卓平台有V2rayNG、SSRRay、Kitsunebi等,IOS平台有著名的小火箭(Shadowrocket)、Quantumult等,Mac平台有ClashX Pro、V2rayU等,Linux平台有Qv2ray等。

    其他科学上网协议(例如Shadowsocks、ShadowsocksR、trojan等)也有各自支持的客户端,这里不再赘述,具体介绍将有机会在以后的科学上网专题文章里介绍。

  2. 硬路由

    硬路由这个称呼是相对于软路由而言的,其实就是指我们平时用的家用路由器。不过并不是所有的硬路由都能用来配置科学上网,能具备科学上网能力的路由器需要包含一个特性:可玩性,也就是需要有提供第三方固件的支持。所以博主家里的办宽带赠送的路由器就不能用来配置科学上网,只适合用来提供基础的路由或桥接功能。

    目前硬路由有着比较成熟的第三方固件(例如大名鼎鼎的梅林固件),支持刷入第三方固件的家用路由器也有很多,不过博主并没有做过多的研究,愿意折腾硬路由的人在庞大的家用路由器市场里也显得格外小众。因为如果仅就“可玩性”而言,软路由才是更合适的选择。

  3. 软路由

    软路由顾名思义,我们看中的是这个路由器的软件功能,而软路由真正的硬件载体在分类里就显得相对不是那么重要。软路由的硬件平台可以是一块开发板,也可以是一台工控机甚至是一台旧电脑。

    既然软件和环境是软路由的基础,那么可玩性和插件就是软路由的灵魂。对于软路由来说,一个软路由性质的路由器是否好用,是否具有特定功能(例如离线下载、去广告、流量控制、科学上网等),完全是由你来决定的,这也是软路由为什么经久不衰且市场需求越来越大的重要原因之一。

三种科学上网方法其实各有优缺点,这里硬路由因为博主没有怎么研究,所以就主要还是说说传统科学上网客户端和软路由之间的优缺点差异吧,顺带提一下硬路由。

客户端

首先说说客户端的优点。

客户端除了简单好用以外,最大的优势和意义在于:只要有任何的网络环境,客户端就可以让当前安装了此客户端的设备实现科学上网。这听起来好像是句没有意义的废话,但是却极其重要,这也是客户端成为目前最为主流的科学上网方式的主要原因,没有之一。举个例子,你的手机只要拥有一个配置好的科学上网客户端,就可以通过4G或5G网络,在几乎任何时间、任何地点科学上网,这一点是其他科学上网方式无法做到的,也是客户端无法被替代的原因。

接下来说说客户端的缺点。

其实客户端的缺点十分明显,也十分致命,不过大部分使用客户端的人可能完全没有意识到。

首先我们得明白,客户端是安装在设备的操作系统上的。说白了,它只是一个软件,它依赖于你的手机或者电脑的CPU,这就意味着无论是什么样的科学上网客户端,也必须要遵循操作系统的资源分配和调度,无法像软路由一样独占你CPU资源。

当前绝大多数的科学上网协议,都需要对你的上网流量进行大量的加密与解密运算。如果你在Windows平台使用科学上网客户端进行过测速你就会发现,即便你为了测速把不需要的,消耗系统资源的应用全都关闭了,速度跑满的瞬间也能让CPU达到100%。而真实的使用场景肯定不会是这样的,甚至会更为复杂。如果你在高强度的使用电脑(例如运行大型3D游戏),这时候CPU的可分配资源可能只剩下10%,当然是完全无法满足流畅的科学上网需求。

客户端的第二个缺点也比较致命,而且也比较容易感受到。绝大多数的客户端翻墙软件,都不会有很高的系统权限,也就是说客户端基本只能代理应用层的流量。

这里顺便说一个很多人都会有的误区,认为科学上网客户端所谓的“全局模式”就是可以让电脑上所有软件实现科学上网,这是不正确的。客户端的全局代理模式指的是,客户端会把自身所接管到的所有的流量统统转发到代理服务器。但是我们的电脑上还存在一部分权限极高的软件,不会把流量交给科学上网客户端接管,这部分软件就没法通过客户端科学上网,比如Microsoft Store以及其内的众多UWP应用。所以即便你开启了客户端的全局代理模式,你在Microsoft Store下载的YouTube客户端等软件依然无法正常使用。

客户端的第三个缺点相比之下就很容易感受到了。我们目前所有客户端的使用都是建立在可以安装客户端的基础上的,可是别忘了,除了手机和电脑外还有大量无法安装客户端软件但是有科学上网需求的设备,例如电视机,还有PS4、PS5、Xbox等游戏机(这其实就是我当初选择转向软路由的主要原因)。这些设备怎么办呢?这就到了我们的下一个选择——路由器。

路由器

路由器是我们每个人家庭网络的重要设备之一,同时也是光猫之后接入互联网的最后一关。在路由器上安装科学上网插件,就意味着这个路由器网络环境下的所有设备都可以科学上网了,这就完美结局了电视机和游戏主机等设备无法科学上网的问题。这样做还有一个更大的好处,就是任何连接到这个网络的设备(甚至包括访客)也可以无需手动配置轻松科学上网,并且并不会占用设备本身的CPU,流量加解密相关运算都交给了路由器(同时也可以给予路由器更高的管理权限,方便管理整个家庭网络,这一点下文再细说)。

既然科学上网需要路由器承担所有的流量运算,硬路由的局限性就凸显出来了。硬路由的设计初衷是正常上网用的,CPU的算力只能满足最基础的PPPoE拨号或者DHCP服务器功能,完全没有考虑过科学上网问题,一个普通的千兆路由器即便刷入第三方固件并且CPU满载的情况下,网速也只能达到客户端的三分之一左右。虽然也能满足普通的科学上网需求,但是一旦科学上网设备增多,或者某些天气因素,路由器就会过热,表现出来的就是频繁的断流和卡顿,这时候你就会发现,硬路由的硬件限制太多,并没有太多折腾的意义。更不要说大多数的成品硬路由并不支持刷入第三方固件,只能用厂商提供的功能单一的官方固件,完全无法实现我们想要的诸如科学上网、广告拦截、内网穿透之类的种种功能,可玩性就进一步降低了。

软路由可以说就是为了解决硬路由的各种缺陷而诞生的。其实从硬件层面来看,软路由就是一个小型工作站,或者说迷你电脑。它的功能完全取决于你给它安装什么固件或系统,例如你给它安装路由器操作系统(方便理解,姑且这么称呼),他就是一台路由器,安装Windows或者Linux系统,它就是一台电脑主机。所以严格意义上讲,我们市面上能买到的所有成品软路由都是一种DIY电脑主机,换句话说就是都是杂牌机,只不过会有一些厂商针对“路由器”功能对设备进行专门的稳定性优化(比如博主购买的友善R4S)。

软路由的缺点也很明显了,作为DIY产品,价格自然也是根据硬件配置来决定的。如果想购买CPU更为强悍的软路由,价格也会更加昂贵。不过仅对于科学上网和路由需求的设备来说,只要不在路由器上折腾虚拟机之类的,便宜的软路由也完全够用(高情商:完全够用,低情商:也能吊打市面上某些成百上千块的家用路由器)。

软路由的第二个缺点大家也都知道:首次配置繁琐复杂。不过相信能看到这里的人,这点应该完全不是问题吧……

为什么要重组家庭内网

在解答这个问题之前,我们先牢记家庭网络的两大基本原则:

  • 原则一:所有网络控制功能需要尽量收归一台设备
  • 原则二:整个家庭内网只需要一层NAT,也就是只存在一台DHCP服务器,所有设备统一在一个网段下

这两个原则极其重要,因为它们同时也是我们重组家庭内网的最终目的,我会在下文对这两个原则进行详细解释。

避免多层NAT套娃

原则二理解起来相对容易,实现起来也相对简单,我们先说原则二。

照理说,我们的任何设备如果想连上网络,都需要运营商分发一个IP地址。如果没有地址,数据包就不知道应该送到哪里去,数据也没有办法传输。但是大家应该也应该有所耳闻,当前最为成熟的IPv4协议的地址在2019年11月26日就已经被分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商,而IPv6技术还没有完全普及,我们家里的设备就需要靠NAT和DHCP服务器分配地址。

NAT(网络地址转换)顾名思义就是一个把运营商提供的公网IP地址转换为我们家庭局域网的内网IP地址的功能,也是路由器最核心的功能。而DHCP服务器的作用就是为我们的设备分配这些IP地址,并且在设备离开网络之后可以对地址进行回收利用,避免了内网IP的浪费。

目前中国的网络运营商因为IPv4地址的枯竭,争相玩起了“大内网”。运营商往往会先在一大片区域内分发一个公网IP地址,再通过区域内的DHCP服务器分发给我们每个家庭一个内网IP地址。所以除了少数早年成功申请了公网IP地址的家庭以外,大部分的用户光猫后台接收到的IP地址都已经是内网IP地址了。如果我们的光猫/路由器再利用自带的DHCP服务器,为我们每个家庭的多台设备分配IP地址,这就相当于套了两层甚至更多层的NAT,这就是我们俗称的“大内网”。

多层的NAT不仅会徒增我们设备的功耗,最重要的是还会极大地降低流量转发的效率,具体表现出来的就是网速损失、网络延迟变高等一系列问题。因为外层的NAT我们并没有办法更改,所以我们必须保证我们的内网只能存在一层NAT,这就是两大基本原则中的原则二。

可能看到这里很多朋友会疑惑:照理说宽带师傅帮我们安装宽带应该会帮我们优化的,师傅应该比较懂啊,为什么有的家庭网络里会出现多层NAT的套娃现象呢?排除师傅不负责任,或是有的师傅一时疏忽,同时打开了光猫和路由器的DHCP服务器,或是师傅不懂等与宽带师傅有关的小概率情况,我们这里可以设想一个更为常见的场景。

近几年如果大家新装宽带就会发现,现在的运营商在办宽带时给予用户的光猫已经都升级为了“光猫+路由器”二合一的设备,即光猫也具有路由和Wi-Fi功能。这就意味着,即便光猫的性能、散热和稳定性都不如专门的路由器,但是会有很大一部分家庭在装宽带时选择省去路由器的费用,也就是家庭网络里只有光猫一台设备负责传输,因为现在的光猫其实已经可以完全满足普通家庭的上网需求。而这时候,这台光猫就是唯一的DHCP服务器,为有线连接的电脑和无线连接的手机分配IP地址,提供上网功能。但是如果他们发现光猫不能满足他们稳定高速上网的需求,尤其是天气炎热起来以后,如果性能拉跨的光猫需要承担大量的工作,而一般情况又被放在弱电箱内得不到良好的散热,光猫就会经常出现死机重启情况,网络也会经常断连。这时候他们就会选择购入一台性能更好、散热更好、穿透力更强、功能更多的路由器接上光猫来分担光猫的部分工作(比如WI-FI功能)。而一般的路由器为了让小白用户插上就能用,或者不用改本地IP就能进路由器后台,默认都是DHCP模式,这种时候普通家庭如果不特意去后台进行相关的设置,家里就成功实现了两层NAT的内网,即光猫通过自己的DHCP服务器分配IP地址给路由器,路由器再通过自己的DHCP服务器分配IP地址给其他的上网设备。

家庭网络中的“All-in-One”

要理解原则一,我们需要先了解一个词——All-in-One。

“All-in-One”理念是工业软件领域近几年比较热门的概念,也是软件技术发展的必然结果。All-in-One意为一体化、集于一身,不仅被应用于软件领域(比如软件厂商开始为用户提供整体解决方案,而不像以前那样提供单一的软件产品),同时在物联网领域也被广泛应用于各种全屋智能家居的解决方案。而具体到个人层面的应用,比如常常被提及的All-in-One主机、All-in-One路由器等,实现方式就是All-in-One理念的精髓:所有的权限和功能都归到一个设备。

办理好运营商的宽带套餐以后,我们会得到一个宽带账号和六位的宽带密码,这就是我们家庭宽带PPPoE拨号上网的账号密码,相当于一个需要登录的上网账号。在绝大部分的家庭网络中,都是光猫在承担拨号上网的功能。

光猫,全称为光调制解调器,本职工作是将我们入户光纤中的光信号转换为我们上网用的电信号。但在上文所提到的场景中,如果一个家庭只有光猫一台设备,严格意义上这也算是All-in-One的家庭网络,因为光猫承担了拨号上网、端口转发和DHCP等所有的角色。但是由于光猫的性能限制和功能限制,我们家里一般不会只有光猫一台设备,而且为了让性能拉跨的光猫能减少发热稳定运行,我们在重组家庭网络时第一任务就是关闭光猫除了调制解调以外的所有功能,即将光猫改为桥接模式。

那么为什么要All-in-One?其实目的只有一个:方便功能管理和故障排查。

试想一下,如果有一天你在电脑上使用网游加速器玩一个外服的网络游戏,但是丢包严重,更换节点也无济于事,甚至即便不开加速器也频繁断网,而你的家庭网络的配置为:光猫负责PPPoE拨号,路由器的DHCP服务器负责分配IP、电脑负责运行网游加速器,那你应该如何解决你的网络问题呢?

这时候的你只能挨个设备排查问题,登陆一个又一个后台,通过对配置不停的更改和还原来尝试解决问题,这期间又有可能因为不同平台和设备的操作逻辑不相同而衍生出新的问题,比如有可能是设备间的协议兼容问题、或者是某些设置相互冲突,尤其是很多大户型家庭往往拥有不止一台路由器,问题的排查更是让人抓狂。

这时候如果你拥有一台性能强悍的软路由,同时实现PPPoE拨号、DHCP服务器和网游加速功能,我们遇到问题根本就不用管光猫和路由器,只需要在电脑上登录软路由后台,在同一个系统、同一个操作逻辑下完成所有设置的更改,极大地增加了问题排查的效率。而且如果我们有其他需要实现的功能:比如端口映射、广告拦截、内网穿透、科学上网等,也可以在软路由的后台统一配置和管理,这才是真正意义上的All-in-One路由器。

要实现这种功能,我们需要将光猫设置为桥接模式(仅作为调制解调器),将硬路由设置成AP模式(仅作为无线信号发射器),也就是让软路由作为主路由工作,这也是这篇教程的主要内容。

软路由的三种工作模式

我们当前的家庭网络一般都是两种组成模式:

  1. 单一光猫:光猫作为主路由,提供光信号转换、拨号上网、NAT、DHCP以及简单的无线等全部功能

    网络拓扑:

  2. 光猫+(硬)路由器组合:光猫与一台以上的路由器来分担以上所有的功能

    网络拓扑:

这时候,如果我们要在已经成型的网络环境中添加一台软路由,就需要考虑我们的软路由在整个家庭网络中需要承担的角色。根据软路由分担的功能不同,我们可以将软路由在家庭网络中的工作模式分成三种:主路由、单臂路由和旁路由,不同的工作模式在家庭网络中有不同的接法。

主路由

软路由做主路由的配置前文已经详细解释了,也就是说软路由承担除了光信号转换和无线以外的其他所有功能,这样我们就可以完美的达成原则一:所有的网络控制功能和权限都收归软路由一个设备。不过如果想将软路由配置成主路由,还需要具备两个条件:

  1. 光猫必须是桥接模式,也就是光猫只能提供光信号转换功能
  2. 软路由必须拥有两个以上的网口,也就是说至少要有一个lan口和一个wan

作为主路由工作的软路由接入家庭网络以后,网络拓扑图如下:

首先光猫需要从路由模式修改为桥接模式,也就是关闭拨号和DHCP功能,并且建议关闭自带的Wi-Fi功能,只保留光信号转换能力。然后在软路由lan口配置静态IP,用于登录软路由后台,wan口配置拨号和DHCP功能。最后把硬路由切换成AP模式(也就是有线中继模式),中继模式下的硬路由就相当于一个交换机,只提供数据转发和无线功能,同时需要注意的是,AP模式下的路由器没有wan口,智能一些的路由器在切换为AP模式后会自动将wan口转换为lan口。

单臂路由

单臂路由可能是所有软路由工作模式中最难理解的一个。如果仍然要软路由承担所有的功能,单臂路由就是主路由的一个变种,适用对象是只有一个网口的软路由,博主具体研究的不是很多,这里简单介绍一下。

我们先来看单臂路由的网络拓扑图:

为什么说单臂路由是主路由的一个变种?因为软路由的职责其实和主路由一样,承担除了光信号转换和无线以外的其他所有功能,只不过软路由只有一个物理网口,而这个网口可以通过VLAN技术同时承担wan口和lan口的职责。

需要注意的是,不是所有情况下的的单臂路由都是主路由的变种。如果我们将硬路由设置成主路由,这时候的单臂路由就是一种特殊的二级路由,可以提供Wi-Fi、防火墙以及科学上网等功能,这就涉及到软路由的第三种工作模式了。

旁路由

旁路由也是非常热门的一种软路由工作模式,并且相较于把软路由作为主路由还有有特殊的优势。

作为旁路由工作的软路由接入家庭网络以后,网络拓扑图如下:

当我们把软路由做旁路由以后,我们可以把软路由看作是一个简单的上网设备,只不过执行着网络数据处理的功能。而在这种情况下,我们需要修改电脑上网IP使其与软路由IP处于同一网段下,然后登录软路由后台,修改lan口IP让软路由地址与主路由处于同一网段,并将软路由lan口网关设置成主路由的地址(硬路由或者光猫),不然数据的传输会在软路由处中断掉。

旁路由模式相较于主路由模式最大的优势在于,把软路由做旁路由不会影响到整个家庭网络的主体,也就是说一旦旁路由出现故障,家庭网络完全可以正常上网,这一点也是旁路由如此受欢迎最重要的原因。


一、教程环境声明

在教程开始前,这里贴出博主的配置环境:

配置环境的名称环境值
宽带网络运营商四川电信
网络带宽300Mbps
光猫光猫名称EPON天翼网关(4口双频)
光猫型号TEWA-750E
光猫固件版本21TYT40001103
(硬)路由器路由器名称TP-LINK AX5400双频 Super Wi-Fi 6无线路由器(2.5G口)
路由器型号TL-XDR5480易展Turbo版
路由器固件版本1.0.30
软路由软路由型号友善NanoPi R4S普通版(R4C)

二、准备工作

1、购买软路由

当然,我们需要先选购一款软路由。

软路由的选购是一个比较困难的问题,而且软路由的种类也分很多种。因为软路由的硬件配置可以类比为电脑主机,所以选购软路由的步骤其实就和选购电脑主机一样,及其相似。电脑主机有DIY主机以及品牌机等分类,DIY电脑主机就对应了DIY的软路由,品牌机对应了市面上售卖的成品软路由。这里只简单介绍一下购买成品软路由需要注意的地方。

和电脑主机的选购一样,软路由的选购也是主要看处理器、内存等硬件配置。对于成品软路由来说,我们主要需要注意以下四个硬件配置:

  1. 处理器(CPU)

    处理器是软路由中最重要的硬件设备,没有之一。而CPU同时也是成品软路由售价里最重要的决定因素,类似显卡在高端主机中的地位(甚至比显卡更高)。一般来说,我们选择软路由其实就是在选择CPU。

    当前成品软路由的CPU可以分为X86架构和ARM架构两种,前者一般比后者价格更为昂贵。如果你有虚拟机需求,那就只能选择中高端X86架构的软路由。而对于绝大部分没有虚拟机需求的用户来说,低端X86架构的软路由和ARM架构的软路由在性能上并没有明显的优劣,可以根据其他配置或者价格选择购买。

  2. 内存

    内存可以说,是软路由硬件组成里相对最不重要的一个。当前市面上成品软路由使用的内存都是DDR4的内存颗粒,我们经常使用的嵌入式软路由系统对内存的使用都比较低,只要不折腾虚拟环境,内存占用一般都在100-200MB左右,而市面上成品软路由内存都是1G起步,已经绰绰有余了。

  3. 硬盘

    对于电脑的硬盘挑选,我们主要考虑的都是读写速度和容量这两个参数,但是对于软路由来说,硬盘读写速度并没有多大意义。软路由系统启动后,必要的应用进程都运行在内存中,硬盘只是在系统启动引导保存配置、读取交换分区和缓存时会有读写。这些数据量并不大,软路由也不会对硬盘进行频繁的读写,所以我们选择硬盘时只用考虑容量即可。

    X86架构的软路由目前使用最多的是mSATA的固态硬盘,而ARM架构的软路由现在使用的是SD卡当作硬盘,只要不玩虚拟机或者Docker,买一张32G的SD卡肯定用不完的。

  4. 网口

    虽然软路由从硬件层面看可以类比为一台电脑主机,但毕竟和电脑主机还是存在区别的,其中网口就是最大的区别。软路由的网口在选购的时候主要考虑数量和传输速率这两个参数。

    对于软路由的网口数量,我们需要针对自己的使用环境和实际情况进行挑选。如果你的家里有两条以上宽带都要同时接到软路由上,那就必须要挑选多wan口的软路由用来同时接入多条宽带并做好负载均衡。而对于绝大多数家庭来说一个wan口的软路由就完全能满足需求,我们只需要根据家里的设备情况或者软路由的工作模式来挑选lan口数量即可。

    而软路由网口的传输速率主要分千兆网口和2.5G网口两种。当前中国大陆运营商宽带上限都是千兆,所以2.5G网口的意义也就只有加快内网传输速率。

    另外补充一点,目前软路由网卡品牌主要分螃蟹和英特尔两种,一般用不出区别,不过如果你想玩虚拟化,最好挑选英特尔的网卡。

这里博主说一个自己在购买软路由时遇到的小插曲,帮大家避避坑。

目前楼主使用的软路由是淘宝购买的一款人气较高的成品软路由:友善NanoPi R4S。如果你在淘宝上搜索这款成品软路由你就会发现,无论是官方店还是第三方授权店都会有两个版本在公开售卖:标准版和企业版(有的店铺也会称之为家用版和商用版)。

截至博主写稿,几乎所有在售R4S的淘宝店铺对于两个版本的解释都是如下:

也就是说在商家口中,两者并无很大的区别,普通用户无脑选择标准版就可以了。

然而事实真的是这样吗?

博主是在第三方店铺购买的友善NanoPi R4S - 1GB 标准版,在拿到机器之后刷入了多个热门的、兼容性最好的OpenWrt系统后,惊讶地发现没有一个可以正常运行,要么就是无法读取物理网口,要么就是无法进入OpenWrt后台。当时一直认为是我的操作问题和固件问题,为了排查花费了大量的时间,最后无奈咨询客服,客服一口咬定是固件有问题,强迫我使用他们提供的来源不明的固件。当时的我实在没有精力和时间的情况下,加上他们提供的固件确实可以凑合着用,此事只能不了了之。

后来经过一位大佬提醒,我去看了GitHub上著名固件作者“lean”与UP主“BIG东东”(同时也是友善官方最大的授权经销商)关于“R4S标准版是不是原R4S的阉割版R4C”的争吵issue(现已被删除),我终于明白:当前各大商家售卖的R4S企业版其实才是曾经的R4S标准版,绝大多数的固件适配的也是这个版本。而友善官方因为不可知的原因推出了阉割版的R4S(俗称R4C),并将R4S分为了两个版本,在价格不变的情况下把阉割版R4S美其名曰“R4S标准版”,原来的完整版R4S则命名为“R4S企业版”

然而得知真相也没有作用,博主也不能以任何理由退换货,商家也不可能承认,只能认栽。

2、获取光猫的超级管理员密码

在一切开始之前,我们还需要准备好光猫的超级管理员密码。

注意这个账号密码不是你宽带拨号上网的账号密码,而是用来登录光猫的超级管理员后台。在配置软路由为主路由的同时,我们也要顺便重组家庭网络,而将光猫改为桥接模式是整个流程的第一步。

一般在我们的光猫设备背后,都会有一个默认的账号密码。在默认情况下,我们可以通过此账号密码登录光猫的后台进行相关设置。但是这只是普通管理用户的后台,并不能进行例如更改桥接等权限相对较高的操作。每一个运营商的光猫都有一个超级管理员后台,一般是提供给宽带维修师傅和运营商工作人员使用的。

这是中国电信天翼网关普通用户的登陆界面:

这是超级管理员用户的登陆界面:

需要注意的是,如果使用同一个账号,两种登陆界面并没有本质区别,如果你使用超级管理员账号密码在普通用户界面登录,登陆成功后也同样会跳转到超级管理员后台。在普通用户登录界面右下角,点击快速装维入口按钮也可以快速切换到超级管理员登陆界面。

获取光猫超级管理员账号密码共有三种方法:

  1. 向宽带维修师傅索要

    这是博主认为最安全快捷的方法,因为所有用户的超级管理员账号密码在维修师傅的终端机上都可以查询到。不过有的宽带师傅可能会因为你不懂网络,觉得你把网络搞坏之后他维修起来比较麻烦,可能不会立即提供,这时候你可以想想别的办法。

    我所在的这个区的成都电信宽带维修师傅人挺好的,之前在上门安装宽带网络的时候一起讨论过网络专业相关的话题,双方都有所收获,所以见我来索要超级管理员账号密码便很爽快的给了,并且在他休息的周日当天还热心帮助我重置被我搞坏的光猫系统配置。

  2. 使用互联网提供的默认密码或密码破解方法

    互联网上有提供很多运营商默认的超级管理员账号密码,你可以先一个一个尝试。不过对于我这边的光猫并不适用,因为我们这边的光猫超级管理员账号密码每台设备都是不同的,并且在重置固件以后还会随机生成新的密码。

    对于光猫超级管理员账号密码的破解,对于运营商和光猫的型号就有很高的要求了。博主之前尝试过网络的方法但没有成功,并且猜测方法可能已经过时,不过对一些老旧的光猫设备应该有用,实在没有办法的话可以考虑尝试。

  3. 电话咨询运营商

    当然你也可以选择直接打电话咨询运营商,不过不是咨询超级管理员账号密码,而是让客服直接帮忙改成桥接模式,这样也可以省去很多时间。

    不过有的地区的运营商可能比较不当人,比如当我拨通电信客服电话让那边帮忙改桥接,她居然找各种理由不愿意,还扯什么我的宽带是企业宽带不是家庭宽带无法改桥接,气得我直接挂断电话找师傅索要自己改。

获取到当前光猫的超级管理员账号密码以后,我们就可以正式开始家庭网络的重组。


三、重组家庭网络

1、修改光猫为桥接模式

进入光猫后台有多种方式。如果光猫开启了无线功能,最快捷的方式是直接连接光猫Wi-Fi,笔记本电脑或手机打开浏览器输入光猫后台地址。不过为了保险起见,方便排除其他问题,以及后续其他操作,我建议将电脑直连光猫:

一般光猫的后台地址都是192.168.1.1,我们在浏览器输入192.168.1.1就可以进入光猫的后台登陆界面。

如果确认光猫是拨号模式,那么浏览器直接输入192.168.1.1便可进入光猫后台登登录界面。

如果无法进入后台,可能是因为光猫已经开启了拨号模式并且关闭了DHCP服务器,这时候需要手动设置电脑IP。

进入电脑的网络设置界面,将IP地址获取改为手动,开启IPv4,IP地址设置为与192.168.1.1同一网段的任意IP(也就是192.168.1.XX,比如192.168.1.10),子网掩码填写255.255.255.0,网关和DNS填写光猫IP地址192.168.1.1,然后点击保存。

再打开浏览器输入192.168.1.1即可成功进入光猫后台登登录界面。

输入准备好的超级管理员账号密码,登录进入光猫的超级管理员后台。

点击上排网络网络连接,点击连接名称选项,找到包含“INTERNET_R_VID”的那个选项,点击我们就能看到我们网络当前的配置,截图保存整个界面(尤其需要记住VlanID)。

初次修改截图保存当前配置极其重要!博主当时在修改桥接时忘记截图,导致无法输入正确的VlanID,后来找宽带师傅要了新的注册码,在超级管理员登录界面右下角设备注册页面重新注册设备,重置了所有设置。而且每次重置设置以后,超级管理员密码也会随机生成,特别麻烦,所以默认配置一定要做好备份!

在此我们可以看到光猫是拨号上网模式,下面有自己宽带的拨号上网账号密码,光猫默认封装类型为PPPoE,连接模式为路由,并且开启了DHCP服务器和自带Wi-Fi功能。

  1. 修改桥接

    修改连接模式为桥接即可,其他设置根据自身情况设定(比如是否开启IPv6、是否绑定多个lan口等),博主设定如下:

    注意:VlanID类似于上网身份证,每个人的宽带VlanID都不相同,需要根据自己之前的备份截图填写自己的VlanID。

    完成修改以后,点击下方保存/应用按钮完成修改。

  2. 关闭无线功能

    点击WLAN设置,取消勾选WIFI即可。

    注意:关闭Wi-Fi功能以后,我们便无法通过连接光猫WIFI的方式进入后台,这也是我开头推荐电脑直连方式进入后台修改配置的原因。

  3. 关闭DHCP服务器

    点击用户侧管理,在IPv4设置和IPv6设置里分别关掉对应的DHCP功能——DHCP服务器和DHCPv6服务器,分别点击保存。

    注意:关闭DHCP服务器以后,如果需要再进入光猫后台将仅剩下电脑直连光猫一种方式,如果家里电脑直连光猫不太方便(比如台式电脑放在卧室,光猫放在客厅弱电箱等情况),可以考虑购买更长的网线,或者保持开启DHCP服务器,在需要的时候用前文方法修改IP进入光猫后台。

  4. 关闭自带防火墙

    在博主修改完毕桥接模式以后,使用电脑拨号发现网速直接减半,咨询宽带师傅和电信运营商,在没有得到满意的答复以后又调试很长一段时间,依然没有办法解决,博主甚至一度决定放弃把软路由做主路由方案,考虑配置旁路由。后来经过我不懈的努力,终于在一个论坛上找到答案,问题出在光猫自带的防火墙上,感兴趣的可以去看原帖:已解决,成都电信10G光猫桥接拨号速度达不到

    点击安全防火墙,关掉防火墙和Dos攻击保护,点击下方保存/应用按钮完成修改。

至此我们已成功修改光猫为桥接模式。

2、拨号上网

完成光猫配置以后,我们现场时直接用电脑拨号上网。如果能成功上网,说明我们的配置无误了。

我们需要准备好自己的宽带账号密码。一般在办理好运营商的宽带套餐以后,我们会得到一个宽带账号和六位的宽带密码,默认的宽带密码运营商会在宽带办理的时候短信发送到你的手机上,如果忘记了可以在运营商APP内修改,不支持自己修改的也可以拨打电话人工客服重置。

我们打开设置,找到网络和Internet拨号,点击设置新连接

选择连接到Internet,然后选择宽带PPPoE

输入你的宽带账号和密码,点击连接即可。连接好以后打开测速网测试是否可以上网,如果测速带宽无异常,说明光猫桥接完美设置完成。

可以看到博主的300M宽带设置光猫桥接以后,带宽和延迟体验都得到了大幅提升。


四、配置软路由

1、刷写OpenWrt固件

如果你买的是和博主同款或者类似的软路由,到手的第一件事当然是系统的刷入。

首先我们需要选择固件的版本。OpenWrt可以选择自己编译,也可以选择使用大佬们编译好的、继承了很多插件和功能的版本。这里推荐@stupidloud大佬编译的固件,不过需要注意的是,OpenWrt固件版本并不是越新越好。目前最新版的友善R4S固件的几个科学上网插件无法正常使用,需要等待作者修复,所以我们需要根据自己的机型进行多轮测试,以便得到适合自己机型的最稳定的版本。

这里是固件下载地址:https://github.com/stupidloud/nanopi-openwrt/tags

在这里,博主选择2022年5月1日发布的固件版本,选择目标日期就可以看到完整的固件列表。

需要注意的是,无论是什么版本的固件,我们需要刷入的固件文件后缀都是.img.gz,并且后续使用工具刷入的时候不需要解压。

以博主的R4S为例,我们在下面找到R4S相关固件,会发现这里共有三个固件版本:

  1. r4s
  2. r4s-slim
  3. r4s-with-docker

第一个就是集成了插件的标准的R4S固件版本,推荐刷写。第二个slim版是无安装插件的纯净版,不推荐安装。而第三个顾名思义是集成有Docker容器的固件版本,如果有相关需求可以尝试此版本固件,不过博主并不建议在软路由的OpenWrt系统上玩Docker,抛开软路由性能不谈,集成了Docker的OpenWrt系统可能会有一些难以解决的bug。比如博主在之前使用Docker版固件的时候发现,OpenWrt系统里的Docker某些服务一旦运行就无法关闭,而且Docker会默认创建虚拟网卡导致软路由iptables规则失效,从而影响Full Cone NAT使其无法正常工作,导致特定环境游戏延迟异常波动。

下载r4s.img.gz后,我们需要下载一个工具将其刷入SD卡内,这里选择balenaEtcher

将SD卡通过读卡器连接电脑,打开balenaEtcher,选择Flash from file,选择我们刚下好的固件:

然后点击Select target按钮选择我们的SD卡:

最后点击Flash!,等待刷入完毕即可。

刷好以后插上软路由就可以使用了,更新固件也可以使用相同流程,这里不再赘述。

由上图可知,默认固件为了保证稳定性和刷写效率,即便集成了众多插件也只会占用SD卡大概700MB空间。如果有虚拟机或Docker容器等需求需要对OpenWrt系统进行扩容操作,需要在系统配置之前进行,无法在OpenWrt系统内进行扩容。

有需求的小伙伴可以先直接跳转到第六章查阅相关教程。

2、OpenWrt系统配置

软路由插上SD卡以后,软路由wan口连接桥接模式的光猫,lan口连接电脑:

等待片刻,等到R4S红色指示灯熄灭,四个指示灯均亮起绿色即可打开浏览器,输入192.168.2.1进入软路由后台:

输入默认密码password登录进去即可来到主界面,查看固件系统状态:

我们要做的第一件事是修改后台登录密码,点击系统管理权,输入新密码以后,点击右下角保存&应用

然后来到网络接口,把下面那个WAN6虚拟接口删除掉(这个接口对于软路由拨号的环境来说没有用了),并清空IPv6 ULA前缀框里的内容,点击右下角保存&应用按钮保存修改。

然后点击wan口右边的修改按钮,协议默认是“DHCP客户端”,切换为“PPPoE”协议,点击切换协议按钮,然后填上宽带账号密码即可,然后点击右下角保存&应用按钮保存修改。

然后来到lan口的修改,点击上方的高级设置按钮,找到“使用内置的IPv6管理”选项,取消勾选并保存。

到此软路由部分也就配置完毕了,点击系统重启执行重启,等待软路由正常开机,指示灯全绿以后,应该就可以正常上网了。

如果经常玩游戏的话,可以点击网络防火墙,勾选上“启用FullCone-NAT”并保存,可以有效降低游戏延迟。


五、配置(硬)路由器

在修改好光猫、配置好软路由以后,我们的电脑已经可以上网了,现在我们需要把硬路由修改为AP模式,让硬路由仅提供WIFI功能。AP模式又称有线中继模式,不同品牌的路由器叫法可能不一样,设置的流程也有可能不一样。

我们先将路由器接入我们的家庭网络,具体接法也可以参考软路由做主路由的拓扑图:

在路由器的背后或者说明书上找到进入路由器后台的办法,以博主手上这台TL-XDR5480为例,输入tplogin.cn进入路由器后台。

并输入默认的密码进入管理界面,找到路由设置上网设置,切换为有限中继(AP模式),并且打开兼容模式:

开启路由器自带的AP模式以后,需要检查各项配置是否正确,比如DHCP服务器是否正确关闭、IPv6是否正确开启等,具体可以在相关页面查看。

同时我们需要记住本地IP地址,以便之后用来登录路由器后台。

如果路由器没有自带可切换的AP模式,可以手动设置AP模式。

方法也很简单,只要关闭在路由器后台的局域网设置(一般路由器后台的“上网设置”就是wan口设置,“局域网设置”就是lan口设置)里的DHCP功能,然后把路由器的局域网地址(本地地址)改为和软路由同一网段即可。然后把网线从wan口上拔下来插到lan口上就可以了。

手动设置AP和自动的AP模式唯一的区别在于,自动的AP模式生效以后,路由器的wan口也失效了,系统会把wan口识别为lan口,也就是所有的口都可以当lan口用,而手动设置的AP模式wan口仍然是wan口,不能用于中继。

至此,所有的配置都已完成了,尽情地享受优化后的家庭网络吧!


六、其他可选配置

1、ext4固件扩容

为了保证固件稳定性以及方便安装与更新,OpenWrt系统默认的占用空间不会有太多,一般的固件包在100MB~300MB左右,而系统安装完成后的空间占用在500MB左右,不过不同的固件相差也巨大。

如果仅仅使用系统自带的功能或者插件,那么就没有扩容的必要。但是如果要使用虚拟机或者玩Docker,或者想安装占用大的插件或是用作临时存储,那还是有扩容必要的,而且最好在系统配置之前进行以防止文件丢失。

不同系统以及不同固件的扩容流程大不相同,这里博主只说当前所用固件(ext4固件)的扩容流程,SquashFS系统的固件扩容流程相对简单,大家可以自行搜索相关教程。ext4固件暂时无法在Windows下使用Diskgenius、PartitionGuru等磁盘管理工具扩容,所以我们需要在Linux环境下对SD卡进行扩容操作。如果你有现成的Linux环境,则可以将SD卡插入电脑,使用GParted工具对SD卡的root分区进行扩容,博主则选择使用虚拟机软件虚拟GParted的Live CD,在虚拟机中完成SD卡的扩容。

VirtualBox下载与安装

首先我们前往VirtualBox官网的下载页面,下载适用于Windows的VirtualBox安装包和扩展包:

下载第一个安装包“Windows hosts”和下面的全平台扩展包“All supported platforms”,然后依顺序安装本体和扩展包。

接着我们前往GParted官网的下载页面,因为博主使用的R4S不是x86架构的CPU,所以下载第二个GParted Live CD镜像gparted-live-1.4.0-5-i686.iso。x86架构的软路由请下载第一个64位的GParted Live CD镜像gparted-live-1.4.0-5-amd64.iso

打开VirtualBox开始新建虚拟机,系统版本选择Other Linux(64-bit):

内存默认512MB,虚拟硬盘选择不添加,新虚拟机也就创建好了。

选中刚刚创建好的虚拟机,点击上方设置按钮进入详细的虚拟机配置界面,在系统启动项中,将“光驱”设为唯一启动项并将其移动到第一位:

然后选择存储,点击“没有盘片”,注册并应用我们刚刚下载好的GParted Live CD文件。

然后我们将刷好系统的SD卡插上读卡器,插入电脑,来到USB设备并启用USB控制器,选择USB2.0以后点击右边加号添加我们的SD卡读卡器,然后点击OK确认,然后就可以点击右上绿色的启动按钮启动虚拟机了。

使用GParted扩容

启动以后来到淡蓝色的启动菜单,默认选择第一个,然后跳过按键布局选择,来到语言选择,选择“26”以选择简体中文:

输入“0”回车,进入系统桌面:

稍等片刻会自动启动GParted,找到卷标为rootfs的分区,右键选择更改大小/移动,然后我们给分区分配一个新大小,比如20GB:

如果你要进行全盘扩容操作,建议在rootfs分区前后留出大于4M的空间。

然后点击右下角按钮调整大小/移动,然后点击上方最后一个绿色的应用操作:

稍等片刻就能看到扩容操作已经完成了:

关闭GParted回到桌面,点击左上角红色的Exit,然后选择Shutdown,大功告成!

最后我们再进软路由后台看一下,发现可用容量已经扩展到了20GB。

2、配置科学上网

在默认状态下,该固件内置有PassWall、ShadowSocksR Plus+、OpenClash等多个科学上网客户端,这里推荐使用ShadowSocksR Plus+插件。

点击服务ShadowSocksR Plus+,点击顶上服务器节点,在这里可以输入机场订阅链接,也可以导入自己搭建的节点链接。

如果是自己搭建有科学上网服务器,点击最下方的添加按钮,在这里可以导入配置信息,可以选择链接一键导入,也可以选择手动输入,输入完毕确认无误以后点击右下角保存&应用按钮保存修改。

回到客户端界面,选择我们刚刚导入的节点,配置UDP中继服务器为“与全局服务器相同”,后面的运行模式根据自己的需求配置,配置完毕保存即可。

点击状态一栏,点击“【谷歌】连通性检查”后面的检查连通性按钮即可查看节点是否可用,可以顺便更新一下数据库和列表,并且在服务器节点一栏上方配置列表自动更新。

3、IPv6动态DNS实现外网访问

首先,为什么选择IPv6而不选择IPv4呢?当然是因为博主的家庭宽带并没有拿到公网的IPv4地址。

博主所在的四川电信运营商从去年年底开始全面限制公网IP地址的分配,新用户如果想要公网IP地址必须需要额外办理三百多元的套餐才会给。而幸运的是经过前面的操作我们拿到了公网的IPv6地址,那也可以利用IPv6地址配置DDNS从外网访问我们的家庭设备。不过拥有公网IPv4的朋友还是建议用IPv4,因为IPv6不支持IPv4网络访问,也就是说即使我们配置好以后,如果你在外连接的WIFI网络不支持IPv6,依然无法访问。

IPv6外网访问

首先我们需要确保当前网络的IPv6是可用的状态,我们可以在IPv6测试网站确认。

然后我们登录软路由后台,在网络接口lan口设置里找到当前软路由的IPv6地址,复制地址然后在浏览器输入,如果能成功打开后台则说明IPv6生效。

IPv6和IPv4在浏览器地址栏的写法有区别,我们需要加[]符号保证浏览器能识别地址。

假如你的IPv6地址为240e:123:123:123::1,那么你需要在地址栏输入[240e:123:123:123::1]才能打开相关页面。

但我们如果从外网输入IPv6地址访问却发现,无法连接到我们的软路由,那是因为软路由的网页端口默认是80和443端口,而在国内因为开展网页服务需要备案,所以运营商默认都屏蔽掉了这两个端口,所以我们需要修改成其他的端口进行访问。

我们来到系统TTYD终端,输入用户名root和密码登录到软路由终端:

输入以下代码查询当前软路由的端口号:

1
vi /etc/config/uhttpd

我们可以看到,软路由访问默认端口是80和443,我们按下i键进入编辑模式,修改第二排[::]:80[::]:1234,然后按esc键,输入:wq!,回车保存。

1234端口与ShadowSocksR Plus+的节点默认端口号冲突,如果你要使用ShadowSocksR Plus+建议更换其他任意端口号或者修改ShadowSocksR Plus+节点默认本地端口号。

然后我们重启一下服务,端口就修改完毕了。

1
/etc/init.d/uhttpd restart

现在我们用浏览器输入[IPv6地址]:1234看看能否进入后台,如果可以进入则说明端口更改已生效。

接下来我们配置外网访问,只需一步——在防火墙中开放端口即可。

我们来到网络防火墙,来到下面打开新端口,名称可以随便填,协议选择TCP,端口填写我们刚刚改好的1234,点击添加,然后点击右下角保存&应用

添加成功以后,我们在最底下找到规则,点击修改,找到“限制地址”改为“仅IPv6”,然后点击右下角保存&应用,如此便配置完成了。

我们再用手机连接数据网络输入[IPv6地址]:1234,如果也能成功说明外网访问也已经配置成功了。

DDNS配合域名访问

配置好以后虽然可以实现外网访问软路由,但是IPv6地址每次拨号都会变,我们不可能随时去更新我们的IP地址,而且IPv6地址过长要记住也不方便,我们可以用利用DDNS,通过域名来访问我们的软路由。

DDNS也就是动态DNS,第一个“D”意为“Dynamic”。在本地运行DDNS服务以后,如果发现IP和DNS记录不符,会自动帮我们更新DNS的IP记录。因为博主域名的DNS服务器是Cloudflare,所以博主用Cloudflare作为演示,其他的域名服务商操作也大同小异。需要注意的是,Cloudflare的使用需要科学上网环境。

首先我们登录Cloudflare后台,找到自己想用的域名,随便添加一条AAAA解析:

然后我们来到域名首页概述页面,点击右下角“获取您的API令牌”,找到Global API Key,点击查看,然后复制以备用。

回到软路由后台,找到服务动态DNS,随便填写一个配置名称(注意此处只能填写英文),点击添加

顶上勾选“启用”,查询主机名填写自己的根域名(例如:example.com),IP地址版本选择IPv6地址,DDNS服务提供商选择cloudflare.com-v4,域名填写解析好的域名(对应上面已解析好的AAAA记录就是openwrt.example.com),用户名填写Cloudflare的登录邮箱,密码填写之前获取的Global API Key,点击右下角保存&应用就完成了。

返回主页后,点击一下右边的启动按钮,如果出现PID,并且已经出现更新记录,就说明启动成功了。

我们去Cloudflare的DNS解析界面查看,会发现AAAA记录已经变成了软路由的当前IPv6地址,我们用手机开启蜂窝网络在浏览器输入域名+端口号(例如:openwrt.example.com:1234),成功打开了软路由登陆界面,大功告成。