麒麟系統修改網路卡名步驟和網路卡佔用故障處理

fs_Dong發表於2024-03-22

第1章 單網路卡環境修改網路卡名

■ 修改網路卡配置。

• 檢查當前網路卡名稱和MAC地址,網路卡名稱ens33MAC地址00:0c:29:ab:3a:40。

[root@localhost ~]# ip a

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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 00:0c:29:ab:3a:40 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.161/24 brd 192.168.1.255 scope global noprefixroute ens33

       valid_lft forever preferred_lft forever

    inet6 fe80::588d:c898:3370:2cca/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

• 修改網路卡的配置檔名稱。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-eth0

• 修改網路卡配置內容,將網路卡和繫結裝置名改成eth0,其他不用修改。

[root@localhost network-scripts]# vi ifcfg-eth0

NAME=eth0

DEVICE=eth0

[root@localhost network-scripts]# 

■ 修改BIOS引數。

• 更新核心檔案,於"GRUB_CMDLINE_LINUX="行尾額外新增"net.ifnames=0 biosdevname=0"兩條引數。

[root@localhost ~]# vi /etc/default/grub

GRUB_CMDLINE_LINUX="resume=/dev/mapper/klas-swap rd.lvm.lv=klas/root rd.lvm.lv=klas/swap rhgb quiet crashkernel=1024M,high audit=0 net.ifnames=0 biosdevname=0"

• 檢查系統引導啟動方式。

[root@localhost ~]# ll /sys/firmware/efi

ls: cannot access '/sys/firmware/efi': No such file or directory

[root@localhost ~]# dmesg | grep "EFI v"

[root@localhost ~]#

說明:一般系統有UEFI和傳統BIOS兩種引導啟動方式,如上述命令中,沒有/sys/firmware/efi檔案,並且dmesg命令沒有EFI關鍵詞輸出,說明當前系統是傳統BIOS方式引導啟動;如果有目錄和關鍵詞輸出,說明是UEFI啟動。

• 重新生成核心引導檔案。

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg

 

#執行成功輸出如下:

Generating grub configuration file ...

Found linux image: /boot/vmlinuz-4.19.90-52.22.v2207.ky10.x86_64

Found initrd image: /boot/initramfs-4.19.90-52.22.v2207.ky10.x86_64.img

Found linux image: /boot/vmlinuz-0-rescue-c30be0c3a35649f1b686342f9354e4aa

Found initrd image: /boot/initramfs-0-rescue-c30be0c3a35649f1b686342f9354e4aa.img

done

注意:如果系統引導啟動方式是UEFI,那麼不能在/boot/grub2目錄下生成核心引導檔案,需要執行命令:“grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg”,將核心檔案生成到/boot/efi/EFI/kylin/下才能生效。

■ 修改udev,配置網路卡名和MAC地址繫結。

• 註釋第一行,並手動新增一行,透過網路卡MAC地址繫結eth0網路卡名。

• [root@localhost ~]# vi /usr/lib/udev/rules.d/60-net.rules

#ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0c:29:ab:3a:40", NAME="eth0"

■ 驗證修改結果。

• 重啟系統後配置生效。

[root@localhost ~]# reboot

• 檢查網路卡,成功將網路卡名修改為eth0。

[root@localhost ~]# ip a

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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 00:0c:29:ab:3a:40 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.161/24 brd 192.168.1.255 scope global noprefixroute eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::3445:a251:8e9:8c84/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

第2章 多網路卡環境修改網路卡名

說明:多網路卡修改網路卡名的步驟和單網路卡步驟一致,不同點是udev配置檔案中需要加多行引數,對所有網路卡名和網路卡MAC地址進行繫結。

■ 修改網路卡配置。

• 檢查當前網路卡名稱和MAC地址,當前有ens33ens37ens38,共3塊網路卡。

[root@localhost network-scripts]# ip a

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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000


link/ether 00:0c:29:ab:3a:40 brd ff:ff:ff:ff:ff:ff


inet 192.168.1.161/24 brd 192.168.1.255 scope global noprefixroute ens33


valid_lft forever preferred_lft forever


inet6 fe80::588d:c898:3370:2cca/64 scope link noprefixroute


valid_lft forever preferred_lft forever

3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 00:0c:29:ab:3a:4a brd ff:ff:ff:ff:ff:ff

inet 192.168.1.162/24 brd 192.168.1.255 scope global noprefixroute ens37

valid_lft forever preferred_lft forever

inet6 fe80::7820:36ad:e6f7:59c9/64 scope link noprefixroute

valid_lft forever preferred_lft forever

4: ens38: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

link/ether 00:0c:29:ab:3a:54 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.163/24 brd 192.168.1.255 scope global noprefixroute ens38

valid_lft forever preferred_lft forever

inet6 fe80::f4e9:65e6:f38d:cba3/64 scope link noprefixroute

valid_lft forever preferred_lft forever

• 修改網路卡的配置檔名稱。

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-eth0

[root@localhost network-scripts]# mv ifcfg-ens37 ifcfg-eth1

[root@localhost network-scripts]# mv ifcfg-ens38 ifcfg-eth2

• 修改網路卡配置內容,將網路卡和繫結裝置名改成ethxx。

[root@localhost network-scripts]# vi ifcfg-eth0

NAME=eth0

DEVICE=eth0

[root@localhost network-scripts]# vi ifcfg-eth1

NAME=eth1

DEVICE=eth1

[root@localhost network-scripts]# vi ifcfg-eth2

