ฉันอ่าน man page ของip
และยังไม่เข้าใจว่าอะไรsrc
คืออะไรและฉันไม่สามารถหาเอกสารได้มากนัก
กรุณาถ้าคุณสามารถอธิบายได้อย่างละเอียดหรือชี้ไปที่ลิงก์บางคำตอบที่ดี
ฉันอ่าน man page ของip
และยังไม่เข้าใจว่าอะไรsrc
คืออะไรและฉันไม่สามารถหาเอกสารได้มากนัก
กรุณาถ้าคุณสามารถอธิบายได้อย่างละเอียดหรือชี้ไปที่ลิงก์บางคำตอบที่ดี
คำตอบ:
เมื่อเพิ่มเส้นทางไปยังโฮสต์ 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 แน่นอน แต่นี่เป็นเรื่องที่แตกต่างอย่างสิ้นเชิง) นอกจากนี้การตั้งค่านี้อาจถูกแทนที่โดยกระบวนการที่เลือกที่จะผูกกับที่อยู่ที่เฉพาะเจาะจงแทนการใช้ค่าเริ่มต้นเมื่อเริ่มต้นการเชื่อมต่อ (หายาก)
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
แอตทริบิวต์ของเส้นทางกลับ