主机与桥接虚拟机之间缺少路由

主机与桥接虚拟机之间缺少路由

我有以下设置:

  1. 物理主机 Lubuntu 19.04
  2. 虚拟机 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
  • 选择AddEnter
  • 输入您的Profile nameDevice。为了便于配置,请将两者保留为br01
  • 然后Slaves选择Add并给予Profile namebrslave01
  • 并在Device部分中输入您的Ethernet设备ID(在您的情况下是enp0s31f6
  • 选择Ok
  • 再次Ok退出用于控制网络管理器的文本 UI。

现在您需要重置网络,只需重新启动或

# service networking restart# systemctl restart network-manager 任何适合您的情况。

然后您可以转到现有的 KVM 并确保它已关闭。然后在共享设备下添加网络设备并输入您的新网络 ID bro1

之后,删除旧网络,macvtap并根据需要配置您的客户操作系统。

就是这样,它应该会很有效。如果您需要任何帮助,请大声说出来。

相关内容