CentOS8 配置網絡

 

安裝centos 8之後,重啓啓動網絡時,會出現以下報錯 

報錯信息如下:

Failed to start network.service: Unit network.service not found. 

意思爲無法重啓網絡服務,原因是無法找到network.service網絡服務。

在rhel8(含centos8)上,在/etc/sysconfig/network-scripts/裏也看不到任何腳本文件,沒有傳統的network.service。因此只能通過其它方法進行網絡配置,包括NM命令工具集。換言之,在rhel8上,必須開啓NM,否則無法使用網絡。

手動配置靜態IP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

cat /etc/sysconfig/network-scripts/ifcfg-ens32

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=static

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens32

UUID=066b4926-b40c-4c28-a5b4-2310d2b96613

DEVICE=ens32

ONBOOT=yes

IPADDR=192.168.1.200

NETMASK=255.255.255.0

GATEWAY=192.168.1.254

DNS1=223.5.5.5

PREFIX=24

使用nmcli重新回載網絡配置

nmcli c reload

查看

1

2

3

nmcli c

NAME UUID                                  TYPE DEVICE

ens32 066b4926-b40c-4c28-a5b4-2310d2b96613 ethernet ens32               

 

 


 

 補充nmcli命令

nmcli使用方法
nmcli使用方法非常類似linux ip命令、cisco交換機命令,並且支持tab補全(詳見本文最後的Tips),也可在命令最後通過-h、--help、help查看幫助。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

nmcli --help

Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

 

OPTIONS

-o[verview] overview mode (hide default values)

-t[erse] terse output

-p[retty] pretty output

-m[ode] tabular|multiline output mode

-c[olors] auto|yes|no whether to use colors in output

-f[ields] <field1,field2,...>|all|common specify fields to output

-g[et-values] <field1,field2,...>|all|common shortcut for -m tabular -t -f

-e[scape] yes|no escape columns separators in values

-a[sk] ask for missing parameters

-s[how-secrets] allow displaying passwords

-w[ait] <seconds> set timeout waiting for finishing operations

-v[ersion] show program version

-h[elp] print this help

 

OBJECT

g[eneral] NetworkManager's general status and operations

n[etworking] overall networking control

r[adio] NetworkManager radio switches

c[onnection] NetworkManager's connections

d[evice] devices managed by NetworkManager

a[gent] NetworkManager secret agent or polkit agent

m[onitor] monitor NetworkManager changes

  

在nmcli中有2個命令最爲常用:
nmcli connection
譯作連接,可理解爲配置文件,相當於ifcfg-ethX。可以簡寫爲nmcli c


nmcli device
譯作設備,可理解爲實際存在的網卡(包括物理網卡和虛擬網卡)。可以簡寫爲nmcli d
在NM裏,有2個維度:連接(connection)和設備(device),這是多對一的關係。想給某個網卡配ip,首先NM要能納管這個網卡。設備裏存在的網卡(即nmcli d可以看到的),就是NM納管的。接着,可以爲一個設備配置多個連接(即nmcli c可以看到的),每個連接可以理解爲一個ifcfg配置文件。同一時刻,一個設備只能有一個連接活躍。可以通過nmcli c up切換連接。
connection有2種狀態:
▷ 活躍(帶顏色字體):表示當前該connection生效
▷ 非活躍(正常字體):表示當前該connection不生效

1

2

3

4

5

device有4種常見狀態:

▷ connected:已被NM納管,並且當前有活躍的connection

▷ disconnected:已被NM納管,但是當前沒有活躍的connection

▷ unmanaged:未被NM納管

▷ unavailable:不可用,NM無法納管,通常出現於網卡link爲down的時候(比如ip link set ens32 down)

  

nmcli常用命令一覽

1

2

3

4

5

6

7

8

# 查看ip(類似於ifconfig、ip addr)

nmcli

 

