还是和上一篇文章一样,直接进入主题好了。
明确需求
首先你要想好,你准备拿他来干什么。
其实软路由的种类不多,但也不算少,目前比较公认(但实际上我不这么认为)的玩法是ROS用来拨号,做规则,iKuai用来多拨,叠加,负载均衡,Openwrt用来科学。但实际上你单独地用Openwrt来搞,抛开IPV6来看,其实也能搞起来,而且反而维护更加简单。我最开始用软路由是用的win虚拟海蜘蛛,用来单线多拨,那时候家里的带宽是20M,因为ROS和iKuai我基本上没用过,所以下面的所有内容除非专门指出,否则全部都指的是Openwrt。
从需求上来说,软路由在国内那基本上就是科学,如果你不要科学的话,使用软路由的动力就会大大的降低,但实际上软路由能做的事情还有很多,比如更加丰富和简便的管理、监控功能,依赖插件可以获得去广告、DNS加速、应用控流、更多的ddns服务、更多的内网穿透服务等等功能,除此以外因为Openwrt基本上就是个完整的Linux,你还可以在上面干很多的事情,比如跑Docker,跑下载,搭建个媒体服务器啥的。所以你对家里的网络设置要求比较高的话,软路由是值得花一点时间去关注的。
有很多朋友一看到软路由这三个字就觉得很复杂,很难搞,这句话倒退回十几年应该是成立的,因为那个时候相关的资料确实比较少,但是现在各种保姆及的教程很多,虽然质量良莠不齐,但是这一块的门槛确实可以说是大大的降低了。
所以如果你看到这里还有一点兴趣的话,不妨继续看下去,我打算分享一下我在软路由这一方面的一些不太成熟的看法,如果你现在正在用或者正打算用软路由的话,接下来的内容应该能对你有所帮助。
1.性能
这个需要辩证地去看。
关于性能,笔者一直都认为够用就好
其实关于这一块的争论挺多的,在大多数情况下,X86的软路由性能肯定大大优于arm,但实际上你真的不一定用得上,因为你得考虑到你的基础带宽。如果你家里的带宽就100M,像是N1,R2S这些arm设备就可以直接拿来用,甚至性能已经溢出了很多很多很多了。现在网上相关的资料也不是特别难查,N1跑科学上500M是没啥大问题的,R2S就更没问题了,这类设备直接拿来给500M以下的带宽用不存在性能不够的问题,而且还能带来很多好处,那就是刷机相对来说比X86的要方便或者说简单一些,N1稍微折腾点,原生固件需要降一下级,然后就随便找个U盘直接把img写进去插好就能用了,R2S则是直接写TF卡,相对来说更加的友好一些。另外,功耗也十分的低,虽然说现在X86的功耗也不高,但是和满载就只有几瓦的arm设备比起来,还是有不少差距的。
甚至你刚开始玩软路由的话,都不需要额外的添加设备,你可以在电脑上虚拟一个Openwrt出来跑,你也可以直接写到U盘里直接引导起来跑,先找找感觉,觉得不错了,再去考虑要不他要专门搞个设备来跑软路由的事情。
性能这个事情想要展开来讲明白是很难的,因为软路由本身能干的事情太多了,没法给出几个统一的最优解,现在很多人还在争论软路由需要几个网口才够用才还用,别的地方就更多了。
2.需要简单了解的其他知识
其实就是简单的网络(局域网)知识。这一块也没法展开来讲,但是你也不需要了解到网络的层数、具体的协议这些,我简单提炼一些出来,针对绝大多数的家庭用户,知道下面这些概念就差不多可以开搞了,为了便于理解,描述不会太准确(防杠):
NAT简单来说就是通过转换,把局域网的数据送到互联网,再把互联网反馈回来的数据转换以后送到局域网内所对应的设备。我们现在使用的(硬)路由器有个重要的功能,就是用来做NAT转发的,它有专门的芯片来负责这个事情,所以从效率上来说,硬路由在NAT上面比软路由强很多(指数级的),而软路由的NAT,则需要用CPU去算,很依赖于CPU的算力。简单来看,你就把它理解成播放视频硬解和软解的区别好了。
PPPoE也就是拨号这个操作(协议)是你能连入互联网的最关键点,也是绝大多数家庭用户上网所需要的操作,所以你要记住你PPPoE所需要的账号和密码。路由器通过PPPoE获得公网IP(便于理解10开头的也算是公网),再通过NAT使得内网的数据出去,公网的数据回来。
网段和子网掩码需要连在一起说,但绝大多数人只需要了解网段就可以了。简单来说,IP地址(V4)都是X.X.X.X的格式,除开第一个X不能是0和127,最后一个X不能是0以外,其他的X都是0-255。由于子网掩码一般都是255.255.255.0,因此在这个前提下,只要局域网内的IP地址前三个X都是相同的数字,那么这些IP地址就都在同一个网段内,可以相互访问,不需要NAT。
局域网内的设备相互访问的条件是同一网段,和网关没有关系,没有网关的设备也能访问同网段的其他局域网设备。
DHCP服务是用来分配局域网IP地址的,它一般都在路由器上,但是它是可以独立存在的,类似的包括网关、DNS服务器也是这样。DHCP主要作用是集中的管理、分配IP地址,使网络环境中的主机动态地获得IP地址、网关地址、DNS服务器地址等信息,所以如果你的局域网中有多个DHCP服务器的话,IP地址的分配就很可能会出问题,分配出去的IP地址有冲突的可能性。一个局域网内可以没有DHCP服务器,但是不能有多个DHCP服务器。
DNS是用来做域名解析的,就是把你输入的网址转换成IP地址。如果设备找不到DNS服务器,那么你通过网址就访问不了相应的服务。至于递归和迭代查询,不好讲,也不需要了解。
好了,没了,简单总结一下。你想要上网,那么首先路由器上的PPPoE得跑起来,然后其他设备需要和路由器在同一个网段,并且网关指向路由器,在有有效DNS服务器的前提下,你针对互联网的数据就可以正常的通过路由器的NAT出去又回来了。看起来很复杂,但是路由器基本上能够很简单的把这些活给你干了,你不需要太多的干预。但是因为我们下面说的是软路由,所以整个流程你是要做到心里有数的。
3.难度
部署软路由难不难?不难,但是第一次搞可能会比较繁琐。繁琐和困难还是有很大区别的。我比较喜欢把跑了Openwrt的设备看成是一台运行了特定linux的电脑,这样理解起来会更加方便一些,你每天都会用电脑的对不对,现在只是换了一个操作系统,但你接触的还是电脑。
落实到实际的操作上,部署软路由的流程简单概括一下就应该是:装系统——访问WebUI或者是GUI——配置网络和服务——接入现有网络——测试——调试——正常使用。
其实我们在用任何新电子设备的时候差不多都是这么个流程,而软路由的繁琐就繁琐在测试和调试这一块上面。我比较推荐也是现在正在用的方式是,不动现有的网络结构,先把软路由自身的IP地址(LAN)设置到局域网的网段(不要和其他设备冲突),网关设置到现有的网关(DNS同理),关闭自身的DHCP,检查无误以后就可以接入现在再用的局域网了。记住,你现在折腾的是一台电脑,不是路由器,是电脑!
接好以后开始配置你想要的各种服务,拿科学来说,订阅完毕以后,其他想要科学的设备直接把网关指定到这台软路由的IP上就行了。
如果你想要进阶一点,不想一台一台的设备这么手动指定,那么做法分两种,如果主路由的DHCP服务能够自己指定网关,那么就在主路由的DHCP上把网关填成软路由的IP地址。如果主路由没法这么搞,那么你就反过来,把主路由的DHCP关掉,软路由DHCP打开,在软路由上把网关填成它自身的IP地址就行了,不过额外需要注意一点,DNS服务器顺带也搞一搞,填运营商的DNS,公共DNS,路由器的地址都可以。
这种用法就是你们经常看到的旁路由用法,但实际上在这种工作模式下的软路由既没有NAT也没有做路由,所以我更喜欢直接把它叫做是网关。这样做的好处是,配置起来相对简单,跑科学的时候不额外占用主路由的性能,你的软路由挂掉了之后不影响其他设备的互联网访问(特指需要特学的设备手动指定网关到路由器这种情况),你可以随时随地的折腾你的软路由,折腾到天崩地裂也不影响老婆看综艺孩子看汪汪队爸妈看连续剧IPTV。
当你折腾得差不多了,心里有数了,你就可以进一步地开搞了,比如让软路由负责拨号,替换掉原来的硬路由,硬路由只负责收发无线信号了。
4.稳定性
这一块不太好说,因为我觉得蛮稳定的,但是网上也有很多人说不稳定的。所以这也是为什么我建议首先从网关模式开搞的原因。目前常见的软路由基本上都是商家自己拼的,硬件的来源不确定性太多,散热、供电、网卡这些都是坑,所以很多人都被弄得有一点神经衰弱了,一旦网络有问题,就开始怀疑是不是软路由的锅,这也不全错,如果你把它当主路由来使,特别是塞进弱电箱用这种,它可能真的会不太稳定,硬路由还漏油呢,更何况X86的发热本来就大。
但从我的经验来看,软路由很稳,一旦你把它弄好了,你就别再去折腾它了,我大半年不重启不升级系统也跑得嗷嗷的,总的来说就是看脸呗,硬路由不同的人用起来稳定性也不一样,那软路由当然也会遇到这种情况。
5.更多玩法
如果你选择使用的是性能更好的X86设备,仅仅拿来跑个软路由对于性能又是一个很严重的浪费,那么你在对于软路由已经折腾得比较顺利的情况下就可以考虑一些进阶的玩法了,比如在Openwrt上跑跑Docker,PVE Esxi虚拟化跑个win liunux nas Emby啥的,都行,但是这里面所涉及到的知识点也比较多(网卡直通、显卡直通、硬盘直通各种直通),不过相关的教程也很多,你折腾会了软路由,这些东西也就是水到渠成的事情了,不会太超纲。
我目前的情况是这样的,发个拓扑图:
简单来说,就是搞了一台NUC8,装PVE在nvme SSD上,因为它本身是个完整的Debian,直接在PVE环境下部署了一个Emby,不用显卡直通就可以硬解,然后插了一个USB千兆网卡给Openwrt用(系统装在虚拟的硬盘上),win10装在了3.5的SSD上,平时跑跑PT,顺带远程桌面连回家,另外一个Linux(虚拟硬盘)没事的时候学习一下相关的命令,因为有快照功能,你在折腾前先创建一个快照,崩了直接恢复,相当方便。对了,AdguardHome也部署在这个Linux上,去去广告(其实是通过DNS解析实现的),另外京东自动签到领京豆也在这上面,我这个月已经领了快5000个了,2333
至于主路由, 是拆得只剩下主板的小米AC2100,Padavan固件很给力,内外网千兆都跑的嗷嗷的,cpu占用极低
另外两个路由器则负责收发无线信号,客厅的给爸妈孩子用,卧室的我和老婆用,因为3600覆盖很给力,也就没折腾mesh acap这些了
6.一些建议
如何入门?
直接用现成的电脑跑个虚拟机就可以入门了,但是涉及到虚拟机又是另外一个话题了,所以我建议怵虚拟机的朋友可以考虑直接用N1,便宜,玩法多,后期折腾明白了想换设备N1卖了不会亏太多,你不卖也能刷个小钢炮用来下载,刷个安卓TV用来看视频(有这方面的打算可以最开始就买一个T1的蓝牙遥控器),或者用来玩玩模拟器都可以。
几个网口够用?
我认为是两个,一个wan一个lan就够了,软路由的数据交换全靠cpu,你lan口多了也不见得是好事,但是如果你要跑虚拟机All in One的话,可以适当加一些网口,直通出去效能可能会好一点,但实际上我目前在用的NUC就一个网卡,跑这么多服务还是嗷嗷的,千兆科学+Emby一样没问题,CPU负载不到50%,所以只要你的CPU够强,网卡可以直接虚拟出来直接靠算力硬刚,没有太大问题,我接USB的网卡完全是因为之前害怕不行提前买回来了,那就插着用呗,但成品软路由不建议这么干,供电可能会有问题。
All in One好吗?
我感觉不太好,但是我目前也在这么用着,看上去挺矛盾的,其实主要原因是我还没找到适合我的设备把这些服务一个一个的分出去。为什么我会觉得不太好呢?大概心里因素占据了更多的原因吧,最开始NUC买回来是直接用Win10 屏蔽了自动更新然后用VmWare Player虚拟了Openwrt跑的,pt下载 迅雷下载 emby在win里,pt没速度了想要重启,一重启openwrt就没了,反正就是win环境下需要重启的因素太多了,一旦重启所有服务全部挂掉,这就让人很崩溃,但是换到PVE以后反而就没遇到这种问题了,所以我的建议大概率做不得数,自己权衡一下就好。
如果你还有什么别的看法欢迎留言一起讨论。如果您觉得这篇文章不错或者对你有帮助,还请关注点赞转发。原创不易,多谢支持。比心~