在 Debian 中使用桥接接口时网络链接断开

在 Debian 中使用桥接接口时网络链接断开

我有一个运行 Debian buster 的虚拟机管理程序(基于内核的虚拟机),我最近从 Debian stretch 升级了它。我使用网络桥接在虚拟机管理程序上运行的所有虚拟机之间共享我的互联网连接(它有两个以太网端口)。多年来,它一直运行良好,直到几个月前我升级到 Debian buster。起初一切似乎都运行正常,但我发现在添加网络桥接后,虚拟机管理程序本身没有互联网连接。当这种情况发生时,虚拟机本身确实有一个可用的互联网连接,所以它部分工作正常。

这是我的配置:

/etc/network/interfaces

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet static
    address 192.168.1.11
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.13 208.67.222.222 208.67.220.220

auto eno2
iface eno2 inet static
    address 192.168.1.12
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-nameservers 192.168.1.13 208.67.222.222 208.67.220.220

192.168.1.13我自己的 DNS 服务器在哪里。

/etc/network/interfaces.d/br0

auto br0
iface br0 inet static
  address 192.168.1.130
  bridge_ports eno1 eno2
  bridge_stp on
  bridge_maxwait 0
  bridge_fd 0

这是那里唯一的文件:

$ ls -la /etc/network/interfaces.d/
total 12
drwxr-xr-x 2 root root 4096 Nov 13 03:13 .
drwxr-xr-x 7 root root 4096 Nov 13 03:13 ..
-r--r--r-- 1 root root  124 Nov  5 03:39 br0

当我通过移除线路来禁用桥接器时source /etc/network/interfaces.d/*,互联网运行正常:

$ nc -vz www.google.nl 80
Connection to www.google.nl 80 port [tcp/http] succeeded!

当启用桥接时,互联网在虚拟机管理程序上停止工作(但虚拟机确实有互联网):

$ nc -vz www.google.nl 80
DNS fwd/rev mismatch: www.google.nl != ams15s40-in-f3.1e100.net
www.google.nl [172.217.168.227] 80 (http) : No route to host

$ ssh 192.168.1.13 nc -vz www.google.nl 80
DNS fwd/rev mismatch: www.google.nl != ams15s40-in-f3.1e100.net
www.google.nl [172.217.168.227] 80 (http) open

$ traceroute -n www.google.nl
traceroute to www.google.nl (172.217.168.227), 30 hops max, 60 byte packets
 1  192.168.1.11  3075.828 ms !H  3075.817 ms !H  3075.814 ms !H

$ ip route show
default via 192.168.1.1 dev eno1 onlink 
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.130 
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.11 
192.168.1.0/24 dev eno2 proto kernel scope link src 192.168.1.12

$ 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: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 64:51:06:d8:89:bc brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.11/24 brd 192.168.1.255 scope global eno1
       valid_lft forever preferred_lft forever
3: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
    link/ether 64:51:06:d8:89:bd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.12/24 brd 192.168.1.255 scope global eno2
       valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 64:51:06:d8:89:bc brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.130/24 brd 192.168.1.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::6651:6ff:fed8:89bc/64 scope link 
       valid_lft forever preferred_lft forever
5: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:8d:65:33 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe8d:6533/64 scope link 
       valid_lft forever preferred_lft forever
6: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:46:f1:5a brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe46:f15a/64 scope link 
       valid_lft forever preferred_lft forever
...

我尝试了几种方法。例如,我将节移至br0/etc/network/interfaces禁用了该source行,但我甚至无法通过 SSH 进入机器(为什么?)。我还尝试了dhcp和的不同组合static,但似乎没有任何效果。我还尝试删除 和 的节eno1eno2以便它们仅通过 DHCP 获取地址,但结果相同。我已阅读了https://wiki.debian.org/BridgeNetworkConnections但我完全被困住了。这特别令人沮丧,因为我知道这个配置以前工作得很好。我希望有人能帮我解决这个问题。

答案1

作为桥接成员的接口不再使用 IP — 只有桥接才使用。这意味着 eno1 或 eno2 上的任何 IP 地址都将被忽略,并且您的默认路由dev eno1也会失效。

因此,不要在物理接口上指定任何地址、网络掩码、广播或网关 - 将所有配置移动到 br0:

iface eno1 inet manual

iface eno2 inet manual

auto br0
iface br0 inet static
    address 192.168.1.130/24
    gateway 192.168.1.1
    bridge_ports eno1 eno2
    bridge_stp on
    bridge_maxwait 0
    bridge_fd 0

(实际上,不要配置“广播”根本。操作系统会根据您的网络掩码自动计算,因此您只指定了已作为默认值约 40 年的值;这只是又一个容易输入错误的地方。)

相关内容