✌️作者:清水寺丞
☀️简介:正在学习unity,数据库,计算机通信网络和python。喜欢部署各种奇奇怪怪的小项目。喜欢就点个关注一起学习吧~⛄️⛄️⛄️⛄️
本文实践了使用mininet来搭建一个使用单臂路由实现VLAN间通信。
主要内容包含:linux设置vlan子接口,控制ovs交换机实现vlan功能,配置路由表项。
如果没有安装mininet的话
可以使用如下连接中的安装教程安装mininet虚拟机与实现图像化
http://t.csdn.cn/4XEIb
本文网络拓扑使用miniedit搭建,在环境中使用如下代码启动miniedit
cd ~/mininet/examples
sudo python2 miniedit.py
本文使用以下拓扑图
1.r2-eth0.xx为r2-eth0的vlantag=xx的子接口
2.trunk=11,22表示该端口会发送来自其他接口的vlantag为11,22的数据帧
3.vlanxx表示交换机该接口的vlantag为xx,该接口给所有数据帧打上xx的vlan标志
4.路由器只有使用对应子接口才能解析来自trunk带有vlantag的数据帧
5.请在miniedit中勾选左上角的Edit-》preferen中的Start CTL
点击run启动拓扑。
本模块命令都在mininet>中输入
首先给让s1按照正常交换机的方式运作
sh ovs-ofctl add-flow s1 priority=0,actions=normal
输入如下命令查看连接情况
links
发现s1-eht2与h1-eth0相连,使用如下命令设置s1-eth2为vlan11接口
sh ovs-vsctl set port s1-eth2 tag=11
同理,设置s1-eht3为vlan22接口
sh ovs-vsctl set port s1-eth3 tag=22
接下来配置交换机连接路由器的s1-eth1接口为trunk,允许带有vlantag为11,22的数据帧通过
sh ovs-vsctl set port s1-eth1 trunk=11,22
交换机与VLAN配置结束。
首先需要打开路由器的终端,使用如下命令打开路由器终端
配置路由器的阶段命令非特别说明将全在如下终端执行
--------------------------------------------------------------------------------------------------------------------------------
由上图可见路由器的r2-eth0接口连接s1-eth1,即连接trunk,使用如下命令给路由器该接口设置对应vlan11与vlan22的子接口。
命令说明:vconfig add r2-eth0 vlantag 为给 r2-eth1设备添加vlantag的子接口r2-eth0.vlantag
vconfig add r2-eth0 11
vconfig add r2-eth0 22
接下来使用如下命令设置子接口ip与掩码,并且开启子接口
命令说明:ifconfig r2-eth0.11 10.0.0.1/24 up 的意思是设置接口r2-eth0.11的ip与掩码为10.0.0.1/24。up的意思为启动该接口。
ifconfig r2-eth0.11 10.0.0.1/24 up
ifconfig r2-eth0.22 10.0.1.1/24 up
此时测试h1与h2能否ping其网关(请在下图中界面执行),可见可以ping通了,说明子接口生效。
此时回到r2的终端输入如下指令查看路由表
route -n
发现在添加虚拟子接口时已经添加了对应的路由表项。
故此时在如下窗口可以直接测试h1 ping h2查看连通性
h1和h2可以通信,单臂路由vlan网络搭建成功。
#设置路由表表项,如直连网络gw字段可省略
route add -net 目标网络号/掩码位数 gw 下一条ip dev 发送接口
#删除路由表表项
route del -net 目标网络号/掩码位数
如本次的两条路由表项如果没有自动添加可以使用以下方法添加
route add -net 10.0.0.0/24 dev r2-eth0.11
route add -net 10.0.1.0/24 dev r2-eth0.22