KoolShare

 找回密码
 立即注册
搜索
查看: 28439|回复: 169

[教程] 【完美方案】梅林自启脚本实现VLAN单线复用+任意房间web管理

  [复制链接]

5

主题

68

帖子

524

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
498
魔法值
0
注册时间
2015-11-12
发表于 2018-9-18 13:30:43 | 显示全部楼层 |阅读模式
本帖最后由 momoditto 于 2019-5-16 11:36 编辑

论坛这类帖子不少,但是有很多地方都有误,后面会说明,如果按那些帖子设置,会走不少的弯路,造成不少疑惑。经过仔细核对,我保证按我这套下来绝对不会有问题,如果有问题,欢迎找我交流。
下面开始三步走,
一、需求

如今很多朋友家中都是这样的情况:弱电箱到客厅只穿了1根网线,典型布线类似下图。

2.PNG

一般人家里上网,只用1只入户光猫、1只路由器(往往带WiFi)。为了照顾到各处的WiFi信号强度都不会太差,一般只有在中心位置(客厅)放置无线路由器最优。路由器放在客厅的话,接下来问题出现了,由于弱电箱到客厅只穿了1根网线,你会发现按照Modem-Router-Switch的普通办法,根本没法接线:入户光纤经由光猫,出来1根网线,接到客厅路由器后,就没有办法再接到其他房间的线了 (其他房间的线都在弱电箱集中着呢,并非客厅)。

不比公司和其他单位建筑,家中的往往是开发商或者自建房,贯标做得不是很好。穿线放管这方面我也查过国标,基本上很多时候都做不到那种拐弯半径和次数要求。一般线管放进去线穿好,混凝土一经浇筑完,很难再抽线更改或加管加线。

本文给出了一种方案,可以满足以上的家庭网络需求,实现多VLAN单线复用,以及任意房间(有线/WiFi)管理路由器、交换机、猫。基于VLAN的家庭网络,需要一定的专业知识。对于普通人来说,有些困难。网上的教程和帖子有老有新,水平参差不齐,还有不少的错误。在此我就一笔做到底,争取让最普通的人看了本文也能搞定。

二、硬件准备

硬件:1台简单网管交换机。
硬件,原则上是用尽量少的设备,实现具有通用性和扩展性的方案(¥)。
除了1台支持VLAN的无线路由器(一般家庭上网本来就需要无线路由器吧)之外,需要购置1台简单网管交换机。
交换机具体买5口还是8口的,根据你自己的需要来,你可以核算一下你有几个房间,有没有门铃和小米网关之类的东西。
接线:
如下图接好线,弱电箱放光猫(M)和交换机(S),其他房间的线全部接到交换机(S),客厅的电视接到路由器(R),路由器(R)再接到交换机(S)。
本文路由器是ASUS AC1900p,交换机是NETGEAR GS108e。

3.PNG

VLAN规划:
VLan 1 为PC网络,电脑、小米无线网关之类的东西都在这个VLAN上跑;
VLan 2 为pppoe拨号VLAN;
VLan 43 给iTV留的;
这样规划后,交换机和路由器的各个网口的VLan划分见上图。
本方案不需要破解光猫,iTV这个43可以随便改成3或其他数字,缺点是从光猫(M)到交换机(S)需要2根线。当然你也可以在光猫(M)-交换机(S)之间单线复用跑一根线,但那样的话你需要知道光猫里的VLANid,需要破解光猫更改端口和VLAN绑定。

三、软件配置

交换机:用一根网线把PC或笔记本接到交换机(S)任意LAN口,准备按前面的VLAN划分方案配置。
如果想省心一点,可以先把交换机(S)到路由器(R)的那根线插到路由器(R)的任一LAN口,这样就可以用手机/平板/Mac Book/PC,坐在沙发上用无线配置……弄完了再插回路由器WAN口。
打开交换机web页面,开始配置交换机。GS108e默认地址为192.168.0.239,不清楚的可以看说明书或设备背面。
在System页面下,配置交换机DHCP为关闭,设置静态IP为 192.168.0.239,网关设为路由器 192.168.0.1(例)。
下面开始配置VLAN:

1.点击下图右边的add,从1到n依次添加你的VLAN,(1不需要添加,默认就有)
s1.jpg

2.如下图依次设置各VLAN中各端口的T或U或无

VLAN 1:
s2.jpg


VLAN 2:
s3.jpg

VLAN 43:
s4.jpg

3.如下图,依次设置交换机各port的PVid
s5.jpg

4.重要!(本条更新于2019年4月27日)关于部分网友反映上网正常,但是IPTV不能观看、或观看片刻后卡顿断流的问题解决如下:在交换机中打开System-Multicast-IGMP Snooping,右边第一条IGMP Snooping Status 设置为打开,即Enable;第二条VLAN ID Enabled for IGMP Snooping填写你为IPTV划分的Vlan,我这里是43。
Screen Shot 2019-04-27 at 9.48.16 PM.png

