前言
原本家里面的无线路由器是放在入门处的弱电箱里面的,与卧室之间有了好几堵墙隔着,导致卧室里面的WIFI信号不是很好,所以就想着把无线路由器放在客厅的位置。但是这又带来了一个问题,客厅里面原本是放着IPTV的,并且弱电箱到客厅只有一个网络接口,如何才能保证IPTV能正常使用的情况下把路由器搬到客厅去?
这个问题有两个解决方案,第一是把一根千兆的网线拆成两根百兆的网线,分别连接IPTV和无线路由器;这个方法毫无疑问是最简单的,插上就能用了,但是如果家里面的宽带是超过100M的,那么这样做肯定就有点浪费网费了。那么第二种方法就是通过划分VLAN的方式实现单线复用。
VLAN
VLAN全称Virtual Local Area Network(虚拟局域网),关于这个的具体实现原理可以查看这篇文章 VLAN基础知识,这里就按照我的理解简单说一下。
当用户设备发送的报文通过交换机上的设置了VLAN的端口时,这个报文会在开头打上标记,这个标记有很多的信息,但是对于我们来说需要关注的是VID这个标记,因为它指定了这个报文是属于哪个VLAN的,然后我们再把这个有了标记的报文发送给其他的交换机,其他的交换机就能通过VID来指定报文发送的对象。所以我们就可以通过设置不同的VID来隔离出不同的局域网VLAN,在同一条线路上传输多个VLAN的数据。
再简单解释一下后面会出现的几个名词
- Tagged 已标记:即从该端口流入/传出的数据会被打上相应的VID标记
- Untagged 未标记:即从该端口流入/传出的数据不会被打上相应的VID标记,或者会被去除标记
- off 关:即该端口不接受指定VID的数据
需要注意的是,当数据被打上标记后只有特定的设备才能识别这些数据(在这篇文章的范围内是指网管交换机和OpenWrt路由器),我们的电脑手机啥的是不能识别有标记的数据的,所以有标记的数据只能是在路由器和交换机之间传输,而给手机电脑等设备的数据应该是被去除了标记的。
预期目标
因为OpenWrt的可玩性比网管交换机和光猫要高很多,所以我打算把所有设备的流量都汇聚到OpenWrt路由器上,通过路由器来统一管理和分配IP地址等。最终整个网络的拓扑结构如下图
硬件准备
理论上来说只要是支持VLAN的OpenWrt路由器和交换机都可以,这里是我用的设备
- 红米AC2100(已刷OpenWrt)
- 水星 SG108 Pro
由于设备的接口数量不同,所以接下来的教程请自行根据实际情况选择网线的接口。
交换机配置
把光猫上的千兆网口插到交换机的LAN1上,光猫的IPTV插到交换机的LAN8上,客厅的网线插到交换机的LAN7上,其他房间的网线则随意插入交换机剩余的接口就行。
然后进入交换机后台,配置VLAN如下图所示
我这里划分了三个VLAN,首先是VID 1,它负责把其他房间的网络全部传输给路由器统一管理;然后是VID 2,它负责传输路由器和光猫千兆口之间的数据;最后是VID 100,它负责传输IPTV的数据。
然后关闭IGMP侦听(开启的话会导致IPTV无法观看直播),保存配置。
路由器配置
首先把IPTV机顶盒的网线插到路由器的LAN3口,把从弱电箱引过来的网线插到WAN口,如有其他的有线设备的话插到多余的接口即可。
OpenWrt 19及以下
进入后台,依次打开“网络‘,”交换机“,首先”启用VLAN“,然后照着下图的内容进行配置
之后再依次打开”网络“,”接口“,点击”LAN“接口上的”修改“按钮,把其中的”IPv4 地址“修改成与WAN接口的IPv4不在同一个网段的地址。
保存,然后就可以去检查一下网络和IPTV能否正常使用。
OpenWrt 21 及以上
依次打开“网络”,“接口”,“设备”,点击“添加设备配置”,并选择如下图所示的配置
其中设备名可以随意填写,网桥端口需要选择除了连接IPTV外的所有的lan口,图片中没有出现的参数保持默认。
然后打开网桥VLAN过滤,按下图所示配置。(打*号的是选择了“主 VLAN ID”的)
然后同样的方法创建下面图片所示的接口
然后打开“接口”,将lan接口的设备更改为br-internet.1
同样的方法,将wan和wan6接口的设备更改为br-internet.2
。然后创建一个新的接口,设备选择br-iptv.100
保存配置,即可。
总结
这种所有的流量都由OpenWrt管理的方式虽然很方便,但是也会导致路由器和交换机之间数据传输的压力比较大,整个局域网的速度都会受到它们两个的影响,希望之后能有更好的解决方案吧。
这件事情是很早之前就想完成的,但是之前的尝试都失败了,前几天看到了一篇博客才又让我去试试看,虽然过程还是不太平稳,但是结果还是挺让人满意的。