在家庭或企业宽带环境中,单线复用是一个非常常见的需求:
一根网线
普通上网使用一个 PPPoE
IPTV 使用运营商指定 VLAN(如 VLAN 45)单独 PPPoE
目标是:
在不增加物理线路的情况下,实现上网与 IPTV 业务完全隔离、互不影响。(去掉机顶盒)
┌────────────┐
│ 运营商网络 │
└──────┬─────┘
│
┌──────┴─────┐
│ 光猫 │
└──────┬─────┘
│ 单线
┌───────┴────────┐
│ OpenWrt 路由器 │
│ │
│ wan │
│ ├─ pppoe-wan → 普通上网
│ └─ wan.45 → VLAN 45
│ └─ pppoe-wan_v45 → IPTV
└───────┬────────┘
│
┌──────┴─────┐
│ 内网PC │
└────────────┘
1️⃣ 单线复用 ≠ 单 MAC
每一个 PPPoE 拨号必须使用不同的 MAC 地址:
普通上网 PPPoE:MAC A
IPTV PPPoE(VLAN 45):MAC B
否则常见问题包括:
拨号成功但业务异常
IPTV 播放几秒就断
认证通过但数据流异常
本方案 不使用:
iptables
policy routing
fwmark
仅通过 路由表 metric 区分流量出口:
0.0.0.0 via 普通上网 PPPoE metric 0 0.0.0.0 via IPTV PPPoE metric 30
业务特点:
IPTV 业务本身走运营商私网
不依赖复杂分流规则
路由清晰、稳定
异常表现
✅ PC 直接 PPPoE(VLAN 45)可以正常播放 IPTV
❌ 路由器 PPPoE(VLAN 45)无法播放 IPTV
✅ IPTV 内网 NTP 服务器始终可达
例如:124.232.139.1
这类现象非常具有迷惑性:
“能通、能 ping、能 NTP,但就是不能播放视频”
抓包验证 VLAN 45 是否正常
tcpdump -i wan -e vlan
观察到:
ethertype 802.1Q (0x8100), vlan 45, ethertype PPPoE
结论:
VLAN 45 打标签正常
回包进入内网前 标签被正确剥离
二层交换逻辑无误
tcpdump -i wan.45 pppoes or pppoed
可见完整流程:
PADI / PADO
PADR / PADS
说明:
VLAN 45 上 PPPoE 会话建立完全正常
PC 端(Windows 11)
MTU 探测:
ping 124.232.139.1 -f -l 1460 ✔ ping 124.232.139.1 -f -l 1464 ✘
计算:
1460 + 28 = 1488
➡ 实际可用 MTU = 1488
路由器端默认配置
option mtu '1492'
问题在于:
运营商网络并不保证返回 ICMP Fragment Needed
抓 PPPoE 接口
tcpdump -i pppoe-wan_v45 -n
当 MTU = 1492 时:
能看到:
TCP 建连
NTP / DNS
看不到:
持续大流量 IPTV 数据
表现为:
包发出
对端静默丢弃
无 ICMP 返回
这是标准的:
MTU Black Hole(MTU 黑洞)
IPTV PPPoE MTU 调整为 1488
config interface 'wan_v45' option proto 'pppoe' option device 'wan.45' option mtu '1488'
重新拨号:
ifdown wan_v45 && sleep 3 && ifup wan_v45
排查项结论VLAN 45 标签正常PPPoE 会话正常路由策略正常IPTV 异常原因MTU 黑洞最终 MTU1488