1、实现拓扑如下:
2、连接基本拓扑(其中主机是常规的ubuntu、交换机使用的是ovs、路由器是自己封装的quagga)
使用以下语句,连接基本的拓扑结构
sudo ovs-vsctl add-br s1 #生成交换机s1
sudo docker run -itd --network=none --name=h1 --privileged=true tzk/ubuntu
sudo docker run -itd --network=none --name=h2 --privileged=true tzk/ubuntu
sudo docker run -itd --network=none --name=server --privileged=true tzk/ubuntu
sudo docker run -itd --network=none --name=Rt170 --privileged=true tzk/quagga
sudo docker run -itd --network=none --name=Rt171 --privileged=true tzk/quagga
#交换机连接h1、h2和Rt170
sudo ovs-docker add-port s1 eth1 h1 --ipaddress=192.168.100.10/24 --gateway=192.168.100.170
sudo ovs-docker add-port s1 eth1 h2 --ipaddress=192.168.100.11/24 --gateway=192.168.100.170
sudo ovs-docker add-port s1 eth1 Rt170 --ipaddress=192.168.100.170/24
#Rt170、Rt171、server相连
sudo mkdir /var/run/netns
PID1=$(sudo docker inspect -f '{{.State.Pid}}' Rt170)
PID2=$(sudo docker inspect -f '{{.State.Pid}}' Rt171)
PID3=$(sudo docker inspect -f '{{.State.Pid}}' server)
sudo ln -s /proc/$PID1/ns/net /var/run/netns/$PID1
sudo ln -s /proc/$PID2/ns/net /var/run/netns/$PID2
sudo ln -s /proc/$PID3/ns/net /var/run/netns/$PID3
sudo ip link add v1 type veth peer name v2
sudo ip link set v1 netns $PID1
sudo ip link set v2 netns $PID2
sudo ip netns exec $PID1 ip link set v1 up
sudo ip netns exec $PID1 ip addr add 192.168.50.170/24 dev v1
sudo ip netns exec $PID2 ip link set v2 up
sudo ip netns exec $PID2 ip addr add 192.168.50.171/24 dev v2
sudo ip link add v3 type veth peer name v4
sudo ip link set v3 netns $PID2
sudo ip link set v4 netns $PID3
sudo ip netns exec $PID2 ip link set v3 up
sudo ip netns exec $PID2 ip addr add 192.168.200.171/24 dev v3
sudo ip netns exec $PID3 ip link set v4 up
sudo ip netns exec $PID3 ip addr add 192.168.200.20/24 dev v4
#给服务器server设置默认网关为Rt171
sudo ip netns exec $PID3 ip route add default via 192.168.200.171
3、实现路由器功能。以上2步骤的实现,可以在同网段相互ping通,但是Rt170与Rt171并没有实现其该有的路由功能。
我们结下来实现其路由功能(以Rt171为例)
3.1、进入Rt171路由器中开大zebra与ospfd
3.2、配置路由器的ospf协议
3.3、查看邻居信息 show ip ospf neighbor
以上的操作是针对Rt171的,Rt170相同,主要是在3.2步骤不同,下图是针对Rt170的3.2的ospf协议配置
Rt170的配置完成neighbor信息如下
4、查看Rt170与Rt171配置效果 show ip route
4.1、Rt170的
4.2、Rt171的
5、测试
5.1、h1 ping server
5.2、server ping h1