我正在 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),它很好地连接到了桥上。我的建议是:每次尝试时都使用全新的映像,以使安装不可变。