IPTV 异地二层桥接方案 - 完整配置文档

项目概述

将 A 端的 IPTV 信号通过公网 VPN 隧道透传到 B 端(异地),使得 B 端的 IPTV 机顶盒可以像在 A 端一样进行 PPPoE 拨号,正常观看直播和回看。核心采用 SoftEther VPN 的二层桥接功能,实现异地网络的无缝二层互通。

网络拓扑

【A 端(IPTV 源头)】
光猫(桥接) → 中兴路由器(PPPoE 拨号)
│
├─ LAN 口(上网,192.168.5.x)
└─ IPTV 口(专用 VLAN,连接服务器 enp9s0)
│
┌────┴────┐
│ Linux 服务器 │
│ - enp9s0:连接 IPTV 口
│ - enp8s0:连接局域网(192.168.5.x)
│ - SoftEther VPN Server
│ - 虚拟 HUB:iptv-iot
│ - 本地桥接:iptv-iot ↔ enp9s0
│ - 监听端口:5555(TCP)
│ - DDNS:dailys.top
└─────────┘
│
【公网 VPN 隧道】
│
【B 端(异地播放)】
┌────┴────┐
│ OpenWrt 路由器 │
│ - WAN 口:上网(DHCP)
│ - LAN 口:lan1~lan4(192.168.10.x)
│ - SoftEther VPN Client
│ - 虚拟网卡:vpn_vpn_iptv(TAP 模式)
│ - 桥接:br-iptv(lan1 + vpn_vpn_iptv)
└─────────┘
│
┌────┴────┐
│ IPTV 机顶盒 │
│ - 插入 lan1 口
│ - PPPoE 拨号(自动)
│ - 获取 IP:10.114.166.66
└─────────────┘
graph TB subgraph A端[A端] A_Modem[光猫<br>桥接模式] --> A_Router[中兴路由器<br>PPPoE拨号] A_Router --> A_LAN[LAN口<br>192.168.5.x] A_Router --> A_IPTV[IPTV口<br>VLAN专用] A_IPTV --> A_Server_eth9[服务器 enp9s0] A_Server[Linux服务器<br>SoftEther VPN Server<br>DDNS: dailys.top:5555] --> A_Server_eth8[enp8s0 连接局域网] A_LAN --> A_Server_eth8 end subgraph B端[B端] B_Router[OpenWrt路由器<br>SoftEther VPN Client] --> B_LAN[LAN口<br>192.168.10.x] B_Router --> B_IPTV_Port[lan1 口] B_IPTV_Port --> B_Stb[IPTV机顶盒<br>PPPoE拨号<br>获取IP: 10.114.166.66] end A_Server -.->|公网VPN隧道<br>TCP 5555| B_Router

A 端配置步骤(服务器)

1. 安装 SoftEther VPN Server

cd ~/install

wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.44-9807-rtm/softether-vpnserver-v4.44-9807-rtm-2025.04.16-linux-x64-64bit.tar.gz

tar xzvf softether-vpnserver-*.tar.gz

cd softether-vpnserver-v*

make

sudo ./vpnserver start

2. 初始化管理员密码(vpncmd)

sudo ./vpncmd

# 选择 1 (VPN Server 管理)

# 直接回车连接本地

ServerPasswordSet

# 输入并确认密码

3. 创建虚拟 HUB 并桥接到 IPTV 网卡

sudo ./vpncmd

# 选择 1,输入管理员密码

HubCreate iptv-iot

Hub iptv-iot

SecureNatDisable

BridgeCreate /DEVICE:enp9s0 /TAP:no

BridgeList

4. 创建 VPN 用户

UserCreate cascade_user /GROUP:bridge /REALNAME:bridge /NOTE:bridge

UserPasswordSet cascade_user

# 输入密码(如 123456),选择 standard

5. 开启 L2TP/IPsec

L2TPEnable yes

IPsecEnable /L2TP:yes /L2TPRAW:yes /ETHERIP:no /PSK:your_psk /DEFAULTHUB:iptv-iot

6. 开放防火墙与端口转发

