Trong bài viết này, chúng ta sẽ tìm hiểu về cách đặt tên giao diện Linux. Bài viết này được viết cho các bản phân phối Linux dựa trên RHEL như AlmaLinux, CentOS và Rocky Linux. Bạn sẽ tìm hiểu cách giao diện mạng trên Linux được đặt tên là eth(X), ens(X), eno(X), v.v.
Trước tiên, chúng ta sẽ tìm hiểu về khái niệm đặt tên của giao diện mạng trên hệ thống Linux, bao gồm lược đồ đặt tên cổ điển, biosdevname và chính sách udev hệ thống.
cho thiết bị Ethernet, wlan
cho thiết bị LAN không dây và usb
cho usbnet.
Theo quy ước đặt tên truyền thống, tất cả phần cứng mạng sẽ được trình điều khiển hạt nhân xử lý như nhau. Nó đủ tốt để cho chúng ta biết về loại kết nối, nhưng không nhiều đối với phần cứng bản chất mà bạn đã quen.
Dưới đây là chính sách mặc định của lược đồ đặt tên do biosdevname cung cấp:
Dưới đây là 5 chính sách đặt tên giao diện mạng cho hệ thống dựa trên Systemd:
Tiếp theo, chúng tôi sẽ chỉ cho bạn cách thay đổi tên giao diện mạng thành 'et0', eth1, v.v. truyền thống. Có hai cách để thực hiện, thay đổi tên giao diện mạng thông qua 'biosdevname' và thông qua 'quy tắc udev systemd'.
Để vô hiệu hóa biosdevname trên hệ thống Linux, bạn sẽ cần vô hiệu hóa nó ở cấp độ khởi động bằng cách chỉnh sửa cấu hình grub trên hệ thống của mình.
Trước khi đi xa hơn, hãy kiểm tra các giao diện hiện tại trên hệ thống bằng lệnh sau.
Và bên dưới là kết quả.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22553%22%3E%3C/svg%3E
Kết quả là chúng ta có hai giao diện mạng 'ens3' và 'ens8'.
Tiếp theo, chúng ta sẽ đổi tên cả hai giao diện thành 'eth0' và 'eth1' trên hệ thống CentOS 8 của chúng ta bằng cách chỉnh sửa cấu hình grub và cấu hình mạng cho từng giao diện.
Trên cấu hình 'GRUB_CMDLINE_LINUX', thêm cấu hình sau để vô hiệu hóa tham số kernel biosdevname và net.ifnames.
Lưu và đóng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22120%22%3E%3C/svg%3E
Sau đó, tạo cấu hình grub mới sử dụng lệnh 'grub2-mkconfig' như bên dưới.
Và bạn sẽ nhận được kết quả như bên dưới.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22193%22%3E%3C/svg%3E
Đi đến '/etc/sysconfig/network-scripts/'.
Đổi tên cả hai giao diện thành 'ifcfg-ethX'.
Sau đó, đổi cả hai giao diện thành 'ethX' trên cả hai tệp bằng lệnh sed bên dưới.
Bây giờ hãy khởi động lại hệ thống CentOS 8.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22253%22%3E%3C/svg%3E
Và bạn sẽ thấy kết quả như bên dưới.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22511%22%3E%3C/svg%3E
Cả hai giao diện mạng trên hệ thống CentOS 8 đều đã được thay đổi và hiện đang sử dụng quy ước đặt tên truyền thống. Giao diện mạng đã thay đổi bằng cách vô hiệu hóa 'biosdevname' trong quá trình khởi động hệ thống.
Bạn sẽ thấy tên giao diện mặc định đã được đổi thành tên truyền thống 'ethX', được thay đổi thông qua các quy tắc udev tùy chỉnh.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22286%22%3E%3C/svg%3E
Thay đổi địa chỉ mac và giao diện mặc định 'ens3' và 'ens8' bằng giao diện của riêng bạn và dán vào nó.
Lưu và đóng.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22129%22%3E%3C/svg%3E
Đổi tên cả hai giao diện thành 'ifcfg-ethX'.
Sau đó, đổi cả hai giao diện thành 'ethX' trên cả hai tệp bằng lệnh sed bên dưới.
Bây giờ hãy khởi động lại máy chủ CentOS 8.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22233%22%3E%3C/svg%3E
Và bạn sẽ nhận được giao diện mới 'ethX' đã được chỉ định.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22580%22%3E%3C/svg%3E
Bạn sẽ thấy tên 'ensX' được đổi thành tên truyền thống 'ethX', được thay đổi thông qua các quy tắc udev tùy chỉnh.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22364%22%3E%3C/svg%3E
Trước tiên, chúng ta sẽ tìm hiểu về khái niệm đặt tên của giao diện mạng trên hệ thống Linux, bao gồm lược đồ đặt tên cổ điển, biosdevname và chính sách udev hệ thống.
1. Quy ước đặt tên truyền thống
Quy ước đặt tên truyền thống là lược đồ đặt tên giao diện truyền thống mặc định do trình điều khiển hạt nhân Linux cung cấp. Như chúng ta đã biết, Quy ước đặt tên truyền thống như ethTheo quy ước đặt tên truyền thống, tất cả phần cứng mạng sẽ được trình điều khiển hạt nhân xử lý như nhau. Nó đủ tốt để cho chúng ta biết về loại kết nối, nhưng không nhiều đối với phần cứng bản chất mà bạn đã quen.
2. Biosdevname
Biosdevname là một dự án do Dell khởi xướng để cung cấp cách đặt tên thống nhất cho các thiết bị mạng. Biosdevname là một tiện ích trợ giúp udev cung cấp cơ chế đặt tên nhất quán cho các thiết bị mạng dựa trên vị trí vật lý của phần cứng theo gợi ý của BIOS hệ thống.Dưới đây là chính sách mặc định của lược đồ đặt tên do biosdevname cung cấp:
- Đối với các thiết bị mạng tích hợp, sẽ được đặt tên là "em<port>[_<virtual instance>]"
- Đối với các thiết bị NIC bổ sung, sẽ được đặt tên là "p<slot>p<port>[_<virtual instance>]"
- em = thiết bị mạng tích hợp
- <slot> = khe cắm PCI tương ứng
- <port> = số cổng của NIC (nếu có NIC đa cổng)
- <thể hiện ảo> = chỉ mục thể hiện SRIOV và/hoặc NPAR
- 'p' trên NIC bổ sung được coi là khe cắm pci và cổng tương ứng
3. Quy tắc Systemd Udev
Ngày nay, một số bản phân phối Linux phổ biến như Ubuntu, CentOS và Debian đang sử dụng Systemd làm trình quản lý hệ thống và dịch vụ. Và kể từ phiên bản 197, systemd đã được thêm vào chính sách đặt tên gốc và lược đồ cho giao diện mạng tương tự như Biosdevname.Dưới đây là 5 chính sách đặt tên giao diện mạng cho hệ thống dựa trên Systemd:
- Đối với các thiết bị mạng tích hợp, nó sẽ được đặt tên như 'eno1', 'eno2', v.v.
- Để kết hợp Firmware/BIOS cung cấp số chỉ mục khe cắm nóng PCI Express, được đặt tên là 'ens1'. Điều này sẽ được áp dụng nếu chính sách đầu tiên không thành công. Hầu hết được sử dụng bởi máy ảo như VMWare và KVM.
- Các tên kết hợp vị trí vật lý của đầu nối phần cứng (ví dụ: enp2s0) được áp dụng nếu có thể, nếu không sẽ quay lại trực tiếp lược đồ 5 trong mọi trường hợp khác.
- Các tên kết hợp địa chỉ MAC của giao diện (ví dụ: enx78e7d1ea46da) không được sử dụng theo mặc định nhưng có sẵn nếu người dùng chọn.
- Lược đồ đặt tên hạt nhân không thể đoán trước truyền thống được sử dụng nếu tất cả các phương pháp khác đều không thành công (ví dụ: eth0).
Tiếp theo, chúng tôi sẽ chỉ cho bạn cách thay đổi tên giao diện mạng thành 'et0', eth1, v.v. truyền thống. Có hai cách để thực hiện, thay đổi tên giao diện mạng thông qua 'biosdevname' và thông qua 'quy tắc udev systemd'.
1. Đổi tên giao diện thành eth0 bằng cách vô hiệu hóa Biosdevname
Như chúng ta đã biết ở trên, biosdevname là một tiện ích udev do Dell tạo ra để đặt tên cho các giao diện mạng theo gợi ý của BIOS hệ thống. Và theo mặc định, gói biosdevname được cài đặt trên hệ thống Linux.Để vô hiệu hóa biosdevname trên hệ thống Linux, bạn sẽ cần vô hiệu hóa nó ở cấp độ khởi động bằng cách chỉnh sửa cấu hình grub trên hệ thống của mình.
Trước khi đi xa hơn, hãy kiểm tra các giao diện hiện tại trên hệ thống bằng lệnh sau.
Mã:
ifconfig -a
ip addr
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22553%22%3E%3C/svg%3E
Kết quả là chúng ta có hai giao diện mạng 'ens3' và 'ens8'.
Tiếp theo, chúng ta sẽ đổi tên cả hai giao diện thành 'eth0' và 'eth1' trên hệ thống CentOS 8 của chúng ta bằng cách chỉnh sửa cấu hình grub và cấu hình mạng cho từng giao diện.
- Thiết lập Grub2
Vào thư mục '/etc/sysconfig/' và chỉnh sửa cấu hình 'grub' bằng vim biên tập viên.
Mã:
cd /etc/sysconfig/
vim grub
Mã:
net.ifnames=0 biosdevname=0
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22120%22%3E%3C/svg%3E
Sau đó, tạo cấu hình grub mới sử dụng lệnh 'grub2-mkconfig' như bên dưới.
Mã:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22193%22%3E%3C/svg%3E
- Chỉnh sửa tập lệnh mạng
Tiếp theo, chúng ta cần đổi tên cả hai giao diện mạng trên cấu hình nằm ở Thư mục '/etc/sysconfig/network-scripts/'.Đi đến '/etc/sysconfig/network-scripts/'.
Mã:
cd /etc/sysconfig/network-scripts/
Mã:
mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1
Mã:
sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1
Mã:
sudo reboot
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22253%22%3E%3C/svg%3E
- Kiểm tra
Sau khi bạn đăng nhập lại, hãy kiểm tra các giao diện mạng khả dụng bằng lệnh sau.
Mã:
ifconfig
ip addr
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22511%22%3E%3C/svg%3E
Cả hai giao diện mạng trên hệ thống CentOS 8 đều đã được thay đổi và hiện đang sử dụng quy ước đặt tên truyền thống. Giao diện mạng đã thay đổi bằng cách vô hiệu hóa 'biosdevname' trong quá trình khởi động hệ thống.
- Tùy chọn
Nếu bạn muốn kiểm tra thông tin chi tiết về những thay đổi trong quá trình khởi động hệ thống, bạn có thể chạy lệnh sau.
Mã:
dmesg | grep -i eth
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22286%22%3E%3C/svg%3E
2. Đổi tên giao diện thành eth0 bằng cách sử dụng Quy tắc Udev
Một cách khác để đổi tên giao diện mạng thành tên truyền thống như eth0, v.v. là tạo các quy tắc udev tùy chỉnh. Và bằng cách sử dụng các quy tắc udev tùy chỉnh, các giao diện mạng sẽ được thay đổi sau khi hệ thống.- Tạo các quy tắc Udev tùy chỉnh
Bây giờ hãy vào thư mục '/etc/udev/rules.d/' và tạo quy tắc tùy chỉnh có tên '70-persistent-net.rules' bằng trình soạn thảo vim.
Mã:
cd /etc/udev/rules.d/
vim 70-persistent-net.rules
Mã:
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:6c:a8:e6", ATTR{type}=="1", KERNEL=="ens3", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="52:54:00:97:cf:33", ATTR{type}=="1", KERNEL=="ens8", NAME="eth1"
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22129%22%3E%3C/svg%3E
- Chỉnh sửa tập lệnh mạng
Tiếp theo, hãy vào '/etc/sysconfig/networ-scripts' thư mục.
Mã:
cd /etc/sysconfig/network-scripts/
Mã:
mv ifcfg-enp0s3 ifcfg-eth0
mv ifcfg-enp0s8 ifcfg-eth1
Mã:
sed -i -e 's/enp0s3/eth0/g' ifcfg-eth0
sed -i -e 's/enp0s8/eth1/g' ifcfg-eth1
Mã:
sudo reboot
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22233%22%3E%3C/svg%3E
- Kiểm tra
Sau khi đăng nhập lại, hãy kiểm tra tất cả các giao diện mạng khả dụng bằng các lệnh sau.
Mã:
ifconfig
ip addr
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22580%22%3E%3C/svg%3E
- Tùy chọn
Nếu bạn muốn kiểm tra thông tin chi tiết về những thay đổi trong quá trình khởi động hệ thống, bạn có thể chạy lệnh sau.
Mã:
dmesg | grep -i eth
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22364%22%3E%3C/svg%3E