• 参考
  1. 家庭组网深入玩法:单线复用(VLAN) ── 拨号上网+局域网+IPTV - https://www.bilibili.com/video/BV1qV4y147TF
  2. OpenWRT 中 vlan 的使用 - https://www.openwrt.pro/post-574.html
  3. Openwrt没有“交换机”的解决方式
  1. https://www.right.com.cn/forum/thread-8224749-1-1.html
  2. https://www.right.com.cn/forum/thread-5807504-1-1.html


文章目录

  • 目标
  • 概念: vlan
  • 准备
  • # 光猫超级用户、密码
  • # 备份
  • # 光猫桥接改vlan桥接
  • # 光猫iptv 改 vlan iptv
  • # 光猫vlan绑定设置
  • 设置Openwrt ── 收发流量数据
  • # 设置单臂路由(新版固件:22.03、21.02)
  • # 设置IPTV(新版固件:22.03、21.02)
  • # 设置单臂路由(旧版固件:19.07)
  • # 设置IPTV(旧版固件:19.07)
  • # 设置单臂路由(旧版固件:19.07 - 交换机)


目标

希望组成的网络拓扑图:

主路由桥接线路要承担的任务:

  1. 拨号上网
  2. 局域网 ── 主路由成功上网后,将网络回传到光猫交换机上,使其他网口同样正常通过主路由上网
  3. IPTV专线 ── 向下连接IPTV机顶盒承担IPTV的数据流量

android 爱心呼吸 联通iptv拨号_android 爱心呼吸

概念: vlan

这种单线复用通常Vlan实现,但是vlan有个问题: 网络隔离 ── 两个vlan间数据不能互通,尽管它们在同一个交换机下

android 爱心呼吸 联通iptv拨号_单线复用_02


android 爱心呼吸 联通iptv拨号_openwrt_03

💡一个重要概念要知道:

  • vlan id ── 带同一个vlan id是可以互访的。
  • 对口对于vlan有三种状态:关闭、未标记、已标记
  • 正常流量: 当正常流量进入端口且被标记,在出端口时,流量只有与“已标记”的端口匹配成功才能被放行,否则就会直接被丢弃
  • 有标记的流量: 当有标记的流量进入端口,只有匹配的端口才会接收。且在出端口时,流量只有与“已标记”的端口匹配成功才能被放行,否则就会直接被丢弃

android 爱心呼吸 联通iptv拨号_openwrt_04

准备

目标是把光猫的lan1端口可以提供

  1. 拨号上网业务用的vlan1623 (⚠️vlan id随你自己的光猫)
  2. iptv专线用的vlan4017 (⚠️vlan id随你自己的光猫)
  3. 正常的数据流量 native vlan

下面一步步实现

# 光猫超级用户、密码

常见的超级用户密码

移动

CMCCAdmin/aDm8H%MdA

电信

telecomadmin/admintelecom

telecomadmin/nE7jA%5m

# 备份

备份
备份
备份
备份

改每一步前,要备注原先配置。否则配置搞乱了,就只能叫运营商的人来了

# 光猫桥接改vlan桥接

💡网络拓扑图

原先 桥接
运营商 vlan id 1623 internet业务
↓ 流量 vlan id 1623
光猫 vlan id 1623 标记
↓ 流量 vlan id 1623
光猫 端口绑定 lan1
↓ 流量 正常流量

后来

除了端口取消为vlan模式,其他默认既可

⚠️vlan id因人而异,你自己原先是啥就是啥,不能乱改。(如有的是45)

android 爱心呼吸 联通iptv拨号_iptv_05

android 爱心呼吸 联通iptv拨号_iptv_06


💡vlan 模式 tag (标记模式)

💡组播一般不用设置,一般在iptv业务才需要

# 光猫iptv 改 vlan iptv

除了端口取消为vlan模式,其他默认既可

⚠️vlan id因人而异,你自己原先是啥就是啥,不能乱改。(如有的是48)

android 爱心呼吸 联通iptv拨号_单线复用_07

💡vlan 模式 tag (标记模式)

💡有人测试,不要组播设置也能iptv

# 光猫vlan绑定设置

android 爱心呼吸 联通iptv拨号_vlan_08

android 爱心呼吸 联通iptv拨号_iptv_09

  1. “端口模式”选择“vlan绑定”
  2. 选中需要单线复用的端口,如lan1
  3. 绑定vlan对需要把前面业务的vlan id跟端口的vlan id绑成一样的数字既可
    💡这样,从lan1端口出来的数据就会vlan 1623(已标记)、vlan4017(已标记)以及正常的数据流量

💡还有一种vlan绑定是可以直接选择业务端口的,那就直接选既可

android 爱心呼吸 联通iptv拨号_android 爱心呼吸_10

💡如果光猫有“lan工作模式”的设置,一定要把所有端口都勾选。
(这个主要是为了插上光纤连通后,还可以登录光猫的管理界面)

android 爱心呼吸 联通iptv拨号_vlan_11

