配置网桥后 ubuntu KVM guest 没有网络连接

标签 ubuntu networking virtual-machine kvm system-administration

我正在尝试将 KVM guest (Ubuntu 18.04) 添加到本地网络,就像网络中的其他真实服务器一样。我在主机系统(Ubuntu 18.04)中配置了 KVM 桥接口(interface),并且连接正常。主机系统可通过本地网络访问其他服务器。

主机系统的netplan配置:

$ cat 01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: false
  bridges:
    br0:
      interfaces: [eno1]
      addresses: [192.168.1.105/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [x.x.x.x, x.x.x.x]
      dhcp4: false

ip a 输出显示桥接口(interface):

    10697: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 62:cb:37:3c:c0:70 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.105/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::60cb:37ff:fe3c:c070/64 scope link 
       valid_lft forever preferred_lft forever

我使用网桥 br0 创建了 KVM 网络接口(interface)

virsh net-edit br0 输出:

<network>
  <name>br0</name>
  <uuid>d277e3d1-b34e-4b1f-ae69-6a3c8f75626c</uuid>
  <forward mode='bridge'/>
  <bridge name='br0'/>
</network>
developer@serv31:~$ virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 br0                  active     yes           yes
 default              active     yes           yes

KVM guest 域接口(interface)信息:

    <interface type='network'>
      <mac address='52:54:00:14:dc:af'/>
      <source network='br0'/>
      <model type='rtl8139'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

在 guest 虚拟机中,我配置了 netplan 以为其提供静态 IP。它确实使用配置的 IP 启动。

$ cat 50-cloud-init.yaml
network:
  version: 2
  ethernets:
    ens3:
      addresses: [192.168.1.50/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [x.x.x.x, x.x.x.x]
      dhcp4: false

guest 虚拟机ip a输出:

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:14:dc:af brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.50/24 brd 192.168.1.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe14:dcaf/64 scope link 
       valid_lft forever preferred_lft forever

guest 虚拟机能够访问(ping、telnet)主机系统,主机系统可以访问 guest 虚拟机。 但网络中没有其他服务器可以访问 guest 虚拟机,并且 guest 虚拟机也无法访问互联网。 请帮我解决这个问题。如果您需要更多信息,请告诉我。

最佳答案

sudo iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
sudo iptables -A FORWARD -i br0 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i virbr0 -o br0 -j ACCEPT
sudo iptables -I FORWARD 1 -i br0 -o br0 -j ACCEPT

上述规则解决了问题。

关于配置网桥后 ubuntu KVM guest 没有网络连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61873180/

相关文章:

networking - 广播

networking - 将单个端口用于多个套接字的标准方法?

ssh - 在我的 VM 中我的 vagrant 根文件夹中看不到任何文件或文件夹

powershell - Azure WinRM 的认证测试工具 1.2 无法完成操作

node.js - 在 Ubuntu 服务器上运行 selenium-standalone npm 包

ubuntu - Ambari 安装与其余的 hadoop 生态系统

java - 在 ubuntu 14.04 中将 open jdk 8 降级为 7

python - pylucene:安装错误

asp.net-mvc - 使用 .net XCC 库将 Azure Webapp 连接到 VM 上的 azure Marklogic:使用了与请求的协议(protocol)不兼容的地址 [::ffff:10.10.1.4]:9501

java - 您如何检测 Java 虚拟机内存不足的情况?