作業系統:Ubuntu 20.04.3,安裝了所有最新更新。
我正在嘗試創建一個橋接口,以奴役電流(eno1)
網路規劃配置:
# 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 目前的 bug 太多,無法在不複製 IP/路由的情況下支援上述配置。
解決方案是切換回 NetworkManager。
在 netplan 的 .yaml 中,請確保將渲染器行替換為
renderer: NetworkManager
確保在 /etc/NetworkManager/NetworkManager.conf 中啟用網路管理介面(下方提供的受影響部分)
[ifupdown] managed=true
在 etc/NetworkManager/conf.d/10-globally-management-devices.conf 中定義要過濾的介面類型:
[keyfile] unmanaged-devices=*,except:type:wifi,except:type:wwan,except:type:ethernet
注意:確保檔案 /usr/lib/NetworkManager/conf.d/10-globally-management-devices.conf 為空(大小為零)。
重新啟動 NetworkManager,或者更好的是重新啟動系統:
sudo systemctl restart network-manager
注意:如果使用 GUI 模式,可能需要在「設定」>「網路」中停用有線連線的自動啟動,以停用不斷抱怨無法啟動對應連線的 NetworkManager。
答案2
@KonstantinBoyandin - 這裡提供的系統資訊根本不夠任何結論。也就是說,這是對您所遇到的情況的有根據的猜測:
IIRC 預設安裝的 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
withsystemd-networkd
並停用,而在桌面 Linux 上,我僅在需要時才保留並利用其他網路服務。NetworkManager
NetworkManager
在典型的 Ubuntu 20.04 伺服器上,以下是如何使用 netplan 並避免 OP 中的衝突:
- 配置伺服器(安裝Ubuntu等)
- 建立所需的網路規劃配置
- 編輯
/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 連接不依賴您正在配置的接口,因為您可能會斷開連接,從而無法完成配置。