NetworkManager 和 lo 介面的別名變成了 team0 的別名
我想創建一個lo介面的別名(我需要它作為keepalived的VIP)。但是網路管理器似乎會產生問題。我已經創建了這個文件
/etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0 IPADDR=10.2.0.4 NETMASK=255.255.255.255 BROADCAST=10.2.0.255 ONBOOT=yes BOOTPROTO=none NM_CONTROLLED=yes NAME=lo:0
然後我設置連接
ifup lo:0
結果是一場災難
team0 8c1d7e93-389b-4f61-b33d-ab9b6ca634b1 team team0 lo:0 54af739a-9533-7b7b-8fcc-691e69842b36 ethernet enp1s0 team1 af58780b-b280-49cf-b540-b55e49b2c52f team team1 team-slave-enp7s0 b221675e-9604-4051-967e-a98b098c823d ethernet enp7s0 team-slave-enp8s0 f8711dde-29bc-442b-aedd-2005888cf314 ethernet enp8s0 team-slave-enp9s0 67983ded-870e-4e5a-a284-9cfbcb6f1eb8 ethernet enp9s0 team-slave-enp1s0 9bea1e34-a555-450c-9d0e-10bad2ee99e9 ethernet --
如您所見,team0(enp1s0) 的從屬設備已停用,lo:0 成為 team0 的從屬設備(原文如此!)。如果我刪除 lo:0 全部返回 ok
ifdown lo:0 nmcli conn show team0 8c1d7e93-389b-4f61-b33d-ab9b6ca634b1 team team0 team1 af58780b-b280-49cf-b540-b55e49b2c52f team team1 team-slave-enp1s0 9bea1e34-a555-450c-9d0e-10bad2ee99e9 ethernet enp1s0 team-slave-enp7s0 b221675e-9604-4051-967e-a98b098c823d ethernet enp7s0 team-slave-enp8s0 f8711dde-29bc-442b-aedd-2005888cf314 ethernet enp8s0 team-slave-enp9s0 67983ded-870e-4e5a-a284-9cfbcb6f1eb8 ethernet enp9s0
我也嘗試將其重命名為 lo:10 lo:20 但沒有任何改變
我找到了一個很好的解決方案,而不是使用不適用於此別名的 NetworkManager 我使用舊的良好 rc.local 腳本和 ip 命令在這種情況下,我需要一個虛擬 IP 地址(在 keepalived proxy1 和 proxy2 上配置)和也是“綁定”到介面 lo 作為兩個真實伺服器上的別名,兩個 arp_ignore 是必要的,否則會發生奇怪的網路問題。
vim /etc/rc.d/rc.local #!/bin/bash start() { echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce ip addr add 10.2.0.4/32 dev lo label lo:0 } stop() { echo stop } restart() { stop start } case "$1" in 'start') start ;; 'stop') stop ;; 'restart') restart ;; *) echo "usage: $0 start|stop|restart" esac chmod 755 /etc/rc.d/rc.local
在您的情況下,當呼叫 initscripts’ 時
ifup
,它僅呼叫nmcli connection up
. 這意味著,在這些情況下,initscripts 不做任何相關的事情,除了呼叫 NetworkManager。無論如何,initscripts 支持“別名”,它基本上是額外的 IP 地址。這些是帶有
:0
後綴的 ifcg 文件。我猜,如果你使用普通的 initscripts,這個 ifcfg- 文件可能會起作用。這意味著,如果您NM_CONTOLLED=no
完全設置或禁用 NetworkManager。NetworkManager 並不真正支持這樣的別名。它支持連接配置文件(基本上對應於正常 ifcfg 文件),並且每個配置文件支持多個 IP 地址。但是你不能將一個配置文件分成多個部分,就像 initscripts 的別名一樣。所以,我猜文件名中的這個冒號會混淆 NetworkManager。
initscripts 文件格式似乎不是那麼容易理解。例如,看到該文件,我不清楚 NetworkManager 將如何解釋該文件。但最後重要的是對文件的解釋。看
nmcli connection show lo:0
。然後應該清楚 NetworkManager 的行為方式。我認為原因是 Networkmanager 認識到這是ifcfg-lo
文件的別名,但別名 ifcfg 文件無法定義設備名稱。同時,ifcfg-lo
用於回送設備,始終不受 NetworkManager 管理。這可能是 NM 中的一個錯誤,與嘗試定義 NetworkManager 不支持的別名有關。