![主机与桥接虚拟机之间缺少路由](https://linux22.com/image/1597349/%E4%B8%BB%E6%9C%BA%E4%B8%8E%E6%A1%A5%E6%8E%A5%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%B9%8B%E9%97%B4%E7%BC%BA%E5%B0%91%E8%B7%AF%E7%94%B1.png)
我有以下设置:
- 物理主机 Lubuntu 19.04
- 虚拟机 Ubuntu 18.04
我设法在主机网络和虚拟机网络之间创建了桥接网络,因此它们都处于同一网络中。网络中的每台机器(主机除外)都能够与虚拟机通信。
接口列表 - 主机
root:~# ip addr show
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: enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global enp0s31f6
valid_lft forever preferred_lft forever
inet6 XXXXXXXXXXXXXXXXX/64 scope link
valid_lft forever preferred_lft forever
3: macvtap0@enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 500
link/ether 52:54:00:0f:c7:1f brd ff:ff:ff:ff:ff:ff
inet6 fe80::5054:ff:fe0f:c71f/64 scope link
valid_lft forever preferred_lft forever
主机的路由列表:
root:~# ip route
default via 192.168.1.1 dev enp0s31f6
192.168.1.0/24 dev enp0s31f6 proto kernel scope link src 192.168.1.100
VM接口列表:
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:0f:c7:1f brd ff:ff:ff:ff:ff:ff
inet 192.168.1.155/24 brd 192.168.1.255 scope global ens3
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe0f:c71f/64 scope link
valid_lft forever preferred_lft forever
所以我认为主机必须知道他应该通过设备(virt.bridge)“macvtap0@enp0s31f6”访问虚拟机 192.168.1.155,并添加以下路由: 192.168.1.155 dev macvtap0 范围链接
default via 192.168.1.1 dev enp0s31f6
192.168.1.0/24 dev enp0s31f6 proto kernel scope link src 192.168.1.100
192.168.1.155 dev macvtap0 scope link
.
root:~# ping 192.168.1.155
PING 192.168.1.155 (192.168.1.155) 56(84) bytes of data.
From 192.168.1.100 icmp_seq=1 Destination Host Unreachable
From 192.168.1.100 icmp_seq=2 Destination Host Unreachable
From 192.168.1.100 icmp_seq=3 Destination Host Unreachable
不幸的是,这没有起作用,而且我确信我还不了解 ip route 所需的语法/知识。
那么有人可以帮我吗?
谢谢!
答案1
我看到您正在使用macvtap
桥接网络。
3: macvtap0@enp0s31f6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 500
link/ether 52:54:00:0f:c7:1f brd ff:ff:ff:ff:ff:ff
inet6 fe80::5054:ff:fe0f:c71f/64 scope link
valid_lft forever preferred_lft forever
请记住,虽然macvtap
您可以通过其他网络设备连接到客户操作系统(在您的情况下是 Ubuntu 18.04),但实际上您无法使用主机计算机(在您的情况下再次是 Lubuntu 19.04)连接到它。
那么解决方案是什么?
嗯,实际上你需要创建,bridge-adapter
以便你可以通过这两者host
和其他网络计算机进行连接,并且有多种方法可以实现这一点。我使用的network manager
是我的情况,但你也可以选择其他。
- 在你的终端类型
# nmtui
- 选择
Edit a connection
并按下Enter
- 选择
Add
并Enter
- 输入您的
Profile name
和Device
。为了便于配置,请将两者保留为br01
- 然后
Slaves
选择Add
并给予Profile name
它brslave01
。 - 并在
Device
部分中输入您的Ethernet
设备ID(在您的情况下是enp0s31f6
) - 选择
Ok
- 再次
Ok
退出用于控制网络管理器的文本 UI。
现在您需要重置网络,只需重新启动或
# service networking restart
或
# systemctl restart network-manager
任何适合您的情况。
然后您可以转到现有的 KVM 并确保它已关闭。然后在共享设备下添加网络设备并输入您的新网络 ID bro1
。
之后,删除旧网络,macvtap
并根据需要配置您的客户操作系统。
就是这样,它应该会很有效。如果您需要任何帮助,请大声说出来。