วิธีค้นหาเกตเวย์ที่ใช้สำหรับการกำหนดเส้นทาง


37

นี่คือในสภาพแวดล้อมที่ unix ฉันมีหลายเส้นทางในโฮสต์ (มองเห็นได้ด้วยคำสั่ง 'ip route show') หากฉันส่งที่อยู่ฉันจะทราบได้อย่างไรว่าเกตเวย์ใดถูกใช้เพื่อกำหนดเส้นทางการสืบค้น

ฉันพยายามใช้คำสั่ง traceroute แต่ไม่แสดงเกตเวย์ทันที

จากด้านล่างเอาต์พุต 10.58.227.1 เป็นเกตเวย์เริ่มต้นของฉัน

# ip r l
10.58.227.0/24 dev front_eth1  proto kernel  scope link  src 10.58.227.231
169.254.0.0/17 dev bond0  proto kernel  scope link  src 169.254.0.4
default via 10.58.227.1 dev front_eth1  proto gated

เมื่อฉันทำการติดตามไปยังที่อยู่ภายนอกเกตเวย์ที่ใช้ (เกตเวย์เริ่มต้น 10.58.227.1) จะไม่แสดงในเอาต์พุต

# traceroute -n -I 10.63.21.118
traceroute to 10.63.21.118 (10.63.21.118), 30 hops max, 40 byte packets
 1  10.58.112.1  0.507 ms  1.008 ms  1.017 ms
 2  10.63.21.118  0.228 ms  0.233 ms  0.234 ms

มีตัวเลือกในการดูข้อมูลเดียวกับที่กำหนดโดยคำสั่ง traceroute หรือไม่ รวมไปถึง เกตเวย์ใช้สำหรับการกำหนดเส้นทางหรือไม่

คำตอบ:


61

คุณสามารถใช้ ip route get <address> คำสั่งให้เคอร์เนลรายงานเส้นทางที่จะใช้ในการส่งแพ็กเก็ตไปยังที่อยู่ที่ระบุ:

$ ip route get 4.2.2.1
4.2.2.1 via 192.168.0.1 dev eth0  src 192.168.0.121 
    cache 
$ 

192.168.0.1 เป็นเส้นทางเริ่มต้นของฉัน ถ้าฉันขอที่อยู่ที่ไม่ผ่านเส้นทางเริ่มต้น:

$ ip route get 192.168.0.116
192.168.0.116 dev eth0  src 192.168.0.121 
    cache 
$ 

ขอบคุณมาก. :) นั่นแก้ปัญหาได้

คำถามด้านสุ่ม - ถ้า 192.168.0.1 คือ "เส้นทางเริ่มต้น" หรือ "เกตเวย์" ... ชื่อใดที่จะใช้ในการอ้างถึง 192.168.0.121 ? แค่ "แหล่ง" หรือไม่
dtmland

@sarnold โปรดยืนยันว่าต้องใช้อินเทอร์เน็ตบนเซิร์ฟเวอร์นั้นหรือไม่
kd12

@ kd12 คุณต้องเชื่อมต่ออินเทอร์เน็ตบนเซิร์ฟเวอร์นั้นหากคุณต้องการกำหนดเส้นทางแพ็กเก็ตไปยังอินเทอร์เน็ต คุณสามารถตั้งค่าเครือข่าย IP ได้โดยไม่ต้องเชื่อมต่อกับอินเทอร์เน็ตหากต้องการ ตารางเส้นทางไม่ทราบและไม่สนใจมันทำงานเหมือนกันทั้งหมด :)
sarnold
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.