Score:0

สะพาน Linux ไม่ตอบสนองต่อคำขอ ARP หลังจากเพิ่มกฎ ip

ธง cn

ฉันมีเครื่องเสมือนที่สร้างด้วย libvirt/qemu/kvm แนบกับ TAP ไปยังสะพาน Linux (virbr1) ภายใน VM มี IP เป็น 10.99.0.9. และมีการตั้งค่าเส้นทางต่อไปนี้

เริ่มต้นผ่าน 10.99.0.1 dev enp1s0 proto static onlink 
10.99.0.1 ผ่าน 10.99.0.1 dev enp1s0 proto static onlink 

ที่นี่ 10.99.0.1 คือ IP ของบริดจ์

ฉันต้องการให้ทราฟฟิกทั้งหมดที่มาจาก VM นั้นไปที่เส้นทาง VPN (wg0) ที่ฉันตั้งค่าไว้ ฉันจึงทำบนโฮสต์

เส้นทาง ip เพิ่ม dev wg0 ตารางเริ่มต้น 42
กฎ ip เพิ่มจาก 10.99.0.9 ตารางที่ 42

วิธีนี้ใช้ได้ดี แต่ฉันสังเกตเห็นว่าภายใน VM ฉันยังสามารถ ping IP ของเครื่องโฮสต์ได้ 192.168.2.1. ในที่สุดฉันก็รู้ว่านี่เป็นเพราะ ค้นหาในท้องถิ่น กฎ ip มีการตั้งค่าเป็น 0 ซึ่งสูงกว่ากฎที่ฉันเพิ่ม ฉันคิดว่าฉันเพียงแค่เปลี่ยนคำสั่งและทุกอย่างจะดี

กฎ ip เพิ่มค่ากำหนด 300 ค้นหา local # 300 ที่นี่สูงกว่า 0 โดยพลการ
ค่ากำหนดของกฎ ip 0
กฎ ip เพิ่มจาก 10.99.0.9 ตาราง 42 การตั้งค่า 0

อย่างไรก็ตาม เมื่อทำสิ่งนี้ ตอนนี้ฉันไม่มีการเชื่อมต่อภายใน VM ถ้าฉันดมกลิ่นบนลินุกซ์บริดจ์ ฉันเห็นว่ามันส่งคำขอ ARP อย่างต่อเนื่องเพื่อค้นหาว่าใครมี 10.99.0.1 และไม่มีการตอบกลับใดๆ ฉันไม่คิดว่าการตัดสินใจกำหนดเส้นทางเหล่านี้ควรส่งผลกระทบต่อ ARP เลย เนื่องจากมันทำงานควบคู่ไปกับ IP ดังนั้นจึงทำให้เกิดความสับสน ฉันขอยืนยันว่าเป็นบรรทัดที่แน่นอนที่ทำให้เกิดปัญหา

เหตุใดการตอบกลับ ARP จึงไม่กลับไปที่อินเทอร์เฟซ VM

ph flag
ไม่แน่ใจจริงๆ แต่ฉันคิดว่าคุณอาจต้องเปิดใช้งานโหมดสำส่อน
Score:1
ธง it

ความประทับใจของฉันคือคำตอบของคุณมีอยู่ในคำถามของคุณ

คุณได้เปลี่ยนค่ากำหนดของกฎ ip ในเครื่องตั้งแต่ 0 ถึง 300 ดังนั้น จึงกำหนดให้เส้นทางเริ่มต้นเป็นเส้นทางที่ต้องการมากที่สุด:

เส้นทาง ip เพิ่ม dev wg0 ตารางเริ่มต้น 42
กฎ ip เพิ่มจาก 10.99.0.9 ตารางที่ 42
#และสุดท้าย:
กฎ ip เพิ่มจาก 10.99.0.9 ตาราง 42 การตั้งค่า 0

ซึ่งทำให้เคอร์เนลชอบเส้นทางนี้โดยเฉพาะ

คุณพูดว่า: "ฉันเห็นว่ามันส่งคำขอ ARP อย่างต่อเนื่องเพื่อค้นหาว่าใครมี 10.99.0.1 และไม่มีการตอบกลับ"

ซึ่งก็สมเหตุสมผลเนื่องจากการออกอากาศ ARP นั้นไปที่ wg0 อินเทอร์เฟซที่ไม่มีอุปกรณ์ใดมี 10.99.0.1 ที่อยู่ IP (ฉันถือว่า)

สารละลาย ?

คำแนะนำของฉันคืออย่ายุ่งกับลำดับความสำคัญของเส้นทาง และหากจำเป็น - ไฟร์วอลล์สำหรับการเข้าถึงซึ่งไม่จำเป็นสำหรับ VM โดย iptables

cn flag
ฉันรู้สึกว่าแพ็กเก็ต /IP/ ที่มาจาก 10.99.0.9 จะถูกส่งไปยังอินเทอร์เฟซ wg อย่างไรก็ตาม ข้อความ ARP ไม่ใช่แพ็กเก็ต IP ฉันไม่คิดว่ากฎ ip จะทำอะไรได้จนกว่าแพ็กเก็ต IP จริงจะเริ่มบิน ซึ่งจะเกิดขึ้นก็ต่อเมื่ออินเทอร์เฟซภายใน VM รู้ว่า MAC ใดที่จะส่งแพ็กเก็ตด้วย สิ่งนี้ไม่ถูกต้องหรือไม่?
Roman Spiak avatar
it flag
ดูอย่างใกล้ชิดที่ https://en.wikipedia.org/wiki/Address_Resolution_Protocol#Packet_structure คุณถูกต้องที่จะถือว่า ARP ทำงานบน Layer2 ของ OSI และเส้นทาง IP เป็น Layer3 ดังนั้น ARP จะไม่ได้รับผลกระทบจากการกำหนดเส้นทาง IPอย่างไรก็ตาม โปรดค้นหาสิ่งที่คำสั่งนี้ทำอย่างใกล้ชิด: `ip route add default dev wg0 table 42` โดยการดมบริดจ์ก่อนและหลังใช้สิ่งนี้เพราะฉันสงสัยว่ามันอาจรบกวนเลเยอร์ 2 เช่นกัน...
Tom Yan avatar
in flag
ฉันคิดว่าเส้นทางในเครื่องเป็นสิ่งที่กำหนดว่าควรตอบกลับคำขอ ARP หรือไม่ เช่น หากระบบได้รับการกำหนดค่าให้ละเว้นเส้นทางในเครื่องทั้งหมด ระบบจะไม่ตอบสนองต่อคำขอ ARP (สำหรับรายละเอียด อาจต้องตรวจสอบรหัสเคอร์เนล โปรดทราบว่าลำดับความสำคัญ 0 ค่อนข้างพิเศษ เป็นไปได้ว่าจะไม่ตรวจสอบตารางในเครื่องเมื่อไม่มีกฎลำดับความสำคัญ 0 ที่ค้นหา)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา