💬 前言
笔者前段时间研究和重构了一波家里的网络拓扑,暂时算是得到了一个还算满意的答案,这期就给大家分享一下目前我家的组网方案。
事先声明,本方案并非万能方案,不能保证一定能适配所有情况。
文章内推荐产品并不一定是该职能下的最优选择,也并非软广,所以也不会贴链接,读者可以自行寻找相同职能的设备。
本篇主要是讲各个关键逻辑节点的配置,物理拓扑以及接线请参考我的上篇文章。
⚙️ 配置
🧱 光猫
开桥接,其它什么都不用动。
🚪 主路由
- PPPoE拨号:略。
- DHCP预设IP范围:比如我主网段用的是
10.0.0.0/24,网关地址10.0.0.1,DHCP范围是10.0.0.11-10.0.0.254,预留了10.0.0.2-10.0.0.10作为主网关的静态服务地址。
- 静态路由:将内网网段的相关协议都路由到子网关IP。

- 端口转发:提前准备好公网访问内网服务的对外端口,主要是为了绕过运营商对 80 和 443 端口的封锁。

🛡️ DMZ反代+DDNS
- DDNS:要动态解析你的公网 IP 到域名解析服务商。
- 反代:主要是为了引导域名访问到 DMZ 或内网服务。反代地址直接填 IP+端口即可,DMZ 区的服务可以直接寻址,内网服务会通过刚才主路由的静态路由配置,转发到子路由,然后通过子路由的防火墙放行,转发到内网服务器端口。
具体可以参考我之前写的文章。
💻 子路由PVE
推荐把内网DNS服务器和软路由都装在这里,否则如果 DNS 服务器装在内网服务器的话,内网服务器关机可能会导致断网或网络不稳定。

笔者这里是还装了一个 Tailscale 载体,用来做虚拟组网协议转发,实现内网服务器可以使用虚拟网卡与远端 VPS 通过隧道交互,这样就可以把远端 VPS 的防火墙都关的差不多,提升远端 VPS 安全性。
网络设备稍微复杂一点,需要三个虚拟网桥:
vmbr0:从属子路由的物理 WAN 口,作为 WAN 口数据隧道。vmbr1:纯虚拟网桥,作为子路由 PVE 内部的 LAN 口主网桥,同时用于作为正常情况下的 PVE 管理口。这样 PVE 管理入口就放在了 LAN 侧,即使 DMZ 区被攻破,入侵者也无法从 DMZ 区嗅探到 PVE 的管理口。vmbr2:从属子路由的任意一个备用物理网口。主要是因为vmbr1的连通性依赖软路由虚拟机的健康,如果软路由虚拟机挂了,会因为无法进行消息转发而无法进入 PVE 管理后台,所以此处还要备用一个应急物理 PVE 后台入口,用来应对这种情况。

