2466 字 9 分钟阅读
单线复用改造家庭网络弱电箱布线
在装修时,只从弱电箱往客厅或各个房间预埋了单根网线,没有额外的回程线。这样一来,如果希望由软路由负责拨号、分流或透明代理,往往只能把设备塞进弱电箱。
问题也随之而来:弱电箱空间狭小、散热差、维护不便,而且软路由、交换机、光猫堆在一起之后,后期排障会非常痛苦。
单线复用的价值,就在于把一根物理网线同时承载 WAN 和 LAN 两类流量。做法并不复杂,本质上就是把这根线改造成 Trunk 干线,再借助 VLAN 将不同用途的流量隔离开。
1. 场景与目标
1.1. 原始问题
一个典型的场景:
- 弱电箱里有光猫;
- 弱电箱到客厅、房间 A、B、C 各只有一根网线;
- 希望软路由放在客厅,而不是继续闷在弱电箱里;
- 其他房间继续接 AP 或普通有线终端。
改造之前,网络是下面这样:
1.2. 改造目标
改造目标如下:
- 让光猫继续留在弱电箱;
- 让软路由移动到客厅或书房等更易维护的位置;
- 只使用原来那一根到客厅的网线,同时传递 WAN 与 LAN;
- 保持其他房间仍然是普通 LAN 接入口。
1.3. 方案本质
所谓“单线复用”,本质上是:
- 用 VLAN 10 承载 WAN;
- 用 VLAN 20 承载 LAN;
- 弱电箱到软路由之间的这根线工作在 Trunk 模式;
- 光猫口与各房间口继续使用 Untagged / Access 方式,不需要感知 VLAN。
即普通终端依旧像以前一样插网线就能用,而只有“中间那根关键干线”需要同时带多个 VLAN 标签,做到 WAN/LAN 复用一根线。
2. 网络拓扑设计
2.1. 使用管理交换机后的拓扑
这里以磊科 GS6 为例,思路如下:
P1接光猫;P2接客厅里的软路由上联口;P3、P4、P5接房间 A、B、C;P2为 Trunk 口,同时承载 VLAN 10 与 VLAN 20;P1只属于 WAN;P3~P5只属于 LAN。
对应拓扑如下:
2.2. 客厅软路由网关
我客厅里放的是一台多网口 Debian 12 软路由,例如 N100 小主机,那么可以直接在 Linux 侧拆分 VLAN。
Linux 系统配置思路如下(OpenWRT 实测相同也没问题):
enp1s0:接弱电箱交换机的 Trunk 口;enp1s0.10:WAN 子接口;enp1s0.20:LAN 子接口;br0:把enp1s0.20与本地 LAN 口桥接在一起;10.199.199.2/24:用于访问交换机管理地址10.199.199.199。
逻辑图如下:
3. VLAN 基础概念
3.1. VLAN、Untagged、Tagged、PVID 分别是什么
| 概念 | 含义 | 典型场景 | 本文作用 |
|---|---|---|---|
| VLAN | 二层隔离广播域 | 在同一交换机上分离 WAN 与 LAN | 用 VLAN 10 承载 WAN,用 VLAN 20 承载 LAN |
| Untagged | 出口不带 802.1Q 标签 | 接普通终端、光猫、家用 AP | P1 接光猫,P3 ~ P5 接房间设备 |
| Tagged | 出口保留 802.1Q 标签 | 接交换机、软路由、支持 VLAN 的网卡 | P2 作为 Trunk 干线 |
| PVID | 端口收到“未打标签”帧时,默认归入哪个 VLAN | Access 口入口分类 | P1=10,P3 ~ P5=20 |
| Not Member | 端口不属于该 VLAN | 隔离无关流量 | 避免 WAN 流量泄漏到 LAN 端口 |
这里要特别注意一点:
PVID 作用于 入口方向 的“未打标签帧归类”,而 出口是否剥离 VLAN 标签,则取决于该端口在该 VLAN 中是 Tagged 还是 Untagged。
3.2. 数据走向
WAN 流量
- 光猫发出的报文通常不带 VLAN 标签;
- 报文进入交换机
P1后,由于P1的PVID=10,因此被归入 VLAN 10; - 报文从
P2发往 Debian / 软路由时,因为P2在 VLAN 10 中是Tagged,所以报文会带上 VLAN 10 标签; - Debian 侧由
enp1s0.10接收并交给 WAN 侧逻辑处理。
LAN 流量
- 局域网流量由 Debian 的
br0发出; - 因为
br0里挂的是enp1s0.20,所以从上联发出去时天然属于 VLAN 20; - 交换机收到后,转发给
P3~P5时会剥离标签; - 房间里的 AP、PC、NAS 等终端看到的仍然是普通以太网口。
3.3. 保留交换机管理
我的交换机管理地址是 10.199.199.199,因此在 Debian 的 br0 上额外挂了一个 10.199.199.2/24。
这样做的好处是:
- 不需要单独再找一根管理线;
- 在 Debian 主机上就能直接访问交换机管理页面;
- 不影响原有
192.168.11.0/24的 LAN 使用。
4. GS6 的 VLAN 与 PVID 配置
4.1. VLAN 成员关系
如果仅考虑“光猫 + 客厅干线 + 三个房间”这一组端口,那么交换机上的 VLAN 配置可以整理成下面这样:
| VLAN ID | Member Ports | Tagged Ports | Untagged Ports | 用途 |
|---|---|---|---|---|
| 10 | 1, 2 | 2 | 1 | 光猫到软路由的 WAN 通道 |
| 20 | 2, 3, 4, 5 | 2 | 3, 4, 5 | 客厅与各房间共享的 LAN 通道 |
如果你的 GS6 还有其他空闲端口,需要加入局域网,通常直接把它们也加入 VLAN 20 的 Untagged 即可。
4.2. PVID 配置
对应的 PVID 可以参考下面的设置:
| Port | PVID | Accepted Frame Type | 说明 |
|---|---|---|---|
| 1 | 10 | all | 光猫口,未打标签流量默认归入 VLAN 10 |
| 2 | 1 | all | Trunk 口,主要依赖已打标签流量转发 |
| 3 | 20 | all | 房间 A,未打标签流量归入 VLAN 20 |
| 4 | 20 | all | 房间 B,未打标签流量归入 VLAN 20 |
| 5 | 20 | all | 房间 C,未打标签流量归入 VLAN 20 |
这里 P2 保留默认 PVID=1 是一种比较稳妥的做法:
- 对已经打了标签的 Trunk 流量没有影响;
- 可以避免误把未标记流量直接吞进 VLAN 20;
- 便于后期排查“到底是哪一端忘记打标签”这种问题。
5. Debian 12 Netplan 参考配置
下面是我当前 Debian 12 主机上的 Netplan 配置,作为完整参考:
network:
version: 2
renderer: networkd
ethernets:
enp1s0:
dhcp4: no
dhcp6: no
enp2s0:
dhcp4: no
dhcp6: no
enp3s0:
dhcp4: no
dhcp6: no
enp4s0:
dhcp4: no
dhcp6: no
vlans:
enp1s0.10:
id: 10
link: enp1s0
dhcp4: no
dhcp6: no
enp1s0.20:
id: 20
link: enp1s0
dhcp4: no
dhcp6: no
bridges:
br0:
interfaces:
- enp1s0.20
- enp2s0
- enp3s0
- enp4s0
addresses:
- 192.168.11.99/24
- 10.199.199.2/24
dhcp4: no
dhcp6: no
这份配置可以拆成三个关键点来看:
enp1s0 只作为 Trunk 母接口存在,物理口 enp1s0 本身不拿地址,而是作为 VLAN 的下层链路:
enp1s0.10对应 WAN;enp1s0.20对应 LAN。
这种写法和 Netplan 官方示例里的 “Create VLANs” 与 “Create a bridge with a VLAN” 是一致的:先定义 VLAN 子接口,再把需要的那个 VLAN 放进桥里。
br0 负责扩展 LAN 广播域,br0 把以下接口桥接在一起:
enp1s0.20:来自弱电箱 Trunk 的 LAN VLAN;enp2s0、enp3s0、enp4s0:Debian 主机本地的 LAN 物理口,此时可以理解为 LAN 口,也可以外接 ap 路由;
实现了以下设备处在同一个二层广播域中:
- 客厅或房间里的本地有线设备可接入;
- 其他房间通过交换机接入的 AP;
- 交换机管理地址;
10.199.199.2/24 是挂在现有 LAN 二层上的一个附加管理地址,用于方便各客户端访问交换机的管理 SVI 10.199.199.199。
这样设计的优点是简单、直接,缺点则是管理面没有再单独做一层 VLAN 隔离。如果后续设备规模扩大,或者希望把管理面与业务面彻底分离,再单独引入专门的管理 VLAN 会更清晰。
6. DHCP 与 DNS 服务
在软路由上,dnsmasq 承担了 DHCP 和 DNS 的角色。它监听在 br0 接口上,为局域网客户端分配 IP 地址并提供 DNS 解析缓存。
下面是 /etc/dnsmasq.conf 中的有效配置(省略注释):
interface=br0
dhcp-range=192.168.11.100,192.168.11.200,12h
dhcp-host=10:66:6a:d9:65:21,192.168.11.254,mihomo
dhcp-host=10:9f:4f:e6:6a:c7,192.168.11.10,AP-10,infinite
dhcp-host=10:9f:4f:c4:97:a5,192.168.11.11,AP-11,infinite
dhcp-host=dc:65:55:f5:ee:a5,192.168.11.12,AP-12,infinite
dhcp-option=3,192.168.11.99
dhcp-option=6,192.168.11.99
interface=br0表示 dnsmasq 只监听在桥接接口br0上,不会干扰 WAN 侧可能出现的 DHCP 请求。dhcp-range定义了动态分配范围:192.168.11.100 ~ 200,租约 12 小时。dhcp-host用于静态绑定:- mihomo 网关(
10:66:6a:d9:65:21)固定为192.168.11.254; - 三台 AP(AP-10 / AP-11 / AP-12)使用
infinite租约,避免无线客户端因 AP 重启而感知 IP 变化。
- mihomo 网关(
dhcp-option通知客户端:- option 3(网关)为
192.168.11.99(即软路由的br0地址); - option 6(DNS)也为
192.168.11.99,由 dnsmasq 本身提供 DNS 解析和缓存。
- option 3(网关)为
这样,局域网内的任意设备接入后就能自动获得 IP、网关和 DNS 信息,无需手动配置。
7. Q & A
7.1. 一根线解决 WAN / LAN?那在弱电箱和客厅各搭一个交换机一样?
不一样。关键在于普通交换机不具备 VLAN 隔离能力。
如果弱电箱和客厅各放一个普通交换机,那么从光猫进入的流量会与房间的 LAN 流量处于同一个广播域——WAN 和 LAN 就混在一起了,软路由无法通过单根线区分它们。
而本文的方案本质上是:
- 弱电箱端放的是管理交换机,通过 VLAN 10 / 20 把光猫和房间流量在二层隔离开;
- 客厅端由软路由的网卡直接识别
802.1Q标签,通过子接口拆出 WAN 和 LAN; - 中间的物理线只是一个 Trunk 载体,真正的隔离发生在两端的 VLAN 处理逻辑里。
所以不是"两端各一个交换机",而是"一端是管理交换机做端口分类,另一端是 VLAN 感知设备做标签拆解"。
7.2. 软路由必须具备 VLAN 处理能力吗?
是的,如果你的软路由、主机网卡、虚拟交换或上层系统根本不会识别 802.1Q 标签,那么弱电箱这端即便把 Trunk 配好了,客厅那端也接不住。
7.3. 带宽会共享同一根上联吗?
单线复用的代价是:WAN 和 LAN 会共同占用同一条物理上联带宽,所以我买的是 2.5G 网口的交换机和软路由。
暂无留言,来做第一个吧。