聊聊在家里折腾单线复用的经历

这篇就当作是当时计网VLAN实验的一个真实实践吧。

现在大部分人家里的光猫应该都是光纤/网线/高频入户,然后在弱电箱里有个猫,提供一个宽带口和一个IPTV口(不讨论光猫拨号的话)。这个时候一般得要两根网线从弱电箱里走暗线出去,一根去接路由器(当然要是你的弱电箱很大能塞得下路由器而且信号和散热也还行就不用往下看了),一根去接机顶盒。但是很多家庭里一个地方只穿了一根,不够用的话就得折腾一下,我随便说几个方案:

  • 自己再穿一根线,如果暗管的空间还足够的话。这个比较稳,而且也不难,像这个網路不通怎麼辦|最完整拉網路線教學|自己的網路自己救|禾我一起DIY EP.11【弱電通】,实在不行也可以请人来穿一根。
  • 单线复用,利用VLAN,在这根网线上面承载多项不同子网的业务。好处很明显,物理上不需要动线路了。而且目前内网单口千兆跑几个业务问题也不太大,除非是1000M的宽带这种会跑不满,不然应该都没有什么问题。
  • 如果机顶盒支持走无线IPTV(这个比较蛋疼)、光猫支持无线(当然你也用不上这个无线的话),并且能进光猫超级管理页,那么把IPTV的VLAN划到无线上就OK。这个方案可行但我个人不太感冒,毕竟很多时候都只能走2.4GHz频段,拥挤的时候稳定性堪忧。
  • 目前还很小众但是我挺看好的方案:光纤。网线走明线很明显,不太好看,但是光纤不会。TB上面能买到隐形光纤,搭配光纤收发器就可以了,成本不会很高。这里有篇文章提到了vleop mesh用隐形光纤组网达到有线回程-路由器交流。应该也可以买那种有线身补强的然后穿暗管。

这里主要讨论的是第二种方案,并不是我懒得去穿线,而是客厅的暗管很细还穿了2根网线(电视占了一根并且很难改造)和1根同轴电缆,卡得很紧动都动不了(淦,当时他是怎么穿过去的,服了),只好买两个简易的网管交换机来做单线复用了。

其实如果你的路由器可以划VLAN的话(比如自己刷了固件的K2P之类的)或者支持IPTV流量隔离,那买一个其实就够了;另外如果你能完全控制光猫的VLAN,那么应该不需要买了。现在这个时候,家用的简单网管交换机有很多,比较经典的就是网件的GS105E/GS108E(接口数量不一样),价格有点高(不过也有很多洋垃圾)。最近也有人在淘亚马逊(中亚直邮/美亚转运)上面的网件GS908E,价格不错。TP-LINK的TL-SG2005/TL-SG2008(8口这个内置了电源大了点),还有水星的SG105 Pro/SG108 Pro也都可以。

开工之前来复习一下:

比如这几篇:Fundamentals of 802.1Q VLAN Tagging – Cisco MerakiTagged, Untagged, and Native VLANs – Network DirectionWhat is PVID – Jason’s Web SiteHow to configure 802.1Q VLAN on TP-Link Easy Smart/Unmanaged Pro Switches? | TP-Linkdifference between untagged VLAN and PVID。还有问题的话…那就去看802.1Q吧,看完顺便带带弟弟。

首先,我们希望把互联网、IPTV和内网这三个子网隔离开来。我们知道可以通过VLAN来隔离广播域,使得同一个物理交换机上面有多个不互通的子网,除非有三层设备(路由器之类的)做转发。其次,我们希望可以单线复用,就是在一根线上承载不同子网的业务。我们知道Trunk用来连接两个交换机,两个交换机上同一VLAN的设备就可以互相通信,就很符合现在的需求。

VLAN enabled ports are generally categorized in one of two ways, tagged or untagged. These may also be referred to as “trunk” or “access” respectively. The purpose of a tagged or “trunked” port is to pass traffic for multiple VLAN’s, whereas an untagged or “access” port accepts traffic for only a single VLAN. Generally speaking, trunk ports will link switches, and access ports will link to end devices.

Fundamentals of 802.1Q VLAN Tagging – Best Practices

