教你华硕路由器如何实现单臂路由(单臂路由的实现)

小编:芯水 更新时间:2022-04-19

早期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教你华硕路由器如何实现单臂路由(单臂路由的实现)

至此全文结束,欢迎小伙伴留言交流。