# 創建connection,配置靜態ip(等同於配置ifcfg,其中BOOTPROTO=none,並ifup啓動)

nmcli c add type ethernet con-name ens32 ifname ens32 ipv4.addr 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual

 

# 創建connection,配置動態ip(等同於配置ifcfg,其中BOOTPROTO=dhcp,並ifup啓動)

nmcli c add type ethernet con-name ens32 ifname ens32 ipv4.method auto

  

1

2

3

# 修改ip(非交互式)

nmcli c modify ens32 ipv4.addr '192.168.1.200/24'

nmcli c up ens32

  

1

2

3

4

5

6

7

8

9

# 修改ip(交互式)

nmcli c edit ens32

nmcli> goto ipv4.addresses

nmcli ipv4.addresses> change

Edit 'addresses' value: 192.168.1.200/24

Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes

nmcli ipv4> save

nmcli ipv4> activate

nmcli ipv4> quit

  

1

2

# 啓用connection(相當於ifup)

nmcli c up ens32

  

1

2

# 停止connection(相當於ifdown)

nmcli c down

  

1

2

# 刪除connection(類似於ifdown並刪除ifcfg)

nmcli c delete ens32

  

1

2

# 查看connection列表

nmcli c show

  

1

2

# 查看connection詳細信息

nmcli c show ens32

  

1

2

# 重載所有ifcfg或route到connection(不會立即生效)

nmcli c reload

  

1

2

3

# 重載指定ifcfg或route到connection(不會立即生效)

nmcli c load /etc/sysconfig/network-scripts/ifcfg-ens32

nmcli c load /etc/sysconfig/network-scripts/route-ens32

  

1

2

3

4

# 立即生效connection,有3種方法

nmcli c up ens32

nmcli d reapply ens32

nmcli d connect ens32

  

1

2

# 查看device列表

nmcli d

  

1

2

# 查看所有device詳細信息

nmcli d show<br><br>

1

2

# 查看指定device的詳細信息

nmcli d show ens32

  

1

2

3

4

5

# 激活網卡

nmcli d connect ens32

 

# 關閉無線網絡(NM默認啓用無線網絡)

nmcli r all off

  

1

2

3

4

5

6

7

8

# 查看NM納管狀態

nmcli n

 

# 開啓NM納管

nmcli n on

 

# 關閉NM納管(謹慎執行)

nmcli n off

  

1

2

3

4

5

6

7

8

# 監聽事件

nmcli m

 

# 查看NM本身狀態

nmcli

 

# 檢測NM是否在線可用

nm-online

  

提及的ifcfg均指代/etc/sysconfig/network-scripts/ifcfg-ens32及/etc/sysconfig/network-scripts/route-ens32

nmcli connection重點

1

2

3

4

5

6

7

nmcli c show

NAME UUID TYPE DEVICE

ens32 066b4926-b40c-4c28-a5b4-2310d2b96613 ethernet ens32

 

▪ 第一列是connection名字,簡稱con-name(注意con-name不是網卡名)

▪ 第二列是connection的UUID

▪ 最後一列纔是網卡名(標準說法叫device名),可通過nmcil d查看device

   

對connection做操作時需要指定標識,標識可以是con-name、UUID、如果存在ifcfg文件則也可以用ifcfg的完整路徑,即/etc/sysconfig/network-scripts/ifcfg-ens32
nmcli c show ens32
nmcli c show cae3f1ef-e79a-46c3-8e0c-946b91a65e11
nmcli c show /etc/sysconfig/network-scripts/ifcfg-ens32

 

nmcli c的con-name
同時對應ifcfg的文件名以及內容中的NAME=,該參數表示連接(connection)的名字,無需和網卡名相同,可以爲一個設備(device)創建多個連接,但同一時刻只能有一個連接生效。當有多個連接時候,nmcli c delete刪除當前連接,就會自動選擇同一個設備的其他連接來頂替生效。可以通過nmcli c up來將指定連接切換生效。
注意:通過nmcli c modify修改con-name,只會對應修改ifcfg文件中的NAME,而不會更改ifcfg文件名。

