Centos

在 CentOS 7 中用於靜態 IP 網路的 nmcli 命令

  • March 15, 2017

nmcli在 CentOS 7 中可以使用哪些特定的命令序列來有效地配置靜態 IP 網路?

下面顯示的四步過程確實有效地配置了靜態 IP 網路。

但是下面的過程依賴於配置文件,這些配置文件以後可能不容易使用自動化腳本方法。如果我們繼續使用下面顯示的配置文件方法,我會想像很多過於復雜的腳本。例如,該UUID行將需要在腳本中進行特殊處理,只需將其複製到配置文件中並重新啟動機器即可。

相反,我想要一系列nmcli可以手動輸入終端的特定命令,這也可以讓以後更容易設計 bash 腳本。

這是目前的手動過程,該過程有效:

1.) 該設備eno1是在自動安裝過程中創建的。

2.) 將具有給定網路遮罩的 IP 地址分配給eno1

ip addr 12.34.567.8xx/29 dev eno1 

3.) 編輯配置文件:

$ vi /etc/sysconfig/network-scripts/ifcfg-eno1

       TYPE="Ethernet"
       BOOTPROTO="static"
       DEFROUTE="yes"
       IPV4_FAILURE_FATAL="no"
       IPV6INIT="yes"
       IPV6_AUTOCONF="yes"
       IPV6_DEFROUTE="yes"
       IPV6_FAILURE_FATAL="no"
       NAME="eno1"
       UUID="some-very-long-complex-string"
       DEVICE="eno1"
       ONBOOT="yes"
       DNS1=aa.aa.aa.aa
       DNS2=aa.aa.bb.bb
       IPADDR=12.34.567.8xx
       NETMASK=255.255.255.248
       PREFIX=29
       GATEWAY=12.34.567.8yy
       PEERDNS=yes
       PEERROUTES=yes
       IPV6_PEERDNS=yes
       IPV6_PEERROUTES=yes
       NM_CONTROLLED="no"

4.) 然後保存文件並重新啟動電腦。

注意12.34.567.8xx12.34.567.8yy是公網IP地址,12.34.567.8__表示IP和網關的前8個字元是相同的。

另請注意,BOOTPROTO=static並且NM_CONTROLLED=no需要以nmcli命令的任何結果結束。

什麼具體的命令序列nmcli可以有效地替代上述 4 步流程?

嘗試以下操作::

nmcli con mod eno1 ipv4.addresses 12.345.67.8xx/29
nmcli con mod eno1 ipv4.gateway 12.34.567.8yy
nmcli con mod eno1 ipv4.dns "aa.aa.aa.aa bb.bb.bb.bb"
nmcli con mod eno1 ipv4.method manual
nmcli con mod eno1 connection.autoconnect yes

重新啟動,它應該工作。

如果您不知道網路連接的名稱,您可以執行:

CON="$(nmcli -f NAME -m multiline show con | awk '{ print $2; }')"

在上面的命令中使用"$CON"而不是。eno1例如:

nmcli con mod "$CON" ipv4.addresses 12.345.67.8xx/29

這僅在您有單個連接時才有效。如果你的虛擬機有多個網路連接,那麼你需要在上面添加一些邏輯來確定使用哪一個。

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