คอนฟิกหลาย IP Address ในพอร์ตเดียวกันบนลีนุกซ์

บางครั้งเราต้องคอนฟิกหลาย IP Address ในพอร์ตแลนเดียวกัน  (หรือเรียกว่าสร้าง Virtual IP เพิ่มเติม หรือคอนฟิก Secondary IP ในอุปกรณ์ Cisco)

ใบบทความนี้ จะอธิบายวิธีคอนฟิกทั้งการเพิ่ม และลบ IP บนลีนุกซ์


สมมติว่าต้องการคอนฟิกหลาย IP เพิ่มเติมบนพอร์ต eth0 ที่มี IP เดิมอยู่แล้วคือ 192.168.1.1

[root@cent6 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:411 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:107256 (104.7 KiB)  TX bytes:57832 (56.4 KiB)
...

หากต้องการคอนฟิกเพิ่ม IP Address บนพอร์ต สามารถทำได้โดย ใช้คำสั่ง ifconfig ระบุชื่อพอร์ต ตามด้วยเครื่องหมาย : ตามด้วยตัวเลขใดๆ ก็ได้ เช่น 0,1,2,3… โดยพิมพ์ชื่อพอร์ต : และตัวเลขติดกันเลยไม่มีเว้นวรรค

คำเตือน ระมัดระวังอย่าลืมระบุเครื่องหมาย : ติดกับชื่อพอร์ต ทั้งตอนที่เพิ่ม IP และลบ IP ออก ไม่เช่นนั้น จะเป็นการแก้ไขคอนฟิกของพอร์ตหลักเลย

เพิ่ม IP Address เข้าพอร์ต

ตัวอย่างเช่นต้องการเพิ่ม IP 192.168.1.2 สามารถทำได้โดยใช้คำสั่ง

[root@cent6 ~]# ifconfig eth0:0 192.168.1.2 netmask 255.255.255.0

IP ที่เพิ่มสามารถใช้งานได้เลย อาจลองทดสอบด้วย ping จากเครื่องอื่น

[root@cent6 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2545 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1304 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:235956 (230.4 KiB)  TX bytes:163294 (159.4 KiB)

eth0:0    Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

...

 

เราอาจเรียกพอร์ตที่เราคอนฟิกเพิ่มใหม่ eth0:0 ว่า Virtual Port เรียกพอร์ตหลัก eth0 ว่า Physical Port

หากต้องการเพิ่มอีก IP ก็ทำได้โดยใส่ตัวเลขอื่น เช่น

[root@cent6 ~]# ifconfig eth0:1 192.168.1.3 netmask 255.255.255.0

[root@cent6 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2639 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1377 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:244978 (239.2 KiB)  TX bytes:172136 (168.1 KiB)

eth0:0    Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:1    Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
...

สังเกตว่าพอร์ตที่เราคอนฟิกเพิ่มใหม่ หรือ Virtual Port ใช้ HWaddr หรือ MAC Address เดียวกันกับพอร์ตหลัก

ลบ  IP Address ออกจากพอร์ต

หากต้องการเอา IP Address ที่เพิ่มออก ก็ใช้คำสั่ง ifconfig ตามด้วยชื่อพอร์ตที่เพิ่ม ระบุคำว่า down ต่อท้าย

[root@cent6 ~]# ifconfig eth0:1 down

[root@cent6 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2730 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1445 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:253274 (247.3 KiB)  TX bytes:181816 (177.5 KiB)

eth0:0    Link encap:Ethernet  HWaddr 08:00:22:33:44:55
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

แก้ไขคอนฟิกไฟล์ ตอนบู๊ตของ RedHat/CentOS

เมื่อได้คอนฟิก IP ที่ต้องการแล้ว หากต้องการใส่ไว้ในคอนฟิกตอนบู๊ตเครื่อง ให้มีการคอนฟิก IP เพิ่มเลย อาจทำได้ง่ายๆ โดยใส่เป็นคำสั่งไว้ในไฟล์ /etc/rc.d/rc.local แต่แนะนำให้สร้างไฟล์คอนฟิกในรูปแบบ ifcfg-eth ในไดเร็คทอรี /etc/sysconfig/network-scripts/ เพื่อให้คำสั่งประเภทช่วยคอนฟิก เช่น system-config-network สามารถใช้งานได้ด้วย

ตัวอย่างเช่นคอนฟิกไฟล์ IP ของพอร์ต eth0:0

[root@cent6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0:0
DEVICE=eth0:0
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.1.2
NETMASK=255.255.255.0
IPV6INIT=no
USERCTL=no

IP Address ที่เพิ่ม ไม่จำเป็นต้องอยู่ใน Subnet เดียวกันกับ IP หลัก แต่ถ้าอยู่ใน Subnet เดียวกัน Netmask น่าจะเหมือนกัน ไม่งั้นอาจเกิดปัญหาได้ ลองนำไปใช้กันดูครับ

Leave a Reply

Your email address will not be published.