nmcli c的ipv4.method
對應ifcfg文件內容的BOOTPROTO,ipv4.method默認爲auto,對應爲BOOTPROTO=dhcp,這種時候如果指定ip,就可能導致網卡同時有dhcp分配的ip和靜態ip。設置爲manual表示BOOTPROTO=none,即只有靜態ip。

1

2

3

4

5

6

7

8

9

例子:創建一個連接(connection)

nmcli c add type ethernet con-name ens32-test ifname ens32 ipv4.addresses '192.168.1.100/24,192.168.1.101/32' ipv4.routes '10.0.0.0/8 192.168.1.10,192.168.0.0/16 192.168.1.11' ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual

 

type ethernet:創建連接時候必須指定類型,類型有很多,可以通過nmcli c add type -h看到,這裏指定爲ethernet。

▪ con-name ens32 ifname ens32:第一個ethX表示連接(connection)的名字,這個名字可以任意定義,無需和網卡名相同;第二個ethX表示網卡名,這個ethX必須是在nmcli d裏能看到的。

▪ ipv4.addresses '192.168.1.100/24,192.168.1.101/32':配置2個ip地址,分別爲192.168.1.100/24和192.168.1.101/32

▪ ipv4.gateway 192.168.1.254:網關爲192.168.1.254

▪ ipv4.dns '8.8.8.8,4.4.4.4':dns爲8.8.8.8和4.4.4.4

▪ ipv4.method manual:配置靜態IP

  

對應的ifcfg和dns就是

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

# /etc/sysconfig/network-scripts/ifcfg-ens32-test

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=none

IPADDR=192.168.1.100

PREFIX=24

IPADDR1=192.168.1.101

PREFIX1=32

GATEWAY=192.168.1.254

DNS1=8.8.8.8

DNS2=4.4.4.4

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

IPV6INIT=yes

IPV6_AUTOCONF=yes

IPV6_DEFROUTE=yes

IPV6_FAILURE_FATAL=no

IPV6_ADDR_GEN_MODE=stable-privacy

NAME=ens32-test

UUID=9a10ad89-437c-4caa-949c-a394a6d28c8d

DEVICE=ens32

ONBOOT=yes

 

# /etc/resolv.conf

nameserver 8.8.8.8

nameserver 4.4.4.4

  

此時,通過nmcli c應該可以看到增加了一條連接
注意:如果這是爲ethX創建的第一個連接,則自動生效;如果此時已有連接存在,則該連接不會自動生效,可以執行nmcli c up ethX-test來切換生效

nmcli device重點

nmcli d connect ens32
由NM對指定網卡進行管理,同時刷新該網卡對應的活躍connection(如果之前有修改過connection配置);如果有connection但是都處於非活躍狀態,則自動選擇一個connection並將其活躍;如果沒有connection,則自動生成一個並將其活躍。

nmcli d disconnect ens32
讓NM暫時不管理指定網卡,此操作不會變更實際網卡的link狀態,只會使對應的connection變成非活躍。若重啓系統則又會自動connect。另外,如果手工將該網卡的connection全部刪掉,該網卡狀態也會自動變爲disconnected。

nmcli d reapply ens32
專門用於刷新connection,前提是網卡的device處於connected狀態,否則會報錯。

nmcli d set ens32 autoconnect yes|no managed yes|no
可以設置是否自動連接和是否自動管理,但經測試只能用於當前開機狀態, 如果這2個參數都設置爲no,然後重啓系統,又會自動恢復成connected和managed yes的狀態。所以該命令用途不大。注意事項:如果managed設置爲no,那麼nmcli c reload會讀取配置文件,但是不會立即生效,接着如果執行nmcli c up ethX,就會立即生效,同時managed自動變爲yes。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章