Ubuntu 16 KVM 为多个客户机创建桥接

Ubuntu 16 KVM 为多个客户机创建桥接

已解决,请参阅底部的编辑

我在一台具有多个 NIC 的裸机上运行 Ubuntu 服务器 16.04.1。我在 Ubuntu 上运行 KVM,并且上面有一些运行 Ubuntu 服务器 16 的 VM。

我希望创建以下网络结构:

  1. 一个不暴露给外部网络的私有网络,所有我来宾的虚拟机将共享该网络,并且主机可以通过该网络通过 SSH 连接到它们。

  2. 我可以在需要时连接和断开某些主机 NIC 的桥梁。对于这个问题,假设我有 1 个 NIC,它的 IP 地址是 10.0.0.6,它连接到一个连接到网络的路由器。

我以为我已经让它工作了,但是由于某种原因现在它不工作了,并且我的客人只能访问 10.xxx 网络,但无法访问外部网络(无法 ping 到 8.8.8.8)。

我认为由于某种原因,一次只有一位客人可以访问互联网,也许我需要更好地理解桥梁概念。

我的主机 /etc/network/interfaces 如下所示:

    auto br1
    iface br1 inet static
        address 10.0.0.6
        netmask 255.255.255.0
        gateway 10.0.0.138
        broadcast 10.0.0.255
        dns-nameservers 8.8.8.8 4.2.2.2
        bridge_ports eno1
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0
        post-up ip link set br1 address xx:xx..

其中,不是 xx:xx..,而是 'eno1' MAC 地址,eno1 是主机连接到互联网的 NIC,其 IP 为 10.0.0.6,路由器(实际上是防火墙..)的 IP 为 10.0.0.138

这是我用来将 br1 桥接到来宾的命令:

virsh attach-interface server_name --type bridge --source br1 --model virtio --live

现在在 KVM 我定义了一个虚拟网络,如下所示:

<network>
  <name>privatenet</name>
  <uuid>some uuid that the virsh generated</uuid>
  <bridge name='privatebr0' stp='on' delay='0'/>
  <mac address='52:54:00:36:61:7a'/>
  <ip address='192.168.0.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.0.2' end='192.168.0.254'/>
    </dhcp>
  </ip>
</network>

现在我的客人 /etc/network/interfaces 看起来像:

auto ens3
iface ens3 inet static
        address 192.168.0.22
        gateway 192.168.0.1
        netmask 255.255.255.0
        broadcast 192.168.0.255

auto ens8
iface ens8 inet dhcp

这是客人的 ifconfig 结果:

ens3      Link encap:Ethernet  HWaddr 52:54:00:e4:b2:06  
          inet addr:192.168.0.21  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fee4:b206/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6066 errors:0 dropped:20 overruns:0 frame:0
          TX packets:1100 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:379362 (379.3 KB)  TX bytes:566124 (566.1 KB)

ens8      Link encap:Ethernet  HWaddr 52:54:00:cc:78:12  
          inet addr:10.0.0.21  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fecc:7812/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5494 errors:0 dropped:0 overruns:0 frame:0
          TX packets:343 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:804727 (804.7 KB)  TX bytes:20928 (20.9 KB)

我可以 ping 通连接到 10.xxx 网络的其他计算机,但无法 ping 通 8.8.8.8

我错过了什么?

编辑: 好的,看来我连接和分离接口导致同一主机将注册不同的 mac 地址和 ip 地址,而防火墙出于某种原因不喜欢它。我在防火墙上保留了地址,现在我在连接命令中使用 --mac 和静态 IP。

相关内容