早期52asus论坛有小伙伴咨询华硕路由器如何 VLAN划分,今天我们就具体说明一下。
就当时小伙伴 RT-AC86U VLAN划分求助(单臂路由) 使用到的命令进行逐条分析,方便日后其他小伙伴使用。
使用命令如下:
vlanctl --mcast --if-create eth0 2
vlanctl --if eth0 --rx --tags 1 --filter-vid 2 0 --pop-tag --set-rxif eth0.v2 --rule-append
vlanctl --if eth0 --tx --tags 0 --filter-txif eth0.v2 --push-tag --set-vid 2 0 --rule-append
ifconfig eth0.v2 up
brctl addbr vlan2
brctl addif vlan2 eth0.v2
ifconfig vlan2 up
nvram set wan_ifnames=vlan2
nvram set wan_ifname=vlan2
nvram set wan0_ifname=vlan2
vlanctl --mcast --if-create eth0 1
vlanctl --if eth0 --rx --tags 0 --set-rxif eth0.v1 --rule-append
ifconfig eth0.v1 up
brctl addif br0 eth0.v1
具体说明:
vlanctl --mcast --if-create eth0 2
#基于eth0 (路由器WAN口)创建一个虚拟接口并且命名为eth0.2,这里的2纯粹是名字,与VLAN tag没有任何关系,如果是为了方便了解后续解到的tag,名称也可以与tag一致。Mcast(multi cast protocal)是多播协议通信程序,用于测试在局域网或者三层交换机架构下进行通信测试
vlanctl --if eth0 --rx --tags 1 --filter-vid 2 0 --pop-tag --set-rxif eth0.v2 --rule-append
#如果接口eth0接收到的数据(--if eth0 --rx),有1个VLAN tag(--tags 1),并且第0个tag的VLAN ID是2(--filter-vid 2 0),则脱去tag(--pop-tag),并且设置接收接口为eth0.v2(--set-rxif eth0.v2),最后把这条规则添加到表中(--rule-append)
vlanctl --if eth0 --tx --tags 0 --filter-txif eth0.v2 --push-tag --set-vid 2 0 --rule-append
#接口 eth0 发送数据时 (--if eth0 --tx),如果 没有 VLAN tag (--tags 0),并且 发送数据的虚拟接口是 eth0.v2 (--filter-txif eth0.v2),则 给数据(以太帧)加上一个 VLAN tag (--push-tag),并给第 0 个(刚加的)tag 设置 VLAN ID 为 2 (--set-vid 2 0)。把这条规则添加到表中 (--rule-append)。
ifconfig eth0.v2 up
#启用这个虚拟接口eth0.v2。
brctl addbr vlan2
# 创建一个逻辑网段,名称为vlan2
brctl addif vlan2 eth0.v2
#让eth0.v2 成为 vlan2的一个端口
ifconfig vlan2 up
#启用这个逻辑网段
nvram set wan_ifnames=vlan2
nvram set wan_ifname=vlan2
nvram set wan0_ifname=vlan2
# 通知系统上网接口被改变,需要设置nvram相关变量
# 是指 WAN 使用 vlan2 网络介面来上网
vlanctl --mcast --if-create eth0 1
#基于eth0 (路由器WAN口)创建一个虚拟接口并且命名为eth0.1
vlanctl --if eth0 --rx --tags 0 --set-rxif eth0.v1 --rule-append
#如果接口eth0接收到的数据(--if eth0 --rx),没有VLAN tag(--tags 0),并且设置接收接口为eth0.v1(--set-rxif eth0.v1),最后把这条规则添加到表中(--rule-append)
ifconfig eth0.v1 up
#启用这个虚拟接口eth0.v1。
brctl addif br0 eth0.v1
#让eth0.v1 成为 br0的一个端口
具体示例说明:
下面尝试将RT-AC86U的WAN口与LAN 4口桥接到一起,实现WAN和 LAN4 的 VLAN 85联通。
先确认路由器WAN与LAN4系统中分别对应的名称,telnet连接到RT-AC86U 执行ifconfig,观察系统中eth0对应名称为WAN,eth1对应到LAN4。如下图
再执行如下命令,如下图效果
vlanctl --mcast --if-create eth0 85
vlanctl --if eth0 --rx --tags 1 --filter-vid 85 0 --pop-tag --set-rxif eth0.v85 --rule-append
vlanctl --if eth0 --tx --tags 0 --filter-txif eth0.v85 --push-tag --set-vid 85 0 --rule-append
ifconfig eth0.v85 up
vlanctl --mcast --if-create eth1 85
vlanctl --if eth1 --rx --tags 1 --filter-vid 85 0 --pop-tag --set-rxif eth1.v85 --rule-append
vlanctl --if eth1 --tx --tags 0 --filter-txif eth1.v85 --push-tag --set-vid 85 0 --rule-append
ifconfig eth1.v85 up
brctl addbr vlan85
brctl addif vlan85 eth0.v85
brctl addif vlan85 eth1.v85
ifconfig vlan85 up
至此全文结束,欢迎小伙伴留言交流。
……