Ubuntu 18.04LTS KVM VM 未由路由器 DHCP 分配 IP

Ubuntu 18.04LTS KVM VM 未由路由器 DHCP 分配 IP

我正在 Bionic Beaver 上设置 KVM,但我的路由器没有为虚拟机分配 IP 地址。但我可以从主机上看到它。

这是我的 netplan 设置:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp4s0:
      dhcp4: no
  bridges:
    br0:
      dhcp4: no
      addresses: [192.168.0.26/24]
      gateway4: 192.168.0.1
      mtu: 1500
      nameservers:
        addresses: [192.168.0.1]
      interfaces:
        - enp4s0

我的主机设置为静态 192.168.0.26,我可以正常登录。

KVM设置:

virt-install ...
            --network bridge=br0,model=virtio

我还添加了 iptable 规则:

iptables -A FORWARD -p all -i br0 -j ACCEPT

然而没有任何乐趣,在路由器屏幕上看不到其他可用的设备。

更新

我正在使用具有以下云配置的云图像:

#cloud-config
network:
  version: 2
  renderer: networkd
  ethernets:
    ens2:
      dhcp4: yes
users:
  - name: james
    groups: users, admin
    sudo: ALL=(ALL) NOPASSWD:ALL
    ssh_authorized_keys:
      - ssh-rsa

它实际上成功过一次,虚拟机被分配了一个 IP,访问非常简单。但后续尝试都失败了。

谢谢,

答案1

我使用路由配置,这意味着我的网桥没有直接连接到 eth 接口

iface ens3 inet static
address x. x. x. x
subnet x. x. x. x
 gateway x. x. x. x
post-up echo 1 > /proc/sys/net/ipv4/conf/ens3/proxy_arp
    post-up /etc/iptab_up
    post_down /etc/iptab_down

auto vmbr0
#NAT sub network, not bridged
iface vmbr0 inet static
    address  10.0.0.1
    netmask  255.0.0.0
    bridge_ports none
    bridge_stp on
    bridge_fd 0
    post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up         iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o ens3 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o ens3 -j MASQUERADE

用你的接口替换 ens3/vmbr0

答案2

完整地说,答案并不是配置有问题。我之前尝试的一次 cloud-init 修改了网络设置,而我无法解决。

为了解决这个问题,我从一个全新的云映像开始(最初是 Xenial,因为我持怀疑态度,后来又回到了 Bionic),它很好地连接到了桥上。我的建议是:每次尝试时都使用全新的映像,以使安装不可变。

相关内容