利用vmware构建openwrt开发的测试环境

719 阅读3分钟

模拟普通VLAN

需要三台虚拟机:openwrt,虚拟交换机和客户机

这里的重点在虚拟交换机,如果不需要模拟VLAN的access口,vmware是可以很方便的添加普通的交换机的。

整体的网络架构如下图所示

graph LR
A[网关] --- B{虚拟交换机}
B -->|VLAN 1001| C[客户机 192.168.100.*]
B -->|VLAN 1002| D[客户机 192.168.101.*]

网关这台虚拟机配置2个虚拟网卡即可,一个用于连接虚拟交换机,一个用于做WAN口

Untitled.png

图中的网络适配器4就是连接虚拟交换机的网卡,连接配置成LAN区段,LAN区段就是一个vmware提供的虚拟交换机,不过不能打vlan tag。

然后在界面上添加2个VLAN,分别对应VLANID 1001和1002,注意要把dhcp也开启了

Untitled 1.png

虚拟交换机用任意linux都可以,我用的ubuntu 20.04,添加3块网卡,分别对应2个access口和1个trunk口。

Untitled 2.png

这里新建了一个LAN区段 switch-1,用于连接客户机

Untitled 3.png

这个和网关的网卡在一个LAN区段,也就是网络上是互通的

然后可以打vlan tag的虚拟交换机用openvswitch实现

sudo apt update
sudo apt install openvswitch-switch

# 测试一下安装是否正确
sudo ovs-vsctl show

安装好之后,执行如下操作添加虚拟交换机,access口和trunk口

# 先up网卡
sudo ip link set ens38 up
sudo ip link set ens39 up

# 给交换机添加两个access口,id分别是1001和1002
sudo ovs-vsctl add-port br1001 ens38 tag=1001
sudo ovs-vsctl add-port br1001 ens39 tag=1002

# 添加一个trunk口
sudo ovs-vsctl add-port br1001 ens34 trunks=1001,1002

最后是客户机,只要加入switch-1这个lan区段就可以了

Untitled 4.png

这时客户机已经可以上网了,并且在网关上抓包是可以看到vlan id的

Untitled 5.png

Untitled 6.png

不过有个缺点,这样建立的VLAN之间是互通的,通过独臂路由,需要加防火墙规则禁掉

Untitled 7.png

vlan1002可以ping通vlan1001

模拟Super VLAN

前面虚拟交换机和客户机的配置不需要改变,需要调整一下网关的配置,删掉上面配置的VLAN,重新添加两个vlan设备,然后用一个网桥把这两个设备连起来

Untitled 8.png

然后用br_vlan添加一个接口,记得开启dhcp,现在配置ip是102网段

Untitled 9.png

然后客户端的机器现在dhcp获取的就是102网段的ip了

Untitled 10.png

Untitled 11.png

并且此时已经可以上网了,VLANID也可以带上了,但是还是和普通VLAN一个问题,两个不同的VLAN之间是可以通讯的,现在可以用ebtables来限制一下,在openwrt上执行

ebtables -P FORWARD DROP
ebtables -I FORWARD -i eth3.+ -o eth1.+ -j ACCEPT

只转发外网的包,内网之间的都DROP掉,这样就实现了超级VLAN的效果了

Untitled 12.png

可以上网,但是不同vlan间不通