虚拟网络空间环境构建

 

网络虚拟空间是构建轻量级虚拟化环境的基础。
构建一个网络虚拟空间有助于于理解虚拟化技术。
本文描述构建一个简单虚拟网络空间的过程。
拓扑示意图如下:

1.测试环境

   2台虚拟机(宿主机1台,另有外部机器协助测试),1个用于连接内部的网桥(虚拟网桥)  1台虚拟路由器
   2对虚拟网卡(r1-inside,r1-outside,rex1-inside,rex1-outside),1个屋里网桥,一个物理网卡(enp0s25)
   宿主机CentOS7.4

  虚拟网桥连接虚拟路由,虚拟路由连接物理网桥,   物理网桥绑定物理网卡

2.测试目标
   vm1和vm2互相通讯
   vm1,vm2可对通过虚拟路由对外通讯

3.实施步骤

   3.1.创建网桥

        创建物理网桥:brctl addbr br-ex

        创建虚拟网桥:brctl addbr br-in

        激活物理网桥:ip link set br-ex up
        激活虚拟网桥:ip link set br-in up

   3.2开启ip转发

        在宿主机需要开启ip转发。编辑/etc/sysctl.config,添加如下:
        net.ipv4.ip_forward = 1
        保存退出。执行生效命令:

        sysctl -p
    3.3 创建虚拟路由
          虚拟路由器命名为r1

          ip netns add r1

    3.4.创建2对网卡
          第一对虚拟网卡,一端绑虚拟网桥,一端绑虚拟路由

          ip link add  r1-inside type veth peer name r1-outside #创建一对网卡

          brctl addif br-in r1-inside  #虚拟网卡绑定在虚拟网桥
          ip link set r1-inside up #激活

          ip link set r1-outside netns r1 #虚拟网卡绑定在虚拟路由r1

 

          第二对虚拟网卡,一段绑路由,一端绑物理网桥

          ip link add  rex1-inside type veth peer name rex1-outside

          brctl addif br-ex rex1-outside #虚拟网卡绑定在屋里路由

          ip link set rex1-outside up #激活虚拟网卡

          ip link set rex-inside netns r1 #虚拟网卡绑定虚拟路由
      3.5配置物理网卡和物理网桥
          移除物理网卡IP地址,IP设置到物理网桥上,将物理网桥和物理网卡绑定
          ip addr del 192.168.0.140 dev enp0s25;ip addr set 192.168.0.140/24 dev br-ex;brctl addif br-ex enp0s25;
      3.6配置虚拟路由

         r1绑定的网卡可以改名,例如:

         ip netns exec r1 ip link set r1-outside name eth0
         以下依然使用初始网卡名。

         给连接虚拟网桥方向的虚拟网卡添加i地址

         ip netns exec r1 ip addr add 10.0.0.254/24 dev rex1-inside

         ip netns exec r1 ip link set r1-outside up

 

         给连接物理网桥方向的网卡添加地址

         ip netns exec r1 ip addr add 192.168.0.141/24 dev rex1-outside

         ip netns exec r1 ip link set rex1-inside up

      3.7配置虚拟机

           使用“virsh edit vm1”

           修改interface中的网桥名和mac值即可

           启动主机后,设置ip为10.0.0.1/24

          使用ping10.0.0.254即r1上的地址,应该可以成功

 

          设置网关

          route add default gw 10.0.0.254

           vm2使用相同方法修改配置。
      3.8实现外部包可被接受
          到目前,已经实现虚拟机间通讯,虚拟机跟路由通讯,虚拟机通讯物理网卡。
         但还不能成功与物理网卡之外的主机通讯,原因是回应的包无法被正确接收。
         以下采取一种最简单的方式实现,即实质SNAT
        给路由器r1添加一条SNAT策略,在宿主机执行如下命令:

        ip netns exec r1 iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j SNAT --to-source 192.168.0.141 

        再测试发现内部主机已经可以通讯外部主机。
      3.9提供dhcp
          r1路由器还可以提供dhcp功能给内部主机
         这需要dnsmasq支持,如果没安装,可执行如下:

         yum install dnsmasq

         安装成功后,执行如下命令:
         ip netns exec r1 dnsmasq --dhxp-range 10.0.0.1,10.0.0.100
 

至此,一个最简单的虚拟网络空间测试环境构建完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值