ในบทความนี้เราจะแสดงวิธีกำหนดค่าการเส้นทางและจัดการเส้นทางเครือข่ายบน Linux โดยใช้คำสั่ง ip บน Linux CentOS (วิธีดูตารางเส้นทาง เพิ่ม/ลบ static routes ฯลฯ) บทความนี้ใช้ได้กับการกระจาย Linux อื่นๆ ที่มีเครื่องมือ ip (Red Hat, Fedora, ฯลฯ)
ในการจัดการการเส้นทางใน Linux แนะนำให้ใช้คำสั่ง ip แทน route คำสั่ง route ไม่อนุญาตให้กำหนดคุณสมบัติการเส้นทางขั้นสูง (เช่น นโยบายการเส้นทาง) และไม่สามารถแสดงการตั้งค่าเส้นทางพิเศษได้หากถูกตั้งค่าด้วยเครื่องมือ ip
วิธีดูตารางการเส้นทางเครือข่ายใน Linux
เพื่อแสดงตารางเส้นทางปัจจุบันใน Linux ให้รันคำสั่งนี้:
# ip route

default via 192.168.1.1 dev enp0s3คือ default gateway ที่ใช้อินเตอร์เฟซ enp0s3 ในตัวอย่างนี้ หาก IP ปลายทางไม่มี static route ในตารางเส้นทาง แพ็กเก็ตจะถูกส่งผ่านเกตเวย์นั้น (default route);192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201เป็น static route สำหรับเครือข่าย 192.168.1.0/24 ผ่านอินเตอร์เฟซ 192.168.1.201;proto kernelคือเส้นทางที่สร้างโดยเคอร์เนล (proto static– เส้นทางที่เพิ่มโดยผู้ดูแลระบบ);metricคือความสำคัญของเส้นทาง (ค่า metric น้อยกว่า = ความสำคัญสูงกว่า) หากมีเส้นทาง 2 เส้นทางที่มี metric เท่ากัน (อย่าทำเช่นนี้!) เคอร์เนลจะเลือกเส้นทางแบบสุ่ม
เพื่อค้นหาว่าอินเตอร์เฟซ (เกตเวย์) ใดถูกใช้สำหรับการเส้นทางトラฟฟิกไปยัง IP เฉพาะ ใช้คำสั่งต่อไปนี้:
# ip route get 192.168.2.45
192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201
คุณสามารถใช้เซิร์ฟเวอร์ Linux ที่มีอินเตอร์เฟซ 2 ตัวขึ้นไปเป็นเราเตอร์หรือเกตเวย์อินเทอร์เน็ต เพื่อเปิดใช้งานการส่งต่อแพ็กเก็ตระหว่างอินเตอร์เฟซหลายตัว ให้เปิดใช้งานพารามิเตอร์เคอร์เนล net.ipv4.ip_forward = 1
การเพิ่มและลบ Static Routes ใน Linux
เพื่อเพิ่มเส้นทางใหม่ไปยังเครือข่าย IP เฉพาะในตารางเส้นทาง Linux ให้รันคำสั่งนี้:
# ip route add 192.168.0.0/24 via 192.168.1.1
ดังนั้น เราจะเพิ่มเส้นทางสำหรับเครือข่าย IP 192.168.0.0/24 ผ่านเกตเวย์ 192.168.1.1
รูปแบบของคำสั่ง ip route คล้ายกับ Cisco IOS มาก คุณยังสามารถใช้ตัวย่อได้ เช่น ใช้ ip pro ad แทน ip route add

คุณยังสามารถเพิ่ม static route แยกต่างหากสำหรับ IP เดียว (host) ได้:
# ip route add 192.168.1.0 via 192.168.1.1
คุณสามารถสร้าง null route คล้าย Cisco (ip route null0) แพ็กเก็ตที่ส่งไปยังเครือข่ายนี้จะถูก drop เนื่องจาก No route to host:
# ip route add blackhole 10.1.20.0/24
เส้นทางที่เพิ่มด้วยวิธีนี้เป็นชั่วคราวและจะทำงานจนกว่าคุณจะรีสตาร์ทบริการเครือข่ายหรือเซิร์ฟเวอร์
เพื่อลบ static route ที่สร้างด้วยตนเอง ให้รันคำสั่งต่อไปนี้:
# ip route del 192.168.0.0/24

ตามที่เห็น เส้นทางถูกลบออกจากตารางเส้นทาง Linux
เพื่อเพิ่มเส้นทางถาวร คุณต้องสร้างไฟล์สำหรับเส้นทาง หรือเพิ่มกฎในไฟล์ rc.local (รันเมื่อบูทโฮสต์)
เพื่อเพิ่ม static route ถาวร คุณต้องการชื่ออินเตอร์เฟซเครือข่ายที่จะใช้สำหรับการเส้นทาง คุณสามารถรับชื่ออินเตอร์เฟซเครือข่ายได้โดยใช้คำสั่งนี้:
# ip a
ในกรณีของผม คือ enp0s3
นี่คือบทความโดยละเอียดเกี่ยวกับการกำหนดค่าอินเตอร์เฟซเครือข่ายบน RHEL/CentOS Linux

จากนั้นเปิดไฟล์ต่อไปนี้:
# nano /etc/sysconfig/network-scripts/route-enp0s3
และเพิ่มบรรทัดที่มีเส้นทางที่นี่:
192.168.0.0/24 via 192.168.1.1
หลังจากเพิ่มเส้นทางในไฟล์แล้ว ให้รีสตาร์ทบริการ network:
# service network restart

หลังจากรีสตาร์ทเครือข่าย static route ปรากฏในตารางเส้นทาง
คุณยังสามารถใช้คำสั่งเพื่อเพิ่มเส้นทางใหม่ในไฟล์ rc.local เพื่อเพิ่ม static route อัตโนมัติเมื่อเซิร์ฟเวอร์บูท เปิดไฟล์:
# nano /etc/rc.local
และใส่คำสั่งที่เพิ่ม static route:
# ip route add 192.168.0.0/24 via 192.168.1.1

จากนั้นหากเซิร์ฟเวอร์ของคุณรีสตาร์ท เส้นทางจะถูกเพิ่มโดยอัตโนมัติระหว่างการบูทระบบ
การแก้ไขรายการเส้นทางที่มีอยู่ใน Linux
เพื่อเปลี่ยนเส้นทางที่มีอยู่ คุณสามารถใช้คำสั่ง ip route replace:
# ip route replace 192.168.0.0/24 via 192.168.1.1

เพื่อรีเซ็ตเส้นทางชั่วคราวทั้งหมดในตารางเส้นทาง ให้รีสตาร์ทบริการเครือข่าย:
# service network restart
Restarting network (via systemctl): [ OK ]
# ip route
default via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100
วิธีเปลี่ยน Default Route หรือ Default Gateway บน Linux
คุณสามารถลบ default route โดยใช้คำสั่ง ip route del:
# ip route del default via 192.168.1.1 dev enp0s3
เพื่อตั้งค่า default route ใหม่ ใช้คำสั่งต่อไปนี้ใน CentOS/RHEL Linux:
# ip route add default via 192.168.1.2 (เส้นทางผ่านที่อยู่ IP ของเกตเวย์)
# ip route add default via enp0s3 (เส้นทางโดยใช้ชื่ออุปกรณ์)
เพื่อเปลี่ยนการตั้งค่า default route ใช้คำสั่งนี้:
# ip route replace default via 192.168.1.2
