操作系统:Ubuntu 20.04.3,已安装所有最新更新。
我正在尝试创建一个桥接接口,以奴役当前(eno1)
Netplan 配置:
# This is the network config written by 'subiquity'
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: false
dhcp6: false
bridges:
br0:
interfaces: [eno1]
addresses: [10.20.0.21/24]
gateway4: 10.20.0.1
nameservers:
search: [example.com]
addresses: [10.20.0.1,10.20.0.10]
dhcp4: false
dhcp6: false
当我运行“netplan try”时,我看到:
** (generate:2332): WARNING **: 12:54:41.673: Problem encountered while validatingdefault route consistency.Please set up multiple routing tables and use `routing-policy` instead.
Error: Conflicting default route declarations for IPv4 (table: main, metric: default), first declared in br0 but also in eno1
如果我重新启动系统,结果如下:
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.20.0.1 0.0.0.0 UG 0 0 0 br0
default 10.20.0.1 0.0.0.0 UG 0 0 0 eno1
10.20.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
10.20.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
系统仍然可用,但是配置明显异常。
$ networkctl
networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier unmanaged
2 eno1 ether routable configured
3 br0 bridge routable configured
$ 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 pfifo_fast master br0 state UP group default qlen 1000
link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
inet 10.20.0.21/24 brd 10.1.0.255 scope global eno1
valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 18:c0:4d:63:da:da brd ff:ff:ff:ff:ff:ff
inet 10.20.0.21/24 brd 10.1.0.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::700e:94ff:fea6:fc98/64 scope link
valid_lft forever preferred_lft forever
如何使 eno1 成为从属并防止其创建路由条目/IP 地址的重复?
1 月 21 日更新:/etc/netplan
答案1
2022 年 1 月 22 日的解决方法:
看起来 netplan 和/或 networkd 目前有太多错误,无法在不重复 IP/路由的情况下支持上述配置。
解决方案是切换回 NetworkManager。
在 netplan 的 .yaml 中,确保将 renderer 行替换为
renderer: NetworkManager
确保在 /etc/NetworkManager/NetworkManager.conf 中启用网络管理接口(下面提供受影响的部分)
[ifupdown] managed=true
定义在 etc/NetworkManager/conf.d/10-globally-managed-devices.conf 中过滤哪些接口类型:
[keyfile] unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet
注意:确保文件 /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf 为空(零大小)。
重新启动 NetworkManager,或者更好的是,重新启动系统:
sudo systemctl restart network-manager
注意:如果使用 GUI 模式,可能需要在“设置”>“网络中”禁用有线连接的自动启动,以禁用 NetworkManager 不断抱怨无法激活相应连接。
答案2
@KonstantinBoyandin - 这里提供的关于你的系统的信息不够多,任何结论。话虽如此,以下是对您遇到的情况的合理猜测:
我记得 20.04 的默认安装已经使用了NetworkManager
。这意味着开箱即用,NetworkManager
很可能已经配置eno1
并创建了您观察到的默认路由:
default 10.20.0.1 0.0.0.0 UG 0 0 0 eno1
没有什么可以阻止你尝试同时使用NetworkManager
和 systemd-networkd
- 我想不出原因这样做,但没有什么可以阻止它。我利用这一点来避免NetworkManager
在已经运行的系统上设置 wireguard 接口时遇到的问题NetworkManager
。这样做时,你必须请注意,这些工具可以相互交互,例如,如果管理的物理以太网适配器NetworkManager
发生故障,会发生什么?依赖于该物理接口的虚拟接口可能会失败,也可能不会……取决于虚拟适配器的配置外部的到NetworkManager
。
当你将渲染器切换到时NetworkManager
,此时一切都开始工作,因为现在你正在使用netplan
配置NetworkManager
作为网络配置的唯一服务,防止任何“交叉配置”。
对于遇到此问题的其他任何人,有几种方法可以解决此问题,您可以停止使用NetworkManager
其他渲染器配置要配置的接口,也可以完全禁用NetworkManager
。我倾向于在服务器上切换到netplan
并systemd-networkd
禁用NetworkManager
,而在桌面 Linux 上,我NetworkManager
仅在需要时离开并利用其他网络服务。
在典型的 Ubuntu 20.04 服务器上,以下是如何使用 netplan 并避免 OP 中的冲突:
- 配置服务器(安装 Ubuntu 等)
- 创建所需的 netplan 配置
- 编辑
/etc/network/interfaces
并注释掉适用于您在其中配置的接口的所有部分netplan
:
# The primary network interface
# auto eno1
# iface eno1 inet dhcp
- 重新启动(或停止)
NetworkManager
:sudo systemctl <restart|stop> NetworkManager.service
- 测试你的
netplan
配置:sudo netplan try
- 如果一切看起来正确并且正常工作,请
Enter
按提示点击
(选修的)
- 禁用
NetworkManager
:sudo systemctl disable NetworkManager.service
(笔记)
- 虽然这很明显,但以上内容假设您具有本地控制台访问权限,或者您的 SSH 连接不依赖于您正在配置的接口,因为您可能会断开连接并因此无法完成配置。