ฉันตั้งค่าบริดจ์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