การเปลี่ยน Network Interface Card (NIC) ใน Fedora 9

บทความนี้จะอธิบายการเปลี่ยน Network Interface Card (NIC) โดยแทนที่การ์ดใบเก่า ด้วยการ์ดใบใหม่ที่มี MAC Address ไม่เหมือนกัน แต่ต้องการใช้งานเหมือนเดิม เช่นให้ใช้ชื่อเป็น eth0 และคอนฟิกต่างๆ เหมือนเดิม

โดยดีฟอลต์แล้วใน Fedora หรือ Linux Distribution อื่นๆ ที่เป็นเวอร์ชั่นใหม่ๆ จะมีโปรแกรมช่วยในการจัดการการเปลี่ยนแปลงอุปกรณ์ (Hardware) ของเครื่องโดยอัตโนมัติ ที่มีชื่อว่า udev โดยโปรแกรมนี้จะสร้างคอนฟิกแบบพื้นฐานเพื่อให้สามารถใช้งานได้เลย ซึ่งจะเก็บคอนฟิกไว้ใน /etc/udev/

ซึ่งทำให้เมื่อเปลี่ยน Network Interface Card เป็นการ์ดใบใหม่ โปรแกรม udev ตรวจสอบว่ามีการเปลี่ยนแปลงของอุปกรณ์ ซึ่งดูได้จาก MAC Address ที่เปลี่ยนแปลง โปรแกรม udev ก็จะสร้างคอนฟิกใหม่ ซึ่งอาจจะสร้างเป็น eth1 ได้

ดังนั้นถ้าคุณต้องการให้เป็นคอนฟิกแบบเดิมสามารถทำได้โดยวิธีดังต่อไปนี้

หมายเหตุ ตัวอย่างในบทความนี้จะเป็นการเปลี่ยน Network Interface จาก

  • การ์ดใบเก่ามี MAC Address เป็น 00:11:11:11:11:11
  • การ์ดใบใหม่มี MAC Address เป็น 00:22:22:22:22:22

คอนฟิก udev ในส่วนของ Network Interface Card ก่อนที่จะเปลี่ยนการ์ด
ตัวอย่างคอนฟิก udev ก่อนที่จะมีการเปลี่ยนการ์ด

[root@server ~]# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:11:11:11:11", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

คอนฟิก udev ในส่วนของ Network Interface Card หลังจากเปลี่ยนการ์ดเป็นใบใหม่
เมื่อเปลี่ยนการ์ดใบเก่าออก แล้วแทนที่ด้วยการ์ดใบใหม่ แล้วเปิดเครื่องขึ้นมานั้น โปรแกรม udev จะตรวจสอบเจอการ์ดใบใหม่ พร้อมทั้งสร้างคอนฟิกขึ้นมาใหม่ ซึ่งในส่วนของ network เราอาจใช้คำสั่ง ifconfig ตรวจสอบดู จะเห็นว่ามี eth1 ถูกสร้างขึ้นมา หรือดูในคอนฟิกของ udev ก็จะมีการแก้ไขไฟล์คอนฟิกดังนี้

[root@server ~]# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:11:11:11:11", ATTR{type}=="1",  KERNEL=="eth*", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:22:22:22:22:22", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

วิธีการแก้กลับให้เป็น eth0 เหมือนเดิม คือให้ลบบรรทัดที่ถูกสร้างขึ้นมาใหม่ แล้วนำ MAC Address ของการ์ดใบใหม่นี้ไปแทนที่บรรทัดของ eth0

ตัวอย่างการแก้ไขไฟล์คอนฟิก udev ในส่วนของ network

[root@server ~]# cat /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:22:22:22:22:22", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

แก้ไขคอนฟิกไฟล์อื่นๆ
นอกจากแก้คอนฟิกของ udev แล้ว ต้องแก้ไขคอนฟิกในส่วนอื่นๆ อีกด้วย

ตัวอย่างการแก้ไข network-scripts ให้ใช้ MAC Address ใหม่

root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
HWADDR=00:22:22:22:22:22
IPADDR=192.168.1.11
NETMASK=255.255.255.0
NETWORK=192.16.1.0
ONBOOT=yes
DNS1=192.168.1.1
SEARCH="your-domain.com"
NM_CONTROLLED=no
GATEWAY=192.168.1.1
TYPE=Ethernet

ปิด service ชื่อ NetworkManager แล้วมาใช้ network แทน

ตัวอย่างการปิด NetworkManager service

[root@server ~]# chkconfig --list NetworkManager
NetworkManager  0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@server ~]# chkconfig NetworkManager off
[root@server ~]# chkconfig --list NetworkManager
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off

ตัวอย่างการเปิด network service

[root@server ~]# chkconfig --list network
network         0:off   1:off   2:off   3:off    4:off   5:off   6:off
[root@server ~]# chkconfig network on
[root@server ~]# chkconfig --list network
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off

ขั้นสุดท้าย restart เครื่องใหม่อีกครั้ง ก็จะได้คอนฟิกที่ต้องการ

Leave a Reply

Your email address will not be published.