บทความนี้อธิบายการแก้ไข static route บน ลีนุกซ์ โดยจะมีทั้งการแสดง routing tablle ที่มีอยู่ การเพิ่ม ลบ route รวมทั้งวิธีการคอนฟิกให้ตอนบู๊ตเครื่อง ให้คอนฟิก static route โดยอัตโนมัติ
แสดง routing table
ใช้คำสั่ง netstat -rn เพื่อแสดง routing table ของเครื่อง
[root@fc11-64a ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
อีกคำสั่งหนึ่งที่ให้ผลลัพธ์ใกล้เคียงกันคือคำสั่ง route -n
[root@fc11-64a ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
เพิ่ม static route
การเพิ่ม static route ไปยัง subnet สามารถทำได้โดยใช้คำสั่ง route add ระบุออปชั่น ‘-net’ ตามด้วย subnet และ netmask ที่ต้องการ สุดท้ายระบุว่าไปทาง router หรือ gateway ตามหลัง ออปชั่น ‘gw’
[root@fc11-64a ~]# route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.3.2
[root@fc11-64a ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.5.0 192.168.3.2 255.255.255.0 UG 0 0 0 eth0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
การเพิ่ม static route ไปยัง host หรือเครื่อง ip address ที่ระบุ ทำได้โดยใช้คำสั่ง route add ระบุออปชั่น ‘-host’ ตามด้วย ip address ปลายทาง สุดท้ายระบุว่าไปทาง router หรือ gateway ตามหลัง ออปชั่น ‘gw’
[root@fc11-64a ~]# route add -host 192.168.5.10 gw 192.168.3.3
[root@fc11-64a ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.5.10 192.168.3.3 255.255.255.255 UGH 0 0 0 eth0
192.168.5.0 192.168.3.2 255.255.255.0 UG 0 0 0 eth0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
การเพิ่ม default gateway ทำได้โดย ใช้คำสั่ง route add ระบุออปชั่น ‘default gw’ แล้วตามด้วย ip address ของ gateway หรือ router
[root@fc11-64a ~]# route add default gw 192.168.3.4
[root@fc11-64a ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.5.10 192.168.3.3 255.255.255.255 UGH 0 0 0 eth0
192.168.5.0 192.168.3.2 255.255.255.0 UG 0 0 0 eth0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.3.4 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
ลบ static route
การลบ static route ไปยัง subnet สามารถทำได้โดยใช้คำสั่ง route del ระบุออปชั่น ‘-net’ ตามด้วย subnet และ netmask ที่ต้องการลบ และ ‘gw’ ที่ชี้ไป
[root@fc11-64a ~]# route del -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.3.2
การลบ static route ไปยัง host หรือเครื่อง ip address ที่ระบุ ทำได้โดยใช้คำสั่ง route del ระบุออปชั่น ‘-host’ ตามด้วย ip address ปลายทาง สุดท้ายระบุว่าไปทาง router หรือ gateway ตามหลัง ออปชั่น ‘gw’
[root@fc11-64a ~]# route del -host 192.168.5.10 gw 192.168.3.3
การลบ default gateway ทำได้โดย ใช้คำสั่ง route del ระบุออปชั่น ‘default gw’ แล้วตามด้วย ip address ของ gateway หรือ router ที่ต้องการลบ
[root@fc11-64a ~]# route del default gw 192.168.3.4
ไฟล์ static-routes
หากต้องการให้เครื่องลีนุกซ์คอนฟิกเพิ่ม static routes ที่ต้องการตอนบู๊ตเครื่องโดยอัตโนมัติ สามารถทำได้โดยการใส่ ข้อมูล route ไว้ในไฟล์ /etc/sysconfig/static-routes
ตัวอย่างไฟล์ สำหรับเพิ่ม static-routes ไปยัง subnet และ host ตามตัวอย่างด้านบน ให้คอนฟิกตอนบู๊ตเครื่อง
[root@fc11-64a ~]# cat /etc/sysconfig/static-routes any net 192.168.5.0 netmask 255.255.255.0 gw 192.168.3.2 any host 192.168.5.10 gw 192.168.3.3
สำหรับ default gateway ต้องใส่เป็น ตัวแปรชื่อ “GATEWAY” ไว้ในไฟล์ /etc/sysconfig/network หรือไฟล์ /etc/sysconfig/network-scripts/ifcfg-eth0 ตัวอย่างเช่น
[root@fc11-64a ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=fc11-64a.spalinux.com
GATEWAY=192.168.3.4