另外也有网友试过改光猫设置,应该也可行(进入光猫-应用-组播设置,把默认igmp Snooping改成igmp udpxy)。
这样交换机就配置完成了,备份一下交换机配置,下面开始配置路由器。

路由器:按前面的VLAN划分方案为路由器配置VLAN。
配置办法有多种,比如通过梅林里的Tools - Run cmd输入shell命令配置、通过Tools - Script设置自启脚本、通过手机/平板/Mac book/PC,telnet或ssh……
这里以Mac book终端telnet为例:

0.在路由器web管理页面,备份路由器设置和jffs(如果有),重要!以备灾难性恢复。
1.在路由器web页面,系统管理里打开telnet开关;
2.Mac book使用WiFi连接到路由器的无线网;
3.打开Mac book里的终端(terminal);
4.以路由器地址为102.168.0.1为例,输入
  1. telnet 192.168.0.1
复制代码
5.输入路由器管理员用户名,回车,输入密码(无显示),回车后进入,提示符变成路由器名称,类似
  1. [admin@AC1900P:/tmp/home/root#
复制代码
接下来就可以在后面输入shell命令设置路由器了

6.查看一下路由器原本的信息
  1. robocfg show
复制代码
可以看到路由器原来的信息和默认的VLAN划分,类似
R0.jpg
上图是在路由器Tools - Run cmd里输入robocfg show直接看到的,可以看到默认5为CPU,0口是WAN口

7.在终端输入
  1. echo \#!/bin/sh>/jffs/scripts/services-start
  2. echo robocfg vlans reset vlan 1 ports  \"0u 2 3 4 5t\" vlan 2 ports \"0t 5u\" vlan 43 ports \"0t 1\" >> /jffs/scripts/services-start
  3. chmod a+rx /jffs/scripts/services-start
复制代码
这样就设置好自启动脚本了,路由器重启的话也会自动运行,一劳永逸。
设置之后的VLAN情况:
R2.jpg

R1.jpg
(Tools - Sysinfo页面)
到此,所有设置就结束了[,可以exit][,也可以接着往下]。

8.一些检查手段,确保无误:
设置完,可以用以下命令看看内容是否有错
  1. ls /jffs/scripts
复制代码
这步是看一下script目录下,是否存在或成功创建了services-start这个文件,如果有,继续
  1. more /jffs/scripts/services-start
复制代码
这步是看一下services-start文件是否有以下内容
  1. #!/bin/sh
  2. robocfg vlans reset vlan 1 ports "0u 2 3 4 5t" vlan 2 ports "0t 5u" vlan 43 ports "0t 1"
复制代码
注意,如果本来就在services-start中添加过一些自启脚本,则直接用>>追加就行了(>和>>的区别)
另外关于wan-start、sevices-start……的不同,建议参考github.com/RMerl/asuswrt-merlin/wiki/User-scripts,不再赘述。
one more thing,检查无误之后,就可以最终备份一下路由器设置和jffs了,重要!

----------------------正文部分结束----------------------

下面说一些容易错的地方,以及网上的帖子一些会误导的地方
1.我用的梅林固件,Tools - Script页面的功能有限,没有services-start选项,网上一些帖子讲到在这里设置自启动,有些人找不到services-start会很纳闷,所以建议按我的方法设置比较好,也有助于自己理解路由器里的一些目录的结构;

2.很多帖子讲到自启动脚本的时候,让人直接手打类似这个:
  1. echo #!/bin/sh>/jffs/scripts/services-start
  2. echo robocfg vlans reset vlan 1 ports "0u 2 3 4 5t" vlan 2 ports "0t 5u" vlan 43 ports "0t 1" >> /jffs/scripts/services-start
复制代码
其实是有问题的,这样设置进去无法正确保存到services-start,没有考虑到转义字符的问题。如果是在终端等环境里直接打echo后面的命令,当然是有效果的,而且不需要使用转义字符,但是路由器重启后就会恢复原来的设置,没有保存。所以最好设置自启动脚本,但是打脚本时就会有转义字符的问题,正确的方法应该是按我前文所述,在一些需要转义字符的地方加反斜杠\ 。一句话,按我正文所说的办就没问题;

3.注意配置路由器VLAN的时候,记得CPU也是1个端口,0-5总共是1WAN口+4LAN口+CPU,而配置交换机的时候不需要,8口交换机只要为1-8口设置好VLAN即可;

4.一个关于CPU的问题。
梅林固件设置VLAN的时候,如果VLAN 2中路由器CPU设为5 或者5t,即5后面如果不指明u的话,robocfg show可以看到CPU都会变成5t,5也默认为5t,所以CPU要强制写为5u,不然pppoe拨号拨不上。此现象只限于路由器CPU,其他端口不写的话,貌似默认都是U。所以按网上很多帖子那样设置都是不行的。一句话,按我正文所说的办就没问题;

5.如果把路由器和交换机的Trunk口的PVid设置成非1,可能导致无法在任意房间和无线管理交换机,只能在弱电箱跪地上插线(亲测);

6.注意Trunk Link口的PVid和tag设置。交换机和路由器之间的Trunk Link经过试验,PVid为1时,Trunk口在native vlan(Vlan1)上的tag标识可以一同设置为T,也可以一同设置为U,这两种情况都可以上网(理论上本来untag后再tag和直接转发效果就一样),在其他VLAN上仍然需要设置为T(VLAN2、VLAN43)。另外,路由器在重启时,0口的PVid会和CPU一起自动变成出厂默认的2,是固件默认恢复成这样的。这样会导致一个问题:当写入自启脚本并重启后,0口的PVid仍然为2,并不会自动变成1,这样可能导致不能任意处管理交换机,或不能拨号。
所以如果你非要像网件官方教程那样,把路由器和交换机的Trunk口在所有VLAN中设置成t,就可以这样办:在自启脚本中对vlans做两遍不同的reset,第一遍起到把0口的PVid,从重启后默认的2改为1的效果,第二遍才是我们想要的,类似这样
  1. echo \#!/bin/sh>/jffs/scripts/services-start
  2. echo robocfg vlans reset vlan 1 ports \"0u 2 3 4 5t\" vlan 2 ports \"0t 5u\" vlan 43 ports \"0t 1\" >>/jffs/scripts/services-start
  3. echo robocfg vlans reset vlan 1 ports \"0t 2 3 4 5t\" vlan 2 ports \"0t 5u\" vlan 43 ports \"0t 1\" >>/jffs/scripts/services-start
  4. chmod a+rx /jffs/scripts/services-start
复制代码
有关T和U可以度娘查阅“Access、Trunk、Hybrid的区别”相关资料,这里贴两个
blog.csdn.net/zqixiao_09/article/details/52078178;
blog.csdn.net/xiaohaijiejie/article/details/70208549;

7.实现VLAN划分、iTV和Internet单线复用一般并不需要2个交换机,实际上可以用路由器的4个LAN口代替,懂原理的就会知道,路由器LAN自带交换功能,5个口(4LAN口+1WAN口)相当于划分了2个VLAN的交换机;

8.感谢Koolshare社区





评分

3

查看全部评分

8

主题

108

帖子

387

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
353
魔法值
0
注册时间
2016-4-23

DDOS纪念勋章

发表于 2018-9-18 15:55:37 | 显示全部楼层
本帖最后由 wojiushiali 于 2018-9-18 16:04 编辑

蟹蟹大家!



5

主题

68

帖子

524

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
498
魔法值
0
注册时间
2015-11-12
 楼主| 发表于 2018-9-18 15:56:36 | 显示全部楼层
本帖最后由 momoditto 于 2018-9-18 15:58 编辑
wojiushiali 发表于 2018-9-18 15:55
楼主有个地方可能写错了,
误将应设为t的端口1设成了u

没有错吧。如果是Hybrid的话,1口甚至可以多个VLAN中都是U

8

主题

108

帖子

387

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
353
魔法值
0
注册时间
2016-4-23

DDOS纪念勋章

发表于 2018-9-18 16:03:04 | 显示全部楼层
本帖最后由 wojiushiali 于 2018-9-20 12:05 编辑
momoditto 发表于 2018-9-18 15:56
没有错吧。如果是Hybrid的话,1口甚至可以多个VLAN中都是U
蟹蟹大家!

5

主题

68

帖子

524

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
498
魔法值
0
注册时间
2015-11-12
 楼主| 发表于 2018-9-18 16:04:36 | 显示全部楼层
pvid本来就是1,应该不影响

13

主题

89

帖子

326

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
289
魔法值
0
注册时间
2016-12-7
发表于 2018-9-18 16:12:15 | 显示全部楼层
这贴要火了吗

5

主题

68

帖子

524

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
498
魔法值
0
注册时间
2015-11-12
 楼主| 发表于 2018-9-18 16:12:39 | 显示全部楼层
本帖最后由 momoditto 于 2018-9-18 16:16 编辑
wojiushiali 发表于 2018-9-18 16:03
网件官方有类似的配置教程,汇聚口全部都是设置为t的
官方教程网址:简单网管交换机的 VLAN 功能设置及应 ...

我这样理解的,pppoe时,VLAN2的路由器CPU 5u发出数据帧被打tag2,经过0t口检查发现可以通过,转发到交换机1t口,然后继续转到2u口,被剥离untag之后发到光猫。
iTV的VLAN43也一样。
主要是VLAN1的数据在经过交换机1口和路由器0口的时候,无论tag或者untag都不影响。本身pvid就是1,untag再tag的话,还是1

49

主题

768

帖子

1786

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
1326
魔法值
0
注册时间
2015-12-10
发表于 2018-9-18 16:17:00 | 显示全部楼层
感谢分享。

0

主题

10

帖子

230

积分

中级魔法师

Rank: 3Rank: 3

精华
0
门户文章
0
魔力币
228
魔法值
0
注册时间
2016-6-14
发表于 2018-9-18 16:27:36 | 显示全部楼层
感谢分享方案,家里差不多就是这样子的情况

3

主题

39

帖子

45

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
37
魔法值
0
注册时间
2018-2-6
发表于 2018-9-18 17:49:56 | 显示全部楼层
两个问题请教:
1、按照这种架构图,是不是所有房间还是必须通过无线路由器上网?
2、怎么知道无线路由的wan口属于哪个vlan?lan口属于哪个vlan?

3

主题

39

帖子

45

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
37
魔法值
0
注册时间
2018-2-6
发表于 2018-9-18 19:15:44 | 显示全部楼层
lz,我是网络小白,还有一个问题请教,
你这样连接就可以将交换机的vlan1 和 路由的vlan1 ,以及vlan2 ,vlan43 直接打通吗?

3

主题

39

帖子

45

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
37
魔法值
0
注册时间
2018-2-6
发表于 2018-9-18 20:10:00 | 显示全部楼层
每个房间都能上网吗?

5

主题

68

帖子

524

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
498
魔法值
0
注册时间
2015-11-12
 楼主| 发表于 2018-9-18 20:29:01 来自手机 | 显示全部楼层
oscar_hd2121 发表于 2018-9-18 20:10
每个房间都能上网吗?

是的,随便有线无线,具体端口一般WAN口为0其他LAN是1-4,可以在路由器界面里看,一根一根的插拔也可以试出来

5

主题

68

帖子

524

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
498
魔法值
0
注册时间
2015-11-12
 楼主| 发表于 2018-9-18 20:30:19 来自手机 | 显示全部楼层
oscar_hd2121 发表于 2018-9-18 19:15
lz,我是网络小白,还有一个问题请教,
你这样连接就可以将交换机的vlan1 和 路由的vlan1 ,以及vlan2 ,vl ...

当然不是直接打通,你还需要多看资料多学习,先了解一下什么是VLAN

3

主题

39

帖子

45

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
37
魔法值
0
注册时间
2018-2-6
发表于 2018-9-18 20:36:34 | 显示全部楼层
T U 区别是什么?

3

主题

39

帖子

45

积分

魔法学徒

Rank: 1

精华
0
门户文章
0
魔力币
37
魔法值
0
注册时间
2018-2-6
发表于 2018-9-18 20:40:07 | 显示全部楼层
momoditto 发表于 2018-9-18 20:30
当然不是直接打通,你还需要多看资料多学习,先了解一下什么是VLAN

我的意思是交换机 vlan1 和 路由的vlan1 ,
交换机vlan2和路由vlan2 ,
交换机vlan43和路由vlan43
分别打通吗?

0

主题

37

帖子

585

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
575
魔法值
0
注册时间
2016-8-22
发表于 2018-9-18 22:52:41 | 显示全部楼层
感谢分享

0

主题

12

帖子

71

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
70
魔法值
0
注册时间
2017-8-26
发表于 2018-9-19 10:01:39 | 显示全部楼层
非常感谢分享教程,有的学习了

5

主题

68

帖子

524

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
498
魔法值
0
注册时间
2015-11-12
 楼主| 发表于 2018-9-19 10:45:08 来自手机 | 显示全部楼层
oscar_hd2121 发表于 2018-9-18 20:40
我的意思是交换机 vlan1 和 路由的vlan1 ,
交换机vlan2和路由vlan2 ,
交换机vlan43和路由vlan43

差不多。。。。。。。

14

主题

70

帖子

174

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
145
魔法值
0
注册时间
2018-4-5
发表于 2018-9-19 13:03:17 | 显示全部楼层
其他和我的一样,只是我的无线路由的VLAN划分和楼主的稍微有点区别,也已经通过测试,没有问题,供大家参考。

VLAN1:0t 2 3 5t
VLAN2:0t 5t
VLAN3:0t 1

https://koolshare.cn/thread-146835-1-1.html

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2019-11-23 05:44 , Processed in 0.095059 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表