Rhel

如何更改網路介面名稱

  • December 17, 2021

我正在嘗試編寫一個 bash 腳本來配置多個網路介面,並且在某些 NIC 獲取有線連接名稱而不是設備名稱時遇到問題。例如

$ nmcli dev status
DEVICE  TYPE      STATE      CONNECTION         
ens22   ethernet  connected  ens22              
ens18   ethernet  connected  Wired connection 2 
ens19   ethernet  connected  ens19              
ens20   ethernet  connected  Wired connection 1 
ens21   ethernet  connected  ens21              
lo      loopback  unmanaged  --     

這樣做的影響是這些命令失敗,因為它需要的是連接名稱,而不是設備名稱:

printf "\n${YELLOW}### Configure ens20: ###${NC}\n"
sudo nmcli con mod ens20 ipv4.addresses 10.70.20.254/24
sudo nmcli con mod ens20 ipv4.dns 8.8.8.8
sudo nmcli con mod ens20 ipv4.method manual

問題:

  1. 是什麼導致只有某些介面獲得名稱“有線連接”?
  2. nmcli 中是否有使用介面名稱的選項?
  3. 是否可以重命名連接?我曾嘗試重命名 Connection 屬性,但只有在修改連接而不是設備時才能這樣做。

這有效:

sudo nmcli connection modify "Wired connection 2" connection.id "ens18"

這不起作用:

sudo nmcli device modify ens18 connection.id "ens18" 

謝謝

在 NetworkManager 術語中,設備是 NIC(或一個虛擬抽象),連接是一組網路配置參數,可以應用於任何合適的設備,除非特別限制為僅匹配特定設備。即使受到如此限制,連接和設備也是單獨的配置對象

1.)Wired connection <number>是某些 GUI 工具(包括 RHEL OS 安裝程序)使用的預設連接名稱格式,而<interface name>可能是使用創建新連接nmcli而不指定名稱時使用的預設名稱 - 例如,如果您使用nmcli device connect <interface name>並且有沒有可應用於該介面的現有連接定義。

2.) 引用特定連接的唯一方法是通過其名稱、其 UUID 或通過其 D-Bus 連接路徑編號(path <N>for/org/freedesktop/NetworkManager/Settings/<N>apath <N>for /org/freedesktop/NetworkManager/ActiveConnection/<N>)。

如果您想要一種快速的方法來引用“此設備上的活動連接是什麼”,您可以製作這樣的 shell 函式:

nm_connection_of() {
   # $1 = name of network interface to query
   con_name=$(nmcli -g GENERAL.CONNECTION device show "$1")
   if [ "$con_name" = "" ]; then
       echo "ERROR: no connection associated with $1" >&2
       return 1
   fi
   echo "$con_name"
}

然後你可以像這樣使用它:

sudo nmcli connection modify "$(nm_connection_of ens18)" connection.id ens18

請注意,網路介面目前可能根本沒有與任何連接關聯,在這種情況下$(nm_connection_of <interface name>)會返回錯誤。

3.) 你自己已經回答了這個問題。

要重命名連接,您必須明確標識要重命名的連接,不是可能與任意數量的可能連接相關聯或根本沒有連接的設備。

引用自:https://unix.stackexchange.com/questions/682807