docker下使用quagga实现ospf协议

23 篇文章 1 订阅
11 篇文章 1 订阅

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

           

             

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker是一种容器化技术,可以将应用程序及其依赖项打包成一个独立的容器,实现跨平台、快速部署和可移植性。而Docker Compose是一个用于定义和运行多个Docker容器的工具,可以通过编写一个YAML文件来定义多个容器之间的关系和配置。 要使用Docker Compose编译实现LNMP网站建设,可以按照以下步骤进行: 1. 安装DockerDocker Compose:首先需要在你的机器上安装DockerDocker Compose。你可以在Docker官方网站上找到相应的安装指南。 2. 创建Docker Compose文件:在你的项目目录下创建一个名为docker-compose.yml的文件,并在其中定义你的LNMP服务。例如: ```yaml version: '3' services: nginx: image: nginx ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/nginx.conf - ./html:/usr/share/nginx/html depends_on: - php php: image: php:fpm volumes: - ./php.ini:/usr/local/etc/php/php.ini - ./php:/var/www/html mysql: image: mysql environment: MYSQL_ROOT_PASSWORD: your_password volumes: - ./mysql:/var/lib/mysql ``` 上述示例中,我们定义了三个服务:nginx、php和mysql。nginx服务使用官方的nginx镜像,将主机的80端口映射到容器的80端口,并挂载了nginx.conf和html目录。php服务使用官方的php:fpm镜像,并挂载了php.ini和php目录。mysql服务使用官方的mysql镜像,并设置了root用户的密码,并挂载了mysql目录。 3. 编写配置文件:根据你的需求,编写nginx.conf和php.ini配置文件,并放置在与docker-compose.yml文件同级的目录下。 4. 构建和启动容器:在项目目录下执行以下命令,构建和启动容器: ``` docker-compose up -d ``` 这将会根据docker-compose.yml文件中的定义,创建并启动LNMP服务的容器。 至此,你就成功使用Docker Compose编译实现了LNMP网站建设。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值