我的网络环境(2026)
前言
四年前写过一篇《我的网络环境》,当时折腾网络的起因是想用 J4125 跑 PVE 搞 PS5 直播。四年过去了,直播早就不搞了,但家里的网络环境跟着生活变化一直在演进。
这篇文章算是对这四年来网络变迁的一个记录。
ROS → iKuai
第一个变化是主路由。
2022 年用的 RouterOS,当时就吐槽过把登录密码忘了。用了一段时间后觉得 ROS 对我的家用场景太重了——我当时主要靠命令行配置,改个防火墙规则都得翻文档。后来换成了 iKuai,Web 界面点点就行,DHCP、流控、行为管理都是开箱即用。
OpenWrt 保留作为旁路由,只负责它擅长的事情。两者各司其职,iKuai 管路由和 DHCP,OpenWrt 管插件。
加入 MS-A1
后来入了一台 MS-A1,装了 PVE 跑虚拟机,上面有 Home Assistant 做智能家居、fnOS 当 NAS,还有一些其他服务。
当时的网络结构非常简单:J4125 WAN 口直连光猫,LAN 口只下挂了 MS-A1 和 K2P(当 AP 用),连交换机都不需要。
搬家
搬新家是网络环境变化最大的一次。
装修的时候做了一件正确的事:在弱电箱到各房间之间预埋了网线。书房、电视柜、厨房、两个卧室,各拉了一根。告别了之前到处拉明线的窘境。
光猫和 J4125 都在弱电箱里,J4125 LAN 口直接接到书房和电视柜,厨房和卧室的网口暂时预留。没有交换机,全靠 J4125 自带的网口。
K2P → TP-Link & 中兴
搬了新家后房间多了,无线覆盖成了问题。
一开始把跟了我好几年的矿渣 K2P 设成 AP 顶着用,但覆盖和性能都不够看了。后来新买了 TP-Link 和中兴的路由器当 AP,书房和电视柜各放一台,通过预埋网线接回弱电箱里的 J4125 LAN 口。覆盖问题彻底解决。
到这一步,网络拓扑大概是这样:
图中实线表示物理布线,虚线表示内部连接,不表示流量方向。LAN 侧按 PVE 网桥接入示意:iKuai 和 OpenWrt 的 LAN 虚拟网卡、物理 LAN 口都接到同一网桥。WAN 内部接入方式省略,不预设网桥或 PCI 直通。
网段统一 192.168.6.0/24,一个 VLAN 都不需要。这套方案跑了很长时间,稳定省心。
直到——要装 IPTV。
IPTV 来了
装 IPTV 这件事打破了原来简单的网络结构。
这里要解决的是光猫有独立 IPTV 口的接入场景:普通上网和 IPTV 分别从不同网口输出,机顶盒接 IPTV 口。要把两路业务放进家里同一根网线,就需要保持它们各自独立,避免把两边的 DHCP 和其他流量混在一起。
问题在于:光猫在弱电箱,机顶盒在客厅电视柜,中间只有一根网线。这根网线既要给 AP 走上网流量,又要给机顶盒走 IPTV 流量。
一根线,两路流量,我选择用 802.1Q VLAN Trunk 来复用。
解决方案有好几种,比如让软路由直接处理 VLAN 透传,但我选择了加网管交换机的方案——弱电箱一台,电视柜一台。这样机顶盒的 IPTV 链路只经过光猫和两台交换机,不依赖软路由转发,排查问题也方便。
J4125 WAN 口直连光猫这条线不用动,iKuai 继续做路由和 DHCP。另一个想实现的功能是让 OpenWrt 跑 udpxy,把 IPTV 组播转成局域网里的 HTTP 单播;这部分需要调整 PVE 网桥和 OpenWrt,能否播放还要验证当地运营商的接入条件。
下面按光猫 IPTV 口输出无 VLAN 标签、机顶盒也接收无标签报文的情况给出配置规划。实际出口是否带标签,需要先查看光猫端口配置,必要时抓包确认。
改造后的拓扑
下面把设备间的接线和 PVE 内部连接放在同一张图里:实线表示物理布线,虚线表示内部接入或虚拟网卡连接,均不表示流量方向。两条 Trunk 都承载 VLAN 1(无标签)和 VLAN 100(带标签)。IP 直接标在对应设备或 LAN 接口上,完整端口配置见后面的表格。
预留网口合并展示,对应 SW1 口4接厨房、口5接卧室1、口6接卧室2;它们各用一根网线。SW1 口7 和 SW2 口4–5 是空闲端口,图中省略。
WAN 口到 iKuai 的虚线只表示内部接入关系,不预设网桥或 PCI 直通方式。OpenWrt 的两张网卡分别接入家庭网络和 IPTV,192.168.6.3 只属于 LAN 网卡;IPTV 网卡的地址按实际接入情况确定。图中的 Tag 100 在 PVE 侧配置,OpenWrt 内不再重复打标签。iKuai 的 LAN 和 OpenWrt 的 LAN 网卡均接入家庭网络,不接入 IPTV VLAN。
VLAN 规划
这套家庭网络规划只需要两个 VLAN:
| VLAN ID | 用途 | 说明 |
|---|---|---|
| 1 | 家庭网络 | iKuai 管理的 192.168.6.0/24 网段,承载上网和局域网通信 |
| 100 | IPTV | 家里自定义的隔离网络,二层透传光猫 IPTV 口的流量 |
运营商侧的 VLAN 和家里的 VLAN 是两回事。 如果光猫 IPTV 口输出的是无标签报文,运营商侧的标签已经由光猫处理,家里的 VLAN ID 可以自行选择,不必与运营商相同。这里用 100 只是为了方便说明。如果光猫出口仍带标签,就要按实际标签和端口模式重新配置,不能直接套用下面的无标签接入口配置。
交换机界面不一定有 Access、Trunk 这样的选项,有些只提供 VLAN 成员、Tagged/Untagged 和 PVID。配置时需要同时检查这三项:
- Tagged / Untagged: 该 VLAN 的报文从端口发出时,保留还是去掉标签。
- PVID: 无标签报文从这个端口进入时,归入哪个 VLAN。
- 不加入: 端口不属于这个 VLAN,不转发该 VLAN 的流量。尤其要把 IPTV 接入口从默认 VLAN 1 中移除,不能只添加 VLAN 100。
下面两条 Trunk 都保留 VLAN 1 为无标签流量,只给 VLAN 100 加标签,两端配置一致。这样现有家庭网络可以保持原来的接入方式。具体概念可参考 TP-Link 的 802.1Q VLAN 配置说明。
弱电箱交换机(SW1)口分配
| 端口 | 用途 | VLAN 1 | VLAN 100 | PVID |
|---|---|---|---|---|
| 口1 | 光猫 IPTV 口 | 不加入 | Untagged | 100 |
| 口2 | J4125 物理 LAN 口,接入 PVE 网桥 | Untagged | Tagged | 1 |
| 口3 | 书房普通交换机 | Untagged | 不加入 | 1 |
| 口4 | 厨房(预留) | Untagged | 不加入 | 1 |
| 口5 | 卧室1(预留) | Untagged | 不加入 | 1 |
| 口6 | 卧室2(预留) | Untagged | 不加入 | 1 |
| 口7 | 预留 LAN 口 | Untagged | 不加入 | 1 |
| 口8 | 电视柜 SW2 上联 | Untagged | Tagged | 1 |
光猫上网口直连 J4125 WAN,不经过 SW1,不占用交换机端口。
电视柜交换机(SW2)口分配
| 端口 | 用途 | VLAN 1 | VLAN 100 | PVID |
|---|---|---|---|---|
| 口1 | 上联 SW1 | Untagged | Tagged | 1 |
| 口2 | AP | Untagged | 不加入 | 1 |
| 口3 | IPTV 机顶盒 | 不加入 | Untagged | 100 |
| 口4-5 | 预留 LAN 口 | Untagged | 不加入 | 1 |
两台交换机的管理接口仍接入家庭网络 VLAN 1。
几个细节
接线改动不多。 弱电箱加一台网管交换机(SW1),电视柜加一台网管交换机(SW2),光猫 IPTV 口拉一根短线到 SW1,J4125 LAN 口从直连改接 SW1。J4125 WAN 口直连光猫不变。
Trunk 接到 PVE 网桥。 J4125 的对应物理 LAN 口应接入启用了 VLAN aware 的 PVE 网桥,并允许 VLAN 1 和 VLAN 100 通过。PVE 管理口、iKuai LAN 和 OpenWrt 原有 LAN 网卡继续使用原来的无标签家庭网络。给 OpenWrt 增加第二张虚拟网卡,接到同一网桥,在 PVE 中设置 VLAN Tag = 100。标签由 PVE 处理,OpenWrt 内看到的是普通网卡,不要再给它重复套一层 VLAN 100。具体机制见 Proxmox 网络配置文档。
这里有个前提:这张物理 LAN 网卡由 PVE 管理。如果它目前是 PCI 直通给 iKuai 的,就不能直接这样共享给 OpenWrt,需要先调整为 PVE 网桥,或者另用一个物理口接入 IPTV。iKuai 的路由逻辑可以保持不变,但不能说 PVE 和 OpenWrt 也完全不用改。
udpxy 需要主动订阅组播。 OpenWrt 上的 udpxy 收到客户端请求后,通过指定的 IPTV 接口订阅对应组播,再把收到的数据转成 HTTP 单播。接收接口指定为新增的 IPTV 网卡,HTTP 服务监听家庭网络地址 192.168.6.3:4022;它不负责转码,也不负责解密。参数和请求格式见 udpxy 官方手册。
所以机顶盒能看,不等于装上 udpxy 就一定能看。还需要确认 OpenWrt 的 IPTV 接口能完成当地运营商要求的接入、取得所需地址,是否需要特殊 DHCP 参数或其他认证,以及是否有可用的组播频道地址。IPTV 接口要独立配置,不加入 br-lan,不开 DHCP 服务;如果通过 DHCP 获取地址,不要让它下发的默认路由和 DNS 覆盖原来的上网配置。防火墙也需要允许 IPTV 接口上的必要 IGMP、组播 UDP,以及家庭网络访问 udpxy 的 HTTP 端口。
这些条件满足后,局域网设备可以用 VLC 等支持对应流格式和编码的播放器打开 http://192.168.6.3:4022/udp/组播地址:端口。这部分提供的是可接收、可解码的直播流,不能据此认为机顶盒的认证、点播和回看功能也能一起替代。
组播还要检查 IGMP。 VLAN 负责把 IPTV 和家庭网络隔开,IGMP Snooping 负责在 IPTV VLAN 内按订阅关系转发组播。可以在两台交换机的 VLAN 100 上启用 Snooping,但要确认上游 IGMP Query 能到达、通向光猫的上联能正确识别为组播路由器端口。PVE 网桥如果启用了组播侦听,也要检查虚拟网卡这一段的转发。
先确认现有查询器,再决定是否补充 Querier,不要盲目打开多个查询器或在承载多个接收者的端口上开启快速离开。测试时除了看能否出画面,还要持续播放、反复切台,并检查机顶盒和 udpxy 同时观看时是否互相影响。相关行为可参考 TP-Link 的组播配置说明。
机顶盒走独立的二层路径。 机顶盒的 IPTV 链路经过两台交换机,不经过 J4125。按这个接法,J4125 重启不会切断机顶盒到光猫 IPTV 口的链路;udpxy 则依赖 PVE 和 OpenWrt 正常运行。
IPTV 流量的两条路径:
- 机顶盒: 光猫 IPTV 口 → SW1 → Trunk → SW2 → 机顶盒(二层直通)
- 使用 udpxy 的设备: 光猫 IPTV 口 → SW1 → Trunk → PVE 网桥 → OpenWrt IPTV 网卡 → udpxy → OpenWrt LAN 网卡 → 家庭网络 → 播放器
书房交换机不用换。 书房只接入家庭网络,不需要透传 IPTV VLAN,普通交换机足够。
分两步验证
实施时先把机顶盒的二层路径跑通,再加 udpxy:
- 先确认机顶盒直连光猫 IPTV 口时,直播、切台、点播和回看正常;再接入两台交换机,验证这些功能和长时间播放,检查 AP 上网以及交换机管理地址是否正常。这一步不需要把 IPTV VLAN 接入 PVE。
- 再配置 J4125 到 SW1 的 Trunk、PVE 网桥和 OpenWrt 的 IPTV 网卡,验证接入、组播订阅和 HTTP 播放,最后测试机顶盒与 udpxy 同时观看、切台的情况。
这样哪一步出问题就查哪一段,不用把光猫、交换机和软路由一起翻个底朝天。交换机配置确认后记得保存,重启后再检查一次。
后记
回头看这四年,网络架构的每一次变化都是被实际需求推着走的:ROS 不好用了换 iKuai,需要算力了上 MS-A1,搬家了重新布线加 AP,想看电视了搞 IPTV。没有一次是"为了折腾而折腾"——好吧,也许有一点。
弱电箱这个东西,永远比你想象的小。每次往里塞设备都是一场空间管理的战斗。