不管是叫access还是untag,trunk还是tag。简言之,我们需要划分3个VLAN,分别承载互联网(光猫Internet到路由器WAN)、IPTV(光猫IPTV到IPTV机顶盒)和内网(和路由器LAN互通)。Trunk(tag)口用来连接这两个交换机,Access(untag)口用来连接设备,它们都用来决定离开这个端口时的动作;PVID来决定一个没有tag的包进入这个端口时应该如何做(不是所有厂商的交换机都有这个,有些是自动的)。

get到上面的点之后,就可以开工了。完工后的拓扑大概会是这个样子的,菜鸡本菜不会用Visio只能随便画一个了:

具体两个交换机上接线应该是这样的:

很显然了,两台交换机上的端口1都是Trunk口,然后端口2、端口3、端口45分别设不同的VLAN。如果假定VLAN 10给互联网,VLAN 20给IPTV,VLAN 11给内网,那么交换机A和B的设置应该一样,VLAN应该是这样的:

  • VLAN 10(Internet):端口1设为Tag;端口2设为Untag;
  • VLAN 20(IPTV):端口1设为Tag;端口3设为Untag;
  • VLAN 11(LAN):端口1设为Tag;端口4和5设为Untag;
  • PVID:端口1设为1,端口2设为10,端口3设为20,端口4和5设为11。

这适用于不在弱点箱内的主路由拨号然后通过弱电箱内的暗线共享给其它房间的设备(例如子路由)的场景。缺点也明显,某些地方的链路容易饱和。例如房间内的网线去公网最高就只能500Mbps,但对于我来说不是什么问题。要解决这个问题可以在光猫上拨号然后其它路由做AP,或者类似的方案,需要根据实际情况做取舍。

此时可以接线进行测试了,如果在两台交换机上不同VLAN间不能互相通讯而相同VLAN间可以通讯,那么应该可以开始正常使用了。

如果有任何错误或问题,烦请在评论区指出。不胜感激。

VLAN Lab

让队友和我一起折腾到了六点多,有点愧疚,感谢各位大佬支持。

记录一下踩雷的历史,希望对各位有所帮助,如果文中存在差错,还望各位指点。写这些的目的并不是为了让某些懒人直接照搬进去实验报告的,我还是希望能够营造一个大家积极交流而进步的氛围,而不是放任有些人能混过去就行的心态,让开源给抄袭提供便利。如果是这样的话我宁愿自己删掉这些文章。

这次的环境是:

  • 机房的电脑4台,全部是Windows 7系统。其中一台电脑使用Xshell,通过串口连接并配置交换机。
  • Quidway S5700系列交换机1台,Quidway S3700系列交换机1台。

…并不是我故意找了两台不一样的,而是我所在的位置上的机柜里就是这样的。这样的情况带来的问题就是有些命令不大一样,需要先翻手册才知道。当然你要是因为这个就黑说老师的PPT不对就有点过了,PPT上面的内容个人认为最多算是启发性质的、大方向上的教程,并且针对的交换机型号、硬件版本、固件版本不能总是和你所在的环境一样,更多的细节上的问题你总是需要自己想办法去解决和适应。

画个重点:2019年底的时候,计软3楼某些实验室已经更换了全套全新的交换机和路由器,颇有财大气粗、大材小用的气势。至于为什么这么说,等你去到实验室感受一下就知道了。我觉得这个时候你大概不会再需要头疼我遇到的很多问题了。

CONSOLE登录