NAME=eth2

DEVICE=eth2

[root@localhost network-scripts]# 

修改BIOS引數。

• 更新核心檔案,於"GRUB_CMDLINE_LINUX="行尾額外新增"net.ifnames=0 biosdevname=0"兩條引數。

[root@localhost ~]# vi /etc/default/grub

GRUB_CMDLINE_LINUX="resume=/dev/mapper/klas-swap rd.lvm.lv=klas/root rd.lvm.lv=klas/swap rhgb quiet crashkernel=1024M,high audit=0 net.ifnames=0 biosdevname=0"

• 檢查系統引導啟動方式。

[root@localhost ~]# ll /sys/firmware/efi

ls: cannot access '/sys/firmware/efi': No such file or directory

[root@localhost ~]# dmesg | grep "EFI v"

[root@localhost ~]#

說明:一般系統有UEFI和傳統BIOS兩種引導啟動方式,如上述命令中,沒有/sys/firmware/efi檔案,並且dmesg命令沒有EFI關鍵詞輸出,說明當前系統是傳統BIOS方式引導啟動;如果有目錄和關鍵詞輸出,說明是UEFI啟動。

• 重新生成核心引導檔案。

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 

#執行成功輸出如下:
Generating grub configuration file ...
Found linux image:
/boot/vmlinuz-4.19.90-52.22.v2207.ky10.x86_64

Found initrd image: /boot/initramfs-4.19.90-52.22.v2207.ky10.x86_64.img

Found linux image: /boot/vmlinuz-0-rescue-c30be0c3a35649f1b686342f9354e4aa

Found initrd image: /boot/initramfs-0-rescue-c30be0c3a35649f1b686342f9354e4aa.img

done

注意:如果系統引導啟動方式是UEFI,那麼不能在/boot/grub2目錄下生成核心引導檔案,需要執行命令:grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg”,將核心檔案生成到/boot/efi/EFI/kylin/下才能生效。

■ 修改udev,配置網路卡名和MAC地址繫結。

• 註釋第一行,並手動新增3行,透過網路卡MAC地址繫結ethxx網路卡名。

• [root@localhost ~]# vi /usr/lib/udev/rules.d/60-net.rules

#ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0c:29:ab:3a:40", NAME="eth0"

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0c:29:ab:3a:4a", NAME="eth1"

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0c:29:ab:3a:54", NAME="eth2"

■ 驗證修改結果。

• 重啟系統後配置生效。

[root@localhost ~]# reboot

• 檢查網路卡,成功將網路卡名修改為ethx。

[root@localhost ~]# ip a

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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 00:0c:29:ab:3a:40 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.161/24 brd 192.168.1.255 scope global noprefixroute eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::3445:a251:8e9:8c84/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 00:0c:29:ab:3a:4a brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.162/24 brd 192.168.1.255 scope global noprefixroute eth1

       valid_lft forever preferred_lft forever

    inet6 fe80::6812:c44f:ab83:9d8a/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 00:0c:29:ab:3a:54 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.163/24 brd 192.168.1.255 scope global noprefixroute eth2

       valid_lft forever preferred_lft forever

    inet6 fe80::5534:cbf5:8f66:963e/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

第3章 網路卡名故障處理

■ 說明:本故障處理方案適用於多網路卡環境下,僅為某個或某幾個網路卡修改網路卡名稱。

1.1、 現象描述

需求:當前系統部署k8s叢集,需要k8s叢集中所有節點網路卡名稱統一為eth0,雖然系統中有多塊網路卡,但是隻有最後一塊網路卡是UP狀態,現在需要將最後一塊網路卡名更改為eth0。

問題現象:如下圖所示,在udev中將最後一塊網路卡名稱更改為eth0,重啟後網路卡名變成了rename4,並且IP地址在DOWN的網路卡上,導致網路不通。

1.2、 問題分析

因為核心引數中增加了net.ifnames=0 biosdevname=0,重啟系統生效後會自動分配ethx的名稱給每一塊網路卡,當前eth0名稱已經被第一塊網路卡佔用,所以修改udev後會發生衝突,導致最後一塊網路卡名變為rename4。

1.3、 解決思路

先將第一塊網路卡名透過udev改名,如改成eth8,解決eth0名稱佔用問題;再將rename4網路卡名改成eth0,恢復網路故障。

1.4、 處理步驟

• 將第一塊網路卡名稱修改為eth8,使用第一塊網路卡的MAC地址修改網路卡名,修改udev需要重啟系統生效。

[root@localhost ~]# vi /usr/lib/udev/rules.d/60-net.rules

#ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"

ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0c:29:ab:3a:40", NAME="eth8"

[root@localhost ~]# reboot

重啟後如下圖,第一塊網路卡名更改為eth8:

將rename4網路卡名稱修改為eth0,並檢查網路卡配置檔案NAMEDEVICE是否為eth0。

[root@localhost ~]# vi /usr/lib/udev/rules.d/60-net.rules
#ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", PROGRAM="/lib/udev/rename_device", RESULT=="?*", NAME="$result"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0c:29:ab:3a:40", NAME="eth8"
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", ATTR{type}=="1", ATTR{address}=="00:0c:29:ab:3a:54", NAME="eth0"
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.163
NETMASK=255.255.255.0
GATEWAY=192.168.1.254

[root@localhost ~]# reboot

驗證故障恢復,如下圖所示,狀態為UP的網路卡更改為eth0,並恢復網路故障。

相關文章