已解决,请参阅底部的编辑
我在一台具有多个 NIC 的裸机上运行 Ubuntu 服务器 16.04.1。我在 Ubuntu 上运行 KVM,并且上面有一些运行 Ubuntu 服务器 16 的 VM。
我希望创建以下网络结构:
一个不暴露给外部网络的私有网络,所有我来宾的虚拟机将共享该网络,并且主机可以通过该网络通过 SSH 连接到它们。
我可以在需要时连接和断开某些主机 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。