我有一个运行 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
,但似乎没有任何效果。我还尝试删除 和 的节eno1
,eno2
以便它们仅通过 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 年的值;这只是又一个容易输入错误的地方。)