ฉันตั้งค่าบริดจ์br0"แนบ" เป็นสองอินเตอร์เฟส:
eth0ส่วนต่อประสานทางกายภาพของฉันเชื่อมต่อกับ LAN จริงvnet0เป็นอินเตอร์เฟสเสมือน KVM (เชื่อมต่อกับ Windows VM)
และฉันมีกฎไฟร์วอลล์เดียวนี้ในห่วงโซ่การส่งต่อ:
iptables -A FORWARD -j REJECT
ตอนนี้ ping เดียวที่ทำงานคือจาก VM ไปยังโฮสต์
br0อินเตอร์เฟซที่เป็นเจ้าของที่อยู่ IP ของเครื่องโฮสต์ของฉัน eth0และvnet0อย่า "เป็นเจ้าของ" IP ใด ๆ จากมุมมองโฮสต์ Windows VM มีการกำหนดค่า IP แบบคงที่
หากเปลี่ยนiptablesกฎของฉันเป็นACCEPT(หรือใช้ข้อ จำกัด มากขึ้นiptables -A FORWARD -o br0 -j ACCEPT) ทุกอย่างทำงานได้ดี! (เช่นฉันสามารถ ping เครื่อง LAN ใด ๆ จาก VM และวิธีอื่น ๆ เช่นกัน)
ตัวเลือกเคอร์เนลการส่งต่อ IP ทั้งหมดถูกปิดใช้งาน (เช่นnet.ipv4.ip_forward = 0)
ดังนั้นไฟร์วอลล์ netfilter จะบล็อกสิ่งที่ไม่ได้เปิดใช้งานได้อย่างไร
นอกจากนี้ VM - การจราจร LAN เท่านั้นที่ควรจะบ่งบอกและeth0 vnet0แต่ดูเหมือนว่าจะอนุญาตให้ปริมาณการใช้ไปข้างหน้าด้วย-o br0"งาน" (ฉันไม่ได้ตรวจสอบอย่างระมัดระวังว่า)
sysctl -a | grep bridge-nf
net.bridge.bridge-nf-call-arptables = 1 net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-filter-vlan-tagged = 0 net.bridge.bridge-nf-filter-pppoe-tagged = 0