💡尽量把光猫的地址设置成主路由的局域网网段内的地址,方便以后在局域网内直接管理光猫
⚠️禁用DHCP Server

android 爱心呼吸 联通iptv拨号_android 爱心呼吸_12

设置Openwrt ── 收发流量数据

# 设置单臂路由(新版固件:22.03、21.02)

为了方便排查问题,先弄好单臂路由

android 爱心呼吸 联通iptv拨号_vlan_13

先创建两个虚拟端口,用以收发上层光猫的vlan数据和正常数据

虚拟端口1

android 爱心呼吸 联通iptv拨号_openwrt_14

创建虚拟端口,同时与物理端口绑定

android 爱心呼吸 联通iptv拨号_iptv_15

设置vlan id,其中不同vlan id有不同vlan过滤规则

  • vlan id=1,vlan过滤为“未标记” ── 收发上层光猫交换机传输的正常数据 (💡vlan id可以随便写,只要vlan过滤为“未标记”既可,这样流量从这个口进入,出去的都是正常流量)
  • vlan id=1623,vlan过滤为“已标记” ── 收发上层光猫的vlan id=1623数据 (⚠️这里的1623需要与光猫上的vlan1623编号上保持一致,用于pppoe拨号上网)

android 爱心呼吸 联通iptv拨号_iptv_16

配置br-lan设备

br-lan设备用于沟通内网网络的。

这里在“网桥端口”中添加两个端口

  1. eth0 ── 内网端口
  2. hanfen.1 ── 刚创建的(vlan id=1,vlan过滤为“未标记”)端口,用于收发上层光猫lan端口的正常流量

这个操作就是把上传路由端口也纳入到局域网内,这样光猫以及光猫多余的端口都可以被单臂路由管理了,例如: 这些设备和端口都可以接收到来自单臂路由的dhcp服务

wan口配置pppoe拨号

更改wan口设置,设备选择vlan1623虚拟网口,输入运营商提供的账号密码

android 爱心呼吸 联通iptv拨号_单线复用_17

# 设置IPTV(新版固件:22.03、21.02)

单臂路由设置好后,就可以断开pc与eth1端口的连接(💡空出eth0口给tv)并连到主路由多余端口或者光猫多余端口上(💡为了再次进入openwrt管理界面)。

android 爱心呼吸 联通iptv拨号_openwrt_18

首先,设置br-lan网桥端口,去掉eth0端口(iptv流量进入tv既可,不需要进入内网)

android 爱心呼吸 联通iptv拨号_单线复用_19

然后,修改新创建的出入口网桥设备的设置,将eth0添加进网桥端口。同时,在“网桥vlan过滤”中设置4017 eth1已标记(这样,vlan id=4017的流量进只会从eth1的vlan id=4017进入),并且4014 eth0未标记(这样eth1到eth0的4017),同时注意“本地”去掉(不需要经过网桥,在本地转发。如果在本地转发的话,就会有这种情况: [上游iptv流量vlanid4017] => eth0,vlanid4017 => [iptv流量vlan4017] => eth1,vlan4017 => [iptv流量] => 内网广播 )

android 爱心呼吸 联通iptv拨号_openwrt_20

android 爱心呼吸 联通iptv拨号_openwrt_21

# 设置单臂路由(旧版固件:19.07)

💡新旧区别 https://www.right.com.cn/forum/thread-5807504-1-1.html

新版使用DSA驱动,旧版使用swconfig驱动,配置自然不同。

  • DSA: DSA 代表分布式交换机架构,是用于网络交换机的 Linux 内核子系统。它是 OpenWrt 的 swconfig 框架的上游替代品,许多新路由器使用 DSA 驱动程序而不是 swconfig 驱动程序。
    在 DSA 中,每个交换机端口都是一个单独的 Linux 接口。这意味着ip/ifconfig命令将显示接口等lan1,lan2,wan等。
    DSA 交换机端口可以用作独立接口(WAN 的通用解决方案),也可以使用 Linux 桥接接口进行桥接。> 在后一种情况下,交换机仍然能够在硬件级别路由流量,因此不会影响性能。
    每个端口最多只能是一个网桥的一部分。
  • swconfig: todo

这里设置比较简单

  1. 更改wan接口的物理接口为eth1.1623
  2. 更改lan接口的物理设置,指定eth1、eth0接口桥接

# 设置IPTV(旧版固件:19.07)

  1. 添加接口
  2. 名称iptv
  3. 协议“不配置协议”
  4. 桥接接口勾选
  5. 接口: eth0、eth1.4017
  6. 修改lan接口,去掉eth0

# 设置单臂路由(旧版固件:19.07 - 交换机)

💡如果openwrt没有“交换机”这个选项,需要在/etc/config/network中添加下面这一段

# 打开 switch 交换功能
# 测试可以版本 OpenWrt R22.4.1 / LuCI Master (git-22.095.24346-72703c8)
config switch
        option name 'switch0'
        option reset '1'
        option enable '1'

android 爱心呼吸 联通iptv拨号_单线复用_22