asus路由器实现vlan划分(RT-AX68U)

使用vlanctl命令可以添加tag和untag形式的VLAN,一般untag只添加一个就够了,其它都是tag vlan。要注意的是划分vlan以后原来的iface就转换为二层接口不能配置网络协议了,所有配置都放在vlan上面。
我这里有一个脚本可以参考

#!/bin/sh

function create_vlan_untagged {
    local if={1}
    local vlanid={2}

    vlanctl --mcast --if-create-name {if}{if}.{vlanid}
    vlanctl --if{if} --rx --tags 0 --set-rxif {if}.{vlanid} --rule-append
    ifconfig {if}.{vlanid} up
}

function create_vlan_tagged {
    local if={1}
    local vlanid={2}

    vlanctl --mcast --if-create-name {if}{if}.{vlanid}
    vlanctl --if{if} --rx --tags 1 --filter-vid {vlanid} 0 --pop-tag --set-rxif{if}.{vlanid} --rule-append
    vlanctl --if{if} --tx --tags 0 --filter-txif {if}.{vlanid} --push-tag --set-vid {vlanid} 0 --rule-append
    ifconfig{if}.${vlanid} up
}
create_vlan_untagged eth1 1
create_vlan_untagged eth3 1
ip link set eth1.1 up
ip link set eth3.1 up
brctl delif br0 eth1 eth3
brctl addif br0 eth1.1 eth3.1

create_vlan_tagged eth1 5
create_vlan_tagged eth3 5
ip link set eth1.5 up
ip link set eth3.5 up
brctl addbr br1
brctl stp br1 on
brctl addif br1 eth1.5
brctl addif br1 eth3.5
ip link set br1 up
ip addr add 192.168.5.1/24 dev br1

nvram set lan_ifnames="eth1.1 eth2 eth3.1 eth4 eth5 eth6"
nvram set br0_ifnames="eth1.1 eth2 eth3.1 eth4 eth5 eth6"
nvram set br1_ifname=br1
nvram set br1_ifnames="eth1.5 eth3.5"
nvram set lan1_ifname=br1
nvram set lan1_ifnames="eth1.5 eth3.5" 
nvram commit

此脚本可以放在/jffs/scripts/services-start中
然后在/jffs/scripts/firewall-start中添加

“`iptables -I FORWARD -i br1 -j ACCEPT“`
这样就实现了在一根网线上划分多个vlan并配置多个网段
可以用vlanctl –rule-dump-all列了所有规则,然后用dmesg查看

发表回复