OVS的 VLAN配置



一、安裝docker
1) 安裝 Docker
root@srv1:~# apt install docker.io -y

2) 配置加速器
root@srv1:~# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://3laho3y3.mirror.aliyuncs.com"]
}

3) 啟動 Docker
root@srv1:~# systemctl restart docker
root@srv1:~# systemctl enable docker
二、下載Ubuntu鏡像
docker search sshd-ubuntu
docker pull boyanbonev/sshd-ubuntuF
三、使用OVS創建網橋
ovs-vsctl add-br vswitch0
ovs-vsctl add-br vswitch1
四、創建Docker容器做測試
docker run -t -i -d --name vm01 --net=none --privileged boyanbonev/sshd-ubuntu /bin/bash
docker run -t -i -d --name vm02 --net=none --privileged boyanbonev/sshd-ubuntu /bin/bash
docker run -t -i -d --name vm03 --net=none --privileged boyanbonev/sshd-ubuntu /bin/bash
docker run -t -i -d --name vm04 --net=none --privileged boyanbonev/sshd-ubuntu /bin/bash 五、使用OVS給容器添加網卡
ovs-docker add-port vswitch0 eth0 vm01 --ipaddress=192.168.1.2/24
ovs-docker add-port vswitch1 eth0 vm02 --ipaddress=192.168.1.3/24
ovs-docker add-port vswitch0 eth0 vm03 --ipaddress=192.168.1.4/24
ovs-docker add-port vswitch1 eth0 vm04 --ipaddress=192.168.1.5/24
六、連接網橋
1、將網卡添加到網橋(此處會出現錯誤,想想看為什么?)
ovs-vsctl add-port vswitch0 patch_to_vswitch1
ovs-vsctl add-port vswitch1 patch_to_vswitch0
2、設置網卡連接模式
ovs-vsctl set interface patch_to_vswitch1 type=patch
ovs-vsctl set interface patch_to_vswitch0 type=patch
3、設置網橋的連接
ovs-vsctl set interface patch_to_vswitch0 options:peer=patch_to_vswitch1
ovs-vsctl set interface patch_to_vswitch1 options:peer=patch_to_vswitch0
七、查看接口
ovs-vsctl show
八、測試連通性
root@user1-virtual-machine:~# docker attach vm01
root@13a5e261a900:/#
root@13a5e261a900:/# ping 192.168.1.3
九、配置VLAN
1、查看網橋接口 id和容器的對應關系
# ovs-vsctl list interface 6eef85c4718a4_l | grep container_id
external_ids : {container_id="vm04", container_iface="eth0"}
2、設置該接口的vlan tag
# ovs-vsctl set port 6eef85c4718a4_l tag=200
3、其他操作意義同上
# ovs-vsctl list interface 39c0765e1c964_l | grep container_id
external_ids : {container_id="vm02", container_iface="eth0"}
# ovs-vsctl set port 39c0765e1c964_l tag=100

# ovs-vsctl list interface 2720669d9c064_l | grep container_id
external_ids : {container_id="vm03", container_iface="eth0"}
# ovs-vsctl set port 2720669d9c064_l tag=200

# ovs-vsctl list interface f4e1ae64ef704_l | grep container_id
external_ids : {container_id="vm01", container_iface="eth0"}
# ovs-vsctl set port f4e1ae64ef704_l tag=100
十、測試容器連通性
1、 與相同vlan的連通性
# docker attach vm01
[root@ffa59e57d97f /]# ping 192.168.1.3
2、 與不同vlan的連通性 [root@ffa59e57d97f /]# ping 192.168.1.4 -c 1
十一、 設置網橋之間的Trunk
1、 將trunk 設置為只允許 vlan100通過
ovs-vsctl set port patch_to_vswitch1 VLAN_mode=trunk
ovs-vsctl set port patch_to_vswitch0 VLAN_mode=trunk

ovs-vsctl set port patch_to_vswitch0 trunk=100
ovs-vsctl set port patch_to_vswitch1 trunk=100
2、 使用vm03和vm04測試 vlan200則無法通信
# docker attach vm03
[root@c17ff55307d7 /]# ping 192.168.1.5
十二、查看OVS的流表
ovs-ofctl dump-flows vswitch0
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=2504.456s, table=0, n_packets=292, n_bytes=36188, idle_age=410,
priority=0 actions=NORMAL

ovs-ofctl dump-flows vswitch1
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=46151.880s, table=0, n_packets=155, n_bytes=10998, idle_age=63,
priority=0 actions=NORMAL

附加一些OVS配置命令:
1、設置VLAN mode
ovs-vsctl set port <port name> VLAN_mode=trunk|access|native-tagged|native-untagged
2、設置VLAN tag
ovs-vsctl set port <port name> tag=<tag 值>
3、設置VLAN trunk
ovs-vsctl set port <port name> trunk=100,200
4、刪除port 的配置
ovs-vsctl remove port <port name> <config item> <config value>
#例如
ovs-vsctl remove port <port name> tag 100
ovs-vsctl remove port <port name> trunk 200
5、查看port 的屬性
Bash
ovs-vsctl list interface <port name>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM