เส้นทาง ip แสดงฟิลด์ src


12

ฉันอ่าน man page ของipและยังไม่เข้าใจว่าอะไรsrcคืออะไรและฉันไม่สามารถหาเอกสารได้มากนัก

กรุณาถ้าคุณสามารถอธิบายได้อย่างละเอียดหรือชี้ไปที่ลิงก์บางคำตอบที่ดี


3
คุณไม่ทราบว่า "แหล่งที่มา" หมายถึงอะไรในบริบทของการสื่อสาร IP? คุณไม่ต้องการความผิดพลาดของเซิร์ฟเวอร์ - คุณต้องใช้หนังสือของสตีเวนส์ ...
voretaq7

คำตอบ:


17

เมื่อเพิ่มเส้นทางไปยังโฮสต์ multihomed คุณอาจต้องการควบคุมที่อยู่ IP ต้นทางที่โฮสต์ของคุณส่งเมื่อเริ่มการสื่อสารโดยใช้เส้นทางนี้ นี่คือสิ่งที่srcมีไว้สำหรับ

ตัวอย่างสั้น ๆ : คุณมีโฮสต์ที่มีสองอินเตอร์เฟสและที่อยู่ IP 192.168.1.123/24 และ 10.45.22.12/24 คุณกำลังเพิ่มเส้นทางไปที่ 78.22.45.0/24 ผ่าน 10.45.22.1 และต้องการให้แน่ใจว่าคุณไม่ได้ส่งไปที่ 78.22.45.0/24 โดยใช้ที่อยู่ 192.168.1.123 (อาจเป็นเพราะเครือข่าย 78.22.45.0/24 ไม่มีเส้นทางกลับ ไปที่ 192.168.1.0/24 หรือเพราะคุณไม่ต้องการให้ทราฟฟิกของคุณใช้เส้นทางนี้ด้วยเหตุผลเดียวหรืออย่างอื่น):

ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12

โปรดทราบว่าsrc ที่คุณให้จะมีผลกับการรับส่งข้อมูลที่โฮสต์ของคุณเท่านั้น ถ้าแพ็กเก็ตต่างประเทศกำลังถูกกำหนดเส้นทางมันจะมีที่อยู่ IP ของแหล่งที่มาอยู่แล้วดังนั้นมันจะถูกส่งผ่านไปโดยไม่เปลี่ยนแปลง (ยกเว้นว่าคุณกำลังใช้ NAT แน่นอน แต่นี่เป็นเรื่องที่แตกต่างอย่างสิ้นเชิง) นอกจากนี้การตั้งค่านี้อาจถูกแทนที่โดยกระบวนการที่เลือกที่จะผูกกับที่อยู่ที่เฉพาะเจาะจงแทนการใช้ค่าเริ่มต้นเมื่อเริ่มต้นการเชื่อมต่อ (หายาก)


9

srcแอตทริบิวต์เป็นคำแนะนำที่ถูกใช้โดยมีขั้นตอนวิธีการเลือกที่อยู่ มีความสำคัญเมื่อโฮสต์มีที่อยู่ IP หลายแห่งซึ่งโดยปกติจะเป็น แต่ไม่เสมอไปเมื่อมีหลายอินเตอร์เฟส ในขณะที่มีกฎระเบียบอื่น ๆ ที่เลือกอยู่อิทธิพลและการประยุกต์ใช้เครือข่ายยังสามารถแทนที่ขั้นตอนวิธีการเลือกโดยใช้สายระบบเหมือนbind()ที่srcแอตทริบิวต์เป็นวิธีที่จะใช้การค้นหาเส้นทางตารางที่จะตอบคำถามที่ว่า "ถ้าผมต้องการที่จะเริ่มต้น การเชื่อมต่อกับโฮสต์ X ฉันควรใช้ที่อยู่ใดของ "

นี่คือตัวอย่างเพื่อแสดงให้เห็นถึงการใช้งานและผลกระทบของsrcคุณลักษณะ เพื่อให้ชี้ว่าสิ่งนี้เกี่ยวข้องกับที่อยู่และเส้นทางไม่ใช่อย่างเคร่งครัดกับอินเตอร์เฟสโฮสต์ตัวอย่างนี้มีเพียงหนึ่งเน็ตเวิร์กอินเตอร์เฟส แต่มีสองแอดเดรส นอกจากนี้ที่อยู่ทั้งสองอยู่ในเครือข่ายย่อยเดียวกันเพื่อเน้นความจริงที่ว่าไม่มีวิธีอื่นที่ชัดเจนในการเลือกที่จะใช้

$ ip -4 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 10.1.0.2/24 brd 10.1.0.255 scope global eth0
    inet 10.1.0.16/24 scope global secondary eth0
$ ip route list dev eth0
10.1.0.32/27  scope link  src 10.1.0.16
10.1.0.0/24  proto kernel  scope link  src 10.1.0.2

โฮสต์นี้สามารถสื่อสารกับที่อยู่ 252 อื่น ๆ บนซับเน็ตนี้ / 24 จากที่อยู่ใดก็ได้ แต่โดยค่าเริ่มต้นมันจะใช้ 10.1.0.16 เมื่อเริ่มต้นการเชื่อมต่อกับ 10.1.0.32 ถึง 10.1.0.63 และใช้ 10.1.0.2 สำหรับทุก ส่วนที่เหลือ

หากโฮสต์กำลังตอบสนองแทนที่จะเริ่มต้นโฮสต์จะตอบกลับจากที่อยู่ปลายทางของคำขอ ตัวอย่างเช่นหากโฮสต์อื่นที่ 10.1.0.32 เชื่อมต่อกับโฮสต์นี้ที่ 10.1.0.2 การตอบสนองจะมาจาก 10.1.0.2 แม้ว่าจะไม่ตรงกับsrcแอตทริบิวต์ของเส้นทางกลับ

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