📡 DNS服务器
笔者这里使用的是 AdGuard Home,读者可以选择其它的 DNS 服务,逻辑类似。
这个负载不大,搞个 1核 512M内存 8G甚至 4G硬盘的 LXC 容器就非常够了。网络接到 vmbr1 即可。
上游服务器
配置国内常用公共 DNS 服务:
223.5.5.5
119.29.29.29
https://dns.alidns.com/dns-query
并勾选并行请求,提升 DNS 解析速度。
DNS过滤器
- 黑名单加入自己喜欢的库,但注意不要选太多,否则会加重 DNS 解析压力。笔者这里选择了 AdGuard DNS filter(必选),OISD Blocklist Big(据说还不错的一个超大名单),Peter Lowe's Blocklist(这个据说也还行),两个 CHN 开头的名单(中国特殊优化了属于是)。
- DNS重写增加自己要使用的局域网服务的域名。内网的指向内网反代 IP,DMZ 的直接指到该服务 IP 即可。可以直接写二级域名,比如
*.cylnb.com就可以代指所有此二级域名下的所有三级域名。
🔀 软路由
笔者这里是 OpenWrt,读者也可以选择其他的软路由系统,逻辑都是类似的。
这个是子路由的主要职能,所以可以多分点硬件。笔者这里是给了 4核 2G内存 64G硬盘,网桥接了 vmbr0 和 vmbr1 + 直通万兆口。
DHCP设置
- 进入 网络 -> 接口,首先分离出子网段,设置 LAN 口 IPv4 地址为子网段网关地址,比如笔者这里的子网段使用的是
10.1.1.0/24,网关地址我就设置成10.1.1.1,子网掩码设置为255.255.255.0即可。 - 另外 DHCP选项 需要新加一项
6,你的内网DNS服务器IP,这样 DHCP 就会把你的内网 DNS 服务器 IP 作为 DNS 服务解析 IP 发放给子网段内的设备了。 - 需要的话也可以在 DHCP服务器 -> IPv6设置 中的“通告 IPv4/6 DNS服务器”一项也加入你内网 DNS 服务器的 IPv6 地址,这样 IPv6 的 DNS 解析地址也可以下发了。
⚠️ 注意:如果你装了例如 PassWall 这种代理插件,可能会劫持你的 DNS 协议(即 53 端口的协议),可能会导致下发的 DNS 失效。此时需要改插件内的劫持 DNS 相关逻辑,此处不展开细说,简单来说就是劫持 DNS 时也劫持到内网 DNS 服务器即可。
设备
网络 -> 接口 -> 设备,打开 br-lan(也就是 LAN 口的虚拟网口),常规设备选项中,把 vmbr1 和直通的万兆口都加入网桥端口中,即把它们都划归到 LAN 方向。
DNS
- 网络 -> DNS -> 转发,把内网 DNS 服务器 IP 加入 DNS 转发一栏。这里似乎是 OpenWrt 自带的 DNS 劫持,笔者也不确定,总之写上不会错。
- 最后进入 Resolv 和 Hosts 文件页签,勾选 忽略解析文件。这里是为了忽略上游(比如主网关)下发的 DNS 服务器列表,从而能够彻底劫持 DNS 解析。
防火墙
常规设置跟我这个设置一样就可以,没记错的话默认应该就是这样的。

接下来要增加几个通信规则,自带的不用管,我们直接新增,主要是 Allow 开 DMZ 反代到内网服务的规则:
- 源区域:WAN
- 源地址:DMZ反代IP
- 目标区域:LAN
- 目标地址:内网服务IP
- 目标端口:内网服务端口
⚠️ 如果没有公网使用域名访问内网服务的需求,不推荐配置通信规则,会增加危险性。
📋 总结
至此子路由的关键设置就算设置完了,功能也都打通了。
其它一些细节设置,以及一些自身需求的自定义设置,比如像笔者这里的虚拟组网、代理插件,此处就不展开说了,有需求的读者自行探索即可。
⚠️ 注意:网络配置大多都有生效延迟,如果配置、保存并应用后没有生效,推荐重启路由器或终端设备再试,或者自行查询您设备的相关服务,用命令行重启相关服务更快捷。
🖥️ 内网服务PVE
这个主要参考我之前的 PVE 教程文章即可,主要是记得部署一个内网反代,用于在内网中使用域名访问内网服务。 懒得弄的话内网直接用 IP 访问也不是不行哈哈哈。
⚠️ 另外需要注意的是,不要把通网相关的服务部署在此 PVE 以内,否则这个 PVE 重启会导致全家断网,这就是不合理依赖了。
✍️ 结语
经过了接近 20 天的打磨和优化,还经历了诸如硬盘报废这种事情之后,这一波网络重构总算完成了。目前测试在局域网内使用 FnOS 上传下载可以轻松跑满 100MB/s,使用公网也可以轻松跑满千兆~
附加功能比如广告过滤、代理插件的使用也都还算比较满意。
甚至还可以通过插件来实现家庭网络中某应用的流量限制,比如每天晚上 8 点就把你家孩子抖音和王者的流量降到 10KB/s,她也不知道怎么回事儿~
瞎捣鼓真好玩啊,感谢老婆和家里人让我能完全躺平做自己想做的事儿~