为了配置交换机,这里你需要用串口来控制你的交换机。以前如果你有折腾过普通家用的路由器/网管交换机,你通常都是访问路由器的Web管理界面(例如浏览器访问http://192.168.1.1/)来进行配置,现在就不一样了。原因比较多,就不在这里废话了。

正常情况下,你应该可以看到交换机上面的CONSOLE口有一根线连到了某台电脑的RS-232(这个是我瞎说的)口上,这个时候就用这台电脑来配置交换机吧。

PPT里的示例使用的是超级终端,不过我使用的是Xshell,像这样子新建一个连接,然后选择串口SERIAL

VLAN_LAB_1.jpg
Xshell 新建会话

先别急着确定,我一般会习惯性地先看看端口号:

VLAN_LAB_2.jpg
右击此电脑->管理->设备管理器

COM1没错了,记住它,到左侧的SERIAL中确认一下各项参数是否正确,然后就可以连接了。

VLAN_LAB_3.jpg
Xshell 连接成功

连接上之后,可以直接输入一个问号?来查看帮助。平时输入命令的时候,可以用TAB来提示相关词,这个就是键盘上那个制表符,我强烈建议你在控制台里多利用提示和补全,而不是YY。

然后根据实验报告的要求,你可以到各种视图中转悠转悠熟悉一下操作:

VLAN_LAB_4.jpg
进入system-view

什么?你说PPT上的端口不对?你看过文档或是display看过了吗?

VLAN_LAB_5.png
端口要具体情况具体分析

这里就不再多说什么了,端口各种配置各位就自行看文档发掘吧。

VLAN基本配置

实验要求大概是这样的:

VLAN_LAB_6.png
实验要求 图源PPT

按图连接好实验设备,PC1、PC2、交换机的IP地址分别为10.110.10.1、10.110.10.2、10.110.10.3,子网掩码均设置为255.255.255.0。建立VLAN2、VLAN3,通过配置将端口Ethernet 0/3包含到VLAN2中,将端口Ethernet 0/4包含到VLAN3中,并使用PING命令检查VLAN工作情况,测试PC1、PC2、交换机之间能否PING成功。
将端口Ethernet 0/4包含到VLAN2中,并使用PING命令检查VLAN工作情况,测试PC1、PC2 、交换机之间能否PING成功。

实验要求 源PPT

简单来讲就是要把两台PC设置在不同VLAN中,然后测试一下它们在没有其它因素的时候能不能通信。(废话嘛…这要是可以还要VLAN干吗哦…)

所以我们先把PC1、PC2分别连接到交换机的Ethernet 0/0/3、Ethernet 0/0/4上。正常情况下,连接正确的时候你能看到交换机上对应数字的灯在闪烁。连接完成后我们在PC上设置一下IP地址和子网掩码,就像这样:

VLAN_LAB_7.png
手动设置IP地址

你应该能找到它在哪里吧…控制面板->网络和和共享中心->本地连接->属性->IPv4。我感觉可能还是很多同学不知道这个选项在哪,也不知道为啥平时自己通常都不需要这么设置就能上网,这个主要是因为平时你所处的网络内都有DHCP服务器负责为你下发IP地址,只要PC是默认的自动获取IP地址,你通常都不需要干预就能正常上网,感兴趣的话我建议自己去查一下。

至于交换机的IP地址的设置…如果你以前没有接触过网管交换机的话,你可能会觉得奇怪:这不是二层设备么,为什么会有IP地址?你需要在vlanif上配置它,有关详细信息,你可以参阅这里:

vlanif和vlan的区别

交换机要ip有什么用? – 知乎

VLAN_LAB_8.png

接下来我们该来配置一下VLAN了。根据要求,把Ethernet 0/0/3包含到VLAN 2中,把Ethernet 0/0/4包含到VLAN 3中:

VLAN_LAB_9.jpg
摘自文档
VLAN_LAB_10.jpg
接口Ethernet0/0/03划分至VLAN 2

在VLAN中添加端口也是可行的。

如果遇到问题需要更改端口类型:

VLAN_LAB_11.png

如果你不明白,我想你应该去搜索一下有关trunk/access/hybrid的内容。

另一个接口同理,都配置好之后应该能看到是这样的:

VLAN_LAB_12.jpg
display vlan

这个时候就可以开始测试了:

VLAN_LAB_13.jpg
10.110.10.1发送ping至10.110.10.2

如果目标主机的防火墙默认阻挡ICMP协议的封包,请根据实际情况修改策略,例如接受局域网的ICMP封包,或者完全接受。你也可以为不联网的、与其它局域网隔离的实验的PC关闭防火墙。如果你不事先进行检查,这会影响到实验的结果。

由于两个PC被分配到了不同的VLAN中,并且没有可达路由,所以它们不能互相通信。这个时候,我们切换到Xshell中更改VLAN划分。由于刚刚的ping带有-t参数,它会不停地继续发送ping包。我们来把Ethernet 0/0/4改到VLAN2中看看:

VLAN_LAB_14.jpg
更改至同一VLAN后即可正常通信

我们刚把Ethernet 0/0/4添加到VLAN2后马上可以看到这边已经可以ping通了。

Trunking

希望你在搞这个之前已经清楚地知道自己在做什么…如果不知道的话,我觉得你可以尝试着去搜一下相关的内容,也可以看看单线复用、单臂路由之类的应用,或许能有所帮助,而且说不定就能在日常生活中用起来了呢?

我们先把之前创建的VLAN先都删掉:

VLAN_LAB_15.png
去掉刚刚设置的VLAN

这个时候还是接线,按照PPT说明接好:

VLAN_LAB_16.png

由于这个交换机的22好像是坏的…于是换到了20上(真是尴尬)。所以我们接下来要干的事情是:

  1. 将PC1连接到交换机1的Ethernet 0/0/3上,配置静态IP为10.110.10.1/24;
  2. 将PC2连接到交换机1的Ethernet 0/0/12上,配置静态IP为10.110.10.2/24;
  3. 将PC3连接到交换机2的Ethernet 0/0/13上,配置静态IP为10.110.10.3/24;
  4. 将PC4连接到交换机2的Ethernet 0/0/20上,配置静态IP为10.110.10.4/24;
  5. 找根网线把交换机1的Ethernet 0/0/23和交换机2的Ethernet 0/0/23连接起来。

大概会是这个样子:

VLAN_LAB_17.png

接下来继续回到Xshell上开始配置交换机,我们先来折腾交换机1:

  1. 将Ethernet 0/0/3添加到VLAN 3中;
  2. 将Ethernet 0/0/12添加到VLAN 2中;
  3. 将Ethernet 0/0/23配置为trunk并允许VLAN 2/3的流量通过。

这台交换机的端口就不像想象中的那样了:

VLAN_LAB_18.png
端口和另一台不大一样

这里是GigabitEthernet0/0/1

这里添加各端口到VLAN中的命令大家应该都清楚了,不再挂图了…看看trunk:

VLAN_LAB_19.png

别忘了还要允许流量通过:

VLAN_LAB_20.png

是不是又想说和PPT里不一样?可是官方文档里可是清清楚楚地只有上面图里那种用法的哦。自己动手,丰衣足食吧。

VLAN_LAB_21.png

检查过没有问题了就可以继续配置交换机2了:

  1. 将Ethernet0/0/13添加到VLAN 3中;
  2. 将Ethernet0/0/20添加到VLAN 2中;
  3. 将Ethernet0/0/23配置为trunk并允许VLAN 2/3的流量通过。

跟上面差不多,我就不累死累活上图了。如果两台都配置好了之后就可以来测试了!根据实验要求:

PC1和PC2之间能否ping成功:

VLAN_LAB_22.png

由于PC1和PC2不在同一个VLAN,并且不存在可达路由,所以不能ping通。

PC1和PC3之间能否ping成功:

VLAN_LAB_23.png

PC1和PC3在同一个VLAN中,并且配置好了trunk,可以ping通。

PC2和PC4之间能否ping成功:

VLAN_LAB_24.png

同一VLAN,并且有正确的trunk,可以ping通。

附加一个PC2和PC3:

VLAN_LAB_25.png

大概这样子就圆满完成了。不过走之前别忘了删掉VLAN,网线插回原位之类的扫尾工作哈。

控制台记录

最后附一些控制台记录,仅供参考,并且有我瞎玩的记录。请务必记得看文档。

<Quidway>system-view 
[Quidway]interface Vlanif 2
Error: The VLAN does not exist.
[Quidway]vlan 2 
[Quidway-vlan2]quit
[Quidway]interface Vlanif 2
[Quidway-Vlanif2]ip address 10.110.10.3 255.255.255.0
[Quidway]undo vlan 2
Error: The VLAN has a L3 interface. Please delete it first.
[Quidway]vlan 2 
[Quidway-vlan2]port Ethernet0/0/3
Error: Trunk or Hybrid port(s) cannot be added or deleted in this manner.
[Quidway]interface Ethernet0/0/3
[Quidway-Ethernet0/0/3]port link-type access
[Quidway-Ethernet0/0/3]port default vlan 2
[Quidway-Ethernet0/0/3]display vlan 2
* : management-vlan
---------------------
VLAN ID Type         Status   MAC Learning Broadcast/Multicast/Unicast Property 
--------------------------------------------------------------------------------
2       common       enable   enable       forward   forward   forward default  
----------------
Untagged   Port: Ethernet0/0/3               
----------------
Interface                   Physical 
Ethernet0/0/3               UP      
[Quidway]interface GigabitEthernet0/0/23
[Quidway-GigabitEthernet0/0/23]port link-type trunk
[Quidway-GigabitEthernet0/0/23]port trunk allow-pass vlan all