前言
整个 2020 年一直在更新和优化自己的家庭网络,从Merlin
系统转到OpenWrt
在转到ROS + OpenWrt
双软路由,最终到ROS + 多个 OpenWrt
的终极环境.在稳定运行了近半年后,将整套方案在复制到父母家里.借此机会给大家分享下我在家里部署的硬件及软件的家庭网络方案.
写在前面
为了您的身心健康,阅读前请注意:
- 本文无任何详细安装配置教程
- 本文为博主分享个人家庭组网的
规划
和方案设计
- 本文含有博主大量
主观功能需求
和现实环境需求
,并伴有严重的强迫症. - 对大多数人来说本文毫无意义,可能全是废话.请慎重阅读.
本文方案适用于什么用户?
- 在需求层面:适用于打算新装修或者想改造现有家庭网络环境的用户,可以通过本文学习如何规划和设计自己的家庭网络.
- 在技术层面:适用于已经在用
OpenWrt
等固件的软路由用户.已经了解PPPoE/DNS/DHCP/网关/内网IP/公网IP
等基础网络知识. - 本文并不适合于仅使用过品牌路由器并且毫无计算机和网络基础知识的新手用户.
拓扑图
先附上一张博主家庭网络的拓扑图,看似复杂,其实是非常简单和规范的网络规划.供大家参考.
装修布线和设备
博主家里装修就是以AC + AP
标准的有线网络来设计的.因为家庭网络中无论如何有线连接是绝对好与无线连接,所以在非移动的大型设备处一定要规划好有线网络.
确定设备位置
根据拓扑图可以看出,博主规划的物理位置分为三大块,分别为弱电箱
,数据中心机柜
.各房间有线面板
,需要提前考虑好每个地方需要放置什么设备.例如,电脑,NAS,打印机,电视,各种电视盒子,游戏机等等.甚至要为未来 10 年打算购买的设备留好多余的接口,也可作为冗余备用.
- 弱电箱 - 电信光纤入户弱电箱.由于弱电箱太小,不足以放置更多设备.仅仅只用于放光猫.
- 数据中心 - 选择一个合适的地方,放置
路由器,交换机,AC,NAS,USP
等设备.方便管理. - 面板和 AP - 确定好每个房间有线接入点,用于网线面板和 AP 面板
(有吊顶强烈推荐吸顶式 AP)
.
确定布线方案
- 弱电箱分配
1-2
根网线到数据中心,用于路由器拨号,预留两根冗余. - 弱电箱分配
1-2
根网线到需要ITV
的地方,例如客厅,预留两根冗余. - 数据中心分配
其他所有
网线到各房间,用于有线面板和 AP 面板. - 吸顶式 AP 用户记得吊顶内预留网线
确定硬件设备
- 光猫 - 运营商赠送设备并设置
桥接模式
用于光电转换 - 路由器 - 主路由器或者其他软路由, ESXi 主机等
- 交换机 - 千兆 POE 交换机 (接口数量根据自己所需端口决定)
- AC + AP - 选择一套合适的品牌 (博主目前使用的是 TP 的)
网络规划
本文的核心在于规划和设计网络结构,主要分为硬件功能规划
和软件网络设计
.博主由于从事于商用 IT 相关行业,所以特别认可专业的事情专业设备来干.所以在设计本方案时就必须考虑到如果整个方案中的某一项硬件出现故障,是否能以最快的时间和最易的方法来解决,同时要保证不能影响到所有已连接的设备(即恢复网络后各客户端无需任何修改设置).
硬件功能规划
网络硬件设备根据上述确定硬件设备
提到的4
组硬件,可以分为外网端和内网端:
光猫
和路由器
属于外网端,用于外网访问.交换机
和AC + AP
属于内网端,用于搭建整个内网.
这样的设计有利于网络的升级,维护和故障排查:
- 当外网访问有问题时,可以直接在
光猫
和路由器
中找问题.光猫坏了换光猫,路由器坏了换路由器,经过最基础的配置即可恢复整个网络.所有客户端都无需任何修改. - 当内网相互传输通信有问题时,可以在
交换机
和AC + AP
中找问题.交换机坏了换交换机.AP
坏了直接换AP
,直接通过AC
添加到现有无线网络中.
所以即使你的路由器有多余的口,博主也并不推荐把终端设备的有线直接接到路由器上,而是统一连接到交换机上,在由交换机连入到路由器中.这样即使路由器出现问题,也并不会影响内网,依旧可以在电视和电脑上访问 NAS 看电影.
软件功能规划
软件功能的规划也是整个家庭网络中的核心,几乎所有服务都要在路由器中提供,包括并不限于PPPoE 拨号,DNS 服务器,DHCP 服务器,DDNS 动态域名解析服务,端口转发
等基础服务,使用 OpenWrt 路由器还可以提供文件存储,文件分享,去广告,下载,Docker,科学上网,VPN
等各种个性化服务来提升家庭网络的可玩性.
OpenWrt
单独一台运行 OpenWrt 固件的设备作为路由器即可使用上述所有功能.
ROS + OpenWrt
双软路由模式即,让ROS
作为核心路由器,仅提供上述提到的网络基础服务,保持稳定高效. OpenWrt
作为旁路由
来做辅助工作,提供上述的个性化服务.
ROS + 多个软路由或虚拟机组合
在功能上和上述双软路由模式几乎相同,所以并不是必须的选择,常规情况下选择双路由模式即可.
博主选择此方案有大量主观的需求,有兴趣的可以继续看下文中的详细讲述.
博主选择使用
ROS
作为主路由器也是因为受到各路大神和油管博主们的推荐而尝试的,体验半年多感觉非常稳定,占用资源小,转发能力高.但
ROS
也并不是唯一的选择,还有例如老毛子
,爱快
等其他优秀的路由固件选择,当然也能够使用强劲的品牌路由器作为主路由,完全根据你的功能需求和喜好决定.
ROS + OpenWrt + AdGuard Home 方案详解
方案简介
博主家庭网络中路由器
这一设备是采用一台联想m720q + i350 T4v2网卡
.在该主机上安装了 ESXi 虚拟机平台,最后在 ESXi 中安装了以下5
台虚拟机,并提前规划好对应的固定 IP :
- 192.168.1.1 - ROS 作为主路由器
- 192.168.1.2 - Proxy 作为科学上网网关
- 192.168.1.3 - DNS 作为 DNS 服务器
- 192.168.1.4 - DDNS 作为 DDNS 动态域名服务器
- 192.168.1.5 - VPN 作为 OpenconnectVPN 服务器
ROS
ROS 作为主路由器,主要作为连接光猫提供PPPoE 拨号
上网功能,同时提供DHCP 服务
和负责管理端口转发
服务.
- 本设备的内网 IP 为
192.168.1.1
. - 本设备的 DNS 指向类似
114.114.114.114
的公共 DNS 供国内域名解析,或者运营商提供的 DNS 服务器地址以确保速度最快.
DHCP 分配
IP地址/网关/DNS
.所以需要注意请关闭所有其他 OpenWrt 内的 DHCP 功能.
- 分配 IP 池设置为
192.168.1.21 - 192.168.1.200
,剩下的 IP 地址可以预留给其他需要固定 IP 的设备,例如打印机,NAS,AP等等. - 网关 设置为
192.168.1.2
的 Proxy 旁路由.所有访问流量将先由 Proxy 处理分流,在走向 ROS 主路由. - DNS 设置为
192.168.1.3
的 DNS 服务器.装有 Adguard Home 的 DNS 服务器提供最前置
的广告过滤和DNS 缓存
.
Proxy
OpenWrt 作为主要的科学上网网关,提供科学上网分流服务,主要依靠插件来处理分流工作:
- 本设备的内网 IP 为
192.168.1.2
. - 本设备的网关指向
192.168.1.1
的ROS
. - 本设备的 DNS 指向
192.168.1.1
的ROS
. - 配置好科学上网插件提供上网分流服务.
当客户端访问请求为国内网站,将直接转发至
1.1
的ROS
主路由器进行访问.当访问请求为国外网站,将先经过插件进行TCP DNS查询
并返回真实 DNS 结果
,然后在依靠插件进行代理访问
.完全避免了DNS 污染
.
DNS
由一台 Linux 服务器部署 docker 版的 AdGuard Home,提供广告过滤和 DNS 缓存服务.
- 本设备的内网 IP 为
192.168.1.3
. - 本设备的网关指向
192.168.1.2
的Proxy
. - 本设备的 DNS 指向
192.168.1.1
的ROS
.
博主规划和配置 DNS 花费了几个月的时间来测试到底将 AdGuard Home 放在局域网的哪个环节更合适.最终还是选择将
ADG
放在最前端,并把上游 DNS 服务器
设置为Proxy
的内网 IP .这样无论境内还是境外网站会先由ADG
中的规则来过滤,在将过滤后必要的DNS 请求
发送至Proxy
,并由科学上网插件进行TCP DNS查询
返回真实 DNS 结果
以达到最快的解析速度和避免DNS 污染
关于上图的平均处理时间
这几个月折腾 DNS 主要就是为了提高 DNS 解析的速度,博主的方案是能够将平均处理时间降低到5ms
内,但是此处理时间并不仅仅是外网 DNS 的解析速度,还包含了返回结果给客户端.博主家中由于户型奇葩等客观原因,多个 AP 都被临时挡住,导致无线设备 Ping 路由器或者 DNS 服务器时很不稳定,此环节导致平均处理时间大增.同时好的科学上网环境也是降低处理时间的关键因素.
DDNS
使用一台 OpenWrt 作为 DDNS 功能型服务器,由于有内网设备的外网访问需求,而一些其他的 DDNS 服务有可能错误的解析为科学上网的 IP ,所以博主才单独的部署一台设备来做服务.同时该服务无任何科学上网需求.
- 本设备的内网 IP 为
192.168.1.4
. - 本设备的网关指向
192.168.1.1
的ROS
. - 本设备的 DNS 指向
192.168.1.1
的ROS
.
DDNS 只是动态域名解析的一个功能需求,可以在任何一台 OpenWrt 或者群晖 NAS 上来实现,但是为了避免识别错误的境外 IP 的情况,博主选择了单独的 OpenWrt 来配置,并且无需任何科学上网,所以 网关/DNS 都可以直接设置为 ROS 的地址,所以即使科学上网受到影响也不会影响此 DDNS 服务.
VPN
此需求纯属博主个人需求,由于家庭网络环境优化的非常稳定,并且需要经常访问内网 NAS 和内网 ESXi 虚拟机上的其他 Linux 服务器来折腾.所以在外或公司通过VPN
服务连接回家是最好的解决方案.目前家用宽带30M
的上行速率也基本满足日常使用需求.
- 本设备的内网 IP 为
192.168.1.5
. - 本设备的网关指向
192.168.1.2
的Proxy
. - 本设备的 DNS 指向
192.168.1.3
的DNS
.
由于有频繁的回家访问的需求,所以 VPN 需单独部署为一台服务器.这样在进行其他虚拟机配置,升级导致重启时也不会影响 VPN 的连接.回家访问的同时还需要科学上网,所以网关指向
Proxy/1.2
, DNS 由Openconnect VPN
中来设置为DNS/1.3
.
主观方案总结:
以上5
台虚拟机来部署整个路由器环境的目的是为分离各功能点,方便排查和维护各项服务,同时在配置,升级或维护某些服务时,并不会影响整个网络.
国内访问流程:
当访问国内网站时,首先 DNS 请求会走向DNS/1.3
进行过滤,在转到Proxy/1.2
进行境内外分流处理,境内 DNS 请求在转发至ROS/1.1
最后得到返回的 DNS 结果.由网关Proxy/1.2
进行访问分流,在转发至ROS/1.1
进行网站的访问.
国外访问流程:
当访问国外网站时,首先 DNS 请求会走向DNS/1.3
进行过滤,在转到Proxy/1.2
进行境内外分流处理,境外 DNS 请求将由插件进行TCP DNS查询
避免DNS 污染
返回真实的 DNS 结果
由网关Proxy/1.2
进行访问分流,通过科学上网插件进行网站的访问.
维护时切换网关和DNS
当需要维护科学上网或 DNS 时,为了避免其他客户端收到影响,可以将ROS
主路由的 DHCP 功能中的网关修改为ROS/1.1
,DNS 修改为ROS/1.1
,此时你家庭的整个网络就恢复成单路由的状态,对于基本的国内访问没有任何影响.
主路由的重要性
从上文可以看出,家庭网络最重要的就是ROS
这台主路由了,它负责处理了所有的网络核心功能.请不要折腾它,同时使用其他服务器来提供类似 DDNS VPN 这样的服务.这样当ROS
挂掉时,可以以最快的方式用一台任意路由器来替代这些核心功能.也就不会影响其他服务和客户端连接.
结语
家庭网络的设计规划到此也告一段落,博主也稳定的使用了近半年,才想将一些规划和思路分享出来,希望对大家有所启发和帮助.如果在后期需要任何功能,可以直接在 ESXi 中添加辅助的服务器虚拟机来完成.
感谢
特别感谢@jasuit
在我折腾的这近一年中提供的技术支持,也感谢以下几位油管博主的技术视频:洋葱
Vedio Talk
eSir PlayGround
关于 AC + AP 和 mesh 博主的观点.
早年装修时就选定了 AC + AP 的无线漫游方案.博主并没有任何使用过 mesh 的经验,所以本文也不会讨论 mesh 相关内容.
对于 mesh 博主一向的观点是市场根据大众用户家庭装修没有很好的规划预留网线的前提下推出的一种漫游方式.然而在国内有这种需求的用户占据绝大部分.所以本身 mesh 是基于此环境下的最好解决方案.
但是如果可以选择在装修时预留网线,那么 AC + AP 绝对是首选.
也有人会说到 mesh 也可以有线回传,我想说的是能够有线回传的 mesh 本身就属于 AC + AP 的模式,只是此时你的 AP 就是那台有线回传的 mesh 路由器.
传统 AC + AP 模式同样可以将 AP 端使用高端无线路由器来替代以达到更好的无线信号.然而成本过高,并且浪费了高端路由器的其他功能.
38 条评论
大佬,mosdns+adguardhome的组合,和你这个方案的组合,哪个比较好?
感谢分享!我现在就是按你这个思路来配置的,想问一下openwrt用哪一个插件做分流的呢?能有个教程吗?
Bootstrap DNS 服务器怎么设置?
这个随意.设置个公共dns就可以,比如 114.114.114.114
要是能出个详细的教程就好了。
你可以搜索下.
参考
https://www.ioiox.com/archives/96.html
这个all in one是不是有点问题,openwrt挂了对应设备就完全上不了网了
维护时切换网关和DNS 已经连接的设备 除非租约到期是不会更新的,这个时间也会影响上网。
针对网关我目前在ros和openwrt用vrrp来解决,博主可以参考下。但是dns我目前也没想到好办法。
我觉得折腾最终目标是要实现网关高可用(openwrt挂了网络也能正常使用),dns高可用:openwrt挂了,国内dns跟上
DNS也可以这么用,或者说所有ROS可以临时承担的必须服务都可以用VRRP实现,VRRP允许单台设备加入多个不同的VRRP组,所以你可以:
Proxy-虚拟化ROS一组,
DNS-虚拟化ROS一组,
虚拟化ROS-硬件ROS一组,
这样无论哪一组挂了都可以直接切换到另一台设备上整
因为核心都是ROS,所以关注一下ROS本身的VRRP特性:ROS的VRRP配置中有在当前VRRP组该设备成为master/backup时执行脚本,可以直接写ros脚本处理相关问题
租约问题我倒是没发现过.因为我尝试在 ROS 里修改网关,我的设备几乎都是秒切.
实在不行尝试重启下 AP ROS 之类试试看.
高可用当然是最好,只是还没研究过.欢迎深入交流.
我现在已经用VRRP比较完美的解决了这个问题了。前两天说dns没有好办法是因为ROS的防火墙拦截了vrrp接口的流量,现在放行就没问题了。
方案是这样的:
1、ros为192.68.88.1提供DNS服务,openwrt为192.168.88.2提供DNS服务且具备DNS分流功能
2、ros和openwrt使用vrrp虚拟一个VIP:192.168.88.8;
3、vrrp中ros优先级100 ;openwrt优先级120
4、ros给特定设备dhcp option 的网关指向vip,dns也指向vip
实现效果:
ros为硬路由常年不调整关机,openwrt日常折腾,重启过程中ros自动升级为master,不影响特定设备上网
不知道我这样讲说明白没。
大佬新年好,能指导一下不,openert设置vrrp之后,ros发现不了。邮箱:meheh@qq.com。感谢大佬!
可能是配置问题,网上的教程有问题,还是官方文档靠谱。
https://openwrt.org/docs/guide-user/network/high-availability 参考第三点
To ensure
/etc/init.d/keepalived
script starts the daemon pointed at your config.write the following in
/etc/config/keepalived
:config global_defs
option alt_config_file "/etc/keepalived/keepalived.conf"
This will tell the keepalived service to use the configuration file you wrote at /etc/keepalived/keepalived.conf
国外通,国内不通怎么回事?用的爱快,openwrt,adguardhome.插件用的helloword