How to change a network interface name on CentOS/RHEL 7
โดยทั่วไปแล้ว network interface ของ Linux จะมีชื่อว่า eth0 eth1 … ethx แต่เนื่องจากชื่อของ network interface ไม่ได้สื่อถึง hardware ของ network interface นั้น ทำให้เราไม่สามารถรู้ได้ว่า eth0 eth1 … เป็น hardware แบบไหน จึงทำให้เกิด naming rule สำหรับ network interface ขึ้นมาโดยการตั้งชื่อจะอิงตาม firmware, topology, และ location information
ใน CentOS/RHEL 6 ได้มีการนำ naming rule เข้ามาใช้งานแต่ไม่ได้เปิดใช้งานเป็น default แต่สำหรับ CentOS/RHEL 7 ได้มีการเปิดใช้งาน naming rule เป็นค่า default ดังนั้นเราจะเห็นชื่อ network interface แปลกขึ้นมาแทน eth0 eth1 …
หลักการตั้งขื่อใหม่เป็นดังนี้
- 2 character หน้าจะหมายถึงชนิดของ interface
en -- ethernet sl -- serial line IP (slip) wl -- wlan ww -- wwan
- ส่วน character ที่เหลือมีความหมายดังนี้
b
-- BCMA bus core number ccw -- CCW bus group name o -- on-board device index number s [f ][d ] -- hotplug slot index number x -- MAC address [P ]p s [f ][d ] -- PCI geographical location [P ]p s [f ][u ][..]1[i ] -- USB port number chain
ตัวอย่างชื่อ network interface
eno16777736 หมายถึง ethernet on board ที่มี index ของ device ที่ provided โดย firmware (BIOS/EFI) เป็น 16777736
ดูข้อมูลเพิ่มเติมของ network interface
udevadm info --name=/dev/eno16777736 --attribute-walk
การแก้ไข network interface name ให้กลับเป็น ethx สามารถทำได้ดังนี้
วิธีที่ 1
แก้ไขไฟล์ /etc/default/grub โดยเพิ่ม
net.ifnames=0
วิธีที่ 2
ปิดการใช้งาน naming rule โดยการทำ symbolic link ไปยัง /dev/null
ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules