ตารางเส้นทางจะถูกใช้ตามลำดับที่เฉพาะเจาะจงมากที่สุดถึงเฉพาะน้อยที่สุด
อย่างไรก็ตามใน linux มันซับซ้อนกว่าที่คุณคิด ประการแรกมีตารางเส้นทางมากกว่าหนึ่งตารางและเมื่อใช้ตารางเส้นทางที่ขึ้นอยู่กับกฎหลายข้อ
ในการรับภาพเต็ม:
$ ip rule show
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
$ ip route show table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.1.27
local 192.168.1.27 dev eth0 proto kernel scope host src 192.168.1.27
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table main
default via 192.168.1.254 dev eth0
192.168.0.0/23 dev eth0 proto kernel scope link src 192.168.1.27
$ ip route show table default
$
local
ตารางเป็นตารางเส้นทางพิเศษที่มีลำดับความสำคัญของเส้นทางการควบคุมสูงสำหรับที่อยู่ภายในและการออกอากาศ
main
ตารางเป็นตารางเส้นทางปกติที่มีเส้นทางที่ไม่ใช่นโยบายทั้งหมด นี่คือตารางที่คุณได้รับเพื่อดูว่าคุณเรียกใช้งานip route show
(หรือเรียกip ro
สั้น ๆ ) ฉันไม่แนะนำให้ใช้route
คำสั่งเก่าอีกต่อไปเพราะมันจะแสดงเฉพาะmain
ตารางและรูปแบบผลลัพธ์ของมันค่อนข้างเก่า
ตารางdefault
ว่างเปล่าและสงวนไว้สำหรับการประมวลผลภายหลังหากกฎเริ่มต้นก่อนหน้าไม่ได้เลือกแพ็กเก็ต
คุณสามารถเพิ่มตารางของคุณเองและเพิ่มกฎเพื่อใช้ในกรณีเฉพาะ ตัวอย่างหนึ่งคือถ้าคุณมีการเชื่อมต่ออินเทอร์เน็ตสองครั้ง แต่โฮสต์หรือเครือข่ายย่อยหนึ่งจะต้องถูกกำหนดเส้นทางผ่านการเชื่อมต่ออินเทอร์เน็ตหนึ่งโดยเฉพาะ
หนังสือPolicy Routing with Linuxอธิบายทั้งหมดนี้อย่างละเอียด