Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

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

ในการจัดการการเส้นทางใน Linux แนะนำให้ใช้คำสั่ง ip แทน route คำสั่ง route ไม่อนุญาตให้กำหนดคุณสมบัติการเส้นทางขั้นสูง (เช่น นโยบายการเส้นทาง) และไม่สามารถแสดงการตั้งค่าเส้นทางพิเศษได้หากถูกตั้งค่าด้วยเครื่องมือ ip

วิธีดูตารางการเส้นทางเครือข่ายใน Linux

เพื่อแสดงตารางเส้นทางปัจจุบันใน Linux ให้รันคำสั่งนี้:

# ip route

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

  • 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

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

คุณยังสามารถเพิ่ม 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

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

ตามที่เห็น เส้นทางถูกลบออกจากตารางเส้นทาง Linux

เพื่อเพิ่มเส้นทางถาวร คุณต้องสร้างไฟล์สำหรับเส้นทาง หรือเพิ่มกฎในไฟล์ rc.local (รันเมื่อบูทโฮสต์)

เพื่อเพิ่ม static route ถาวร คุณต้องการชื่ออินเตอร์เฟซเครือข่ายที่จะใช้สำหรับการเส้นทาง คุณสามารถรับชื่ออินเตอร์เฟซเครือข่ายได้โดยใช้คำสั่งนี้:

# ip a

ในกรณีของผม คือ enp0s3

นี่คือบทความโดยละเอียดเกี่ยวกับการกำหนดค่าอินเตอร์เฟซเครือข่ายบน RHEL/CentOS Linux

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

จากนั้นเปิดไฟล์ต่อไปนี้:

# nano /etc/sysconfig/network-scripts/route-enp0s3

และเพิ่มบรรทัดที่มีเส้นทางที่นี่:

192.168.0.0/24 via 192.168.1.1

หลังจากเพิ่มเส้นทางในไฟล์แล้ว ให้รีสตาร์ทบริการ network:

# service network restart

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

หลังจากรีสตาร์ทเครือข่าย 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

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

จากนั้นหากเซิร์ฟเวอร์ของคุณรีสตาร์ท เส้นทางจะถูกเพิ่มโดยอัตโนมัติระหว่างการบูทระบบ

การแก้ไขรายการเส้นทางที่มีอยู่ใน Linux

เพื่อเปลี่ยนเส้นทางที่มีอยู่ คุณสามารถใช้คำสั่ง ip route replace:

# ip route replace 192.168.0.0/24 via 192.168.1.1

การกำหนดค่า Routing บน Linux (RHEL/CentOS)

เพื่อรีเซ็ตเส้นทางชั่วคราวทั้งหมดในตารางเส้นทาง ให้รีสตาร์ทบริการเครือข่าย:

# 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

การกำหนดค่า Routing บน Linux (RHEL/CentOS)