# 服务器防火墙(firewall)
sudo firewall-cmd --add-port=5555/tcp --permanent
sudo firewall-cmd --reload
# 路由器端口转发:将公网 TCP 5555 和 UDP 500/4500/1701 转发到服务器内网 IP

---

B 端配置步骤(OpenWrt)

1. 安装 SoftEther VPN Client

apk update

apk add softethervpn-client
//我是京东云AX6600,自定义插件apk编译时集成

2. 启动客户端并设置开机自启

/etc/init.d/softethervpnclient start

/etc/init.d/softethervpnclient enable

3. 创建虚拟网卡和 VPN 连接

vpncmd

# 选择 2 (VPN Client 管理)
NicCreate vpn_iptv

AccountCreate vpn_account /SERVER:dailys.top:5555 /HUB:iptv-iot /USERNAME:cascade_user /NICNAME:vpn_iptv

AccountPasswordSet vpn_account

# 输入 standard,然后输入密码

AccountConnect vpn_account

AccountStatusGet vpn_account

4. 设置开机自动连接

AccountStartupSet vpn_account

5. 配置网桥 br-iptv

  1. 登录 LuCI

浏览器打开 http://192.168.10.1(或你的 B 端路由器 IP),输入密码登录。

  1. 进入设备配置页面

点击 网络(Network) → 接口(Interfaces),切换到 设备(Devices) 标签页。

  1. 添加新网桥设备

点击 添加设备(Add device)

设备类型(Device type):选择 网桥设备(Bridge device)

设备名称(Device name):填入 br-iptv

网桥端口(Bridge ports):

勾选物理端口 lan1(用于连接机顶盒)

勾选虚拟端口 vpn_vpn_iptv(VPN 虚拟网卡,如果列表中没有,先确认 VPN Client 已连接)

点击 保存(Save)

  1. 创建新接口(可选)

进入 网络(Network) → 接口(Interfaces)

点击 添加新接口(Add new interface)

名称(Name):iptv

协议(Protocol):选择 不配置协议(Unmanaged)

设备(Device):选择 br-iptv

点击 创建接口(Create interface)

在 防火墙设置(Firewall settings) 中,选择 新建(Create new),区域名称为 iptv,入站/出站/转发均设为 接受(Accept)

点击 保存并应用(Save & Apply)

  1. 确保 lan1 从 br-lan 中移除

回到 网络(Network) → 接口(Interfaces) → 设备(Devices)

找到 br-lan 设备,点击 配置(Configure)

在 网桥端口(Bridge ports) 列表中,取消勾选 lan1(如果之前有勾选)

点击 保存并应用(Save & Apply)

6. 重启网络服务

/etc/init.d/network restart

验证与测试

1. 检查 VPN 状态(B 端)

vpncmd

# 选择 2 -> AccountList

# 状态应为 Online

ifconfig vpn_vpn_iptv

2. 检查桥接状态(B 端)

brctl show

# 应看到 br-iptv 包含 lan1 和 vpn_vpn_iptv

3. A 端抓包验证 PPPoE 透传

在 A 端服务器执行:

sudo tcpdump -i enp9s0 -e -n -s 1500 ether proto 0x8863 or ether proto 0x8864

插拔 B 端机顶盒电源,观察输出应出现完整的 PPPoE 发现和 LCP 协商。

4. 认证成功标志

抓包中出现:

CHAP Success, Authentication success, Welcome!

IPCP Conf-Ack, IP 10.114.166.66

机顶盒指示灯变绿,电视画面正常播放。

---

最终成果

  • B 端 IPTV 机顶盒成功完成 PPPoE 拨号,获取 IP 10.114.166.66

  • 直播、回看、EPG 功能正常

关键要点总结

1. 二层桥接是核心,确保 PPPoE 广播帧完整透传。

3. 账号密码:必须与运营商记录一致。

4. 防火墙:A 端需开放 TCP 5555,B 端需允许 VPN 区域转发。

5. 端口转发:A 端路由器必须将公网对应端口转发到服务器内网 IP。

6. MTU:建议设置隧道 MTU 为 1400 左右。

参考资料

  • SoftEther VPN 官方文档:https://www.softether.org/

  • OpenWrt 网络配置:https://openwrt.org/docs/guide-user/network/start

春风花气馥,秋月寒江湛