ฉันกำลังพยายามที่จะสร้างIP-MACกฎการจับคู่ในebtables มีแบบฝึกหัดและคำถามที่เกี่ยวข้อง [1] อยู่เล็กน้อย แต่ฉันมีการตั้งค่าที่เฉพาะเจาะจง
สภาพแวดล้อม: ฉันมีโฮสต์ทางกายภาพมากมาย แต่ละโฮสต์มีการ์ดอีเธอร์เน็ตไม่กี่ใบเข้าร่วมในบอนด์และใช้เป็นทาสสำหรับบริดจ์ มีเครื่องเสมือนจำนวนมากในแต่ละโฮสต์ (kvm, qemu, libvirt) เครื่องเสมือนแต่ละเครื่องเชื่อมต่อกับบริดจ์ของโฮสต์จริงผ่านพอร์ตใหม่ที่เรียกว่า vnet [0-9] + ไม่มี NAT ระบบเครือข่ายทำงานได้ดีโฮสต์ทางกายภาพทั้งหมดสามารถปิงเครื่องเสมือนทั้งหมดได้เช่นกัน เครื่องเสมือนแต่ละเครื่องมีที่อยู่ IP และที่อยู่ MAC ของตนเอง
ปัญหา:ภายในเครื่องเสมือนสามารถเปลี่ยนที่อยู่ IP เป็นอีกเครื่องหนึ่งได้
FOUND SOLUTION:มีวิธีการแก้ปัญหาที่รู้จักกันในเว็บไซต์ ebtables [2] แต่วิธีการแก้ปัญหานี้จะใช้ได้เมื่อมีการใช้เพียงหนึ่งโฮสต์ อนุญาตการรับส่งข้อมูลทั้งหมดและหากมีแพ็คเก็ตจาก IP ที่มี MAC อื่นนอกเหนือจากที่อนุญาตแพ็กเก็ตจะถูกดร็อป หากมีมากกว่าหนึ่งโฮสต์มันต้องการคู่ IP-MAC ที่มีอยู่ทั้งหมดเพื่อลงทะเบียนกับโฮสต์ทั้งหมด ไม่จำเป็นต้องมีวิธีแก้ไขปัญหานโยบายย้อนกลับ
การแก้ปัญหาที่ผ่านมา:ฉันพยายามใช้ ebtables แบบคว่ำ นี่คือตัวอย่างสิ่งที่ฉันพยายาม
ตัวอย่าง 1
Bridge table: filter
Bridge chain: INPUT, entries: 2, policy: DROP
-i bond0 -j ACCEPT
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: FORWARD, entries: 0, policy: ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
ตัวอย่าง 2
Bridge table: filter
Bridge chain: INPUT, entries: 0, policy: ACCEPT
Bridge chain: FORWARD, entries: 1, policy: DROP
-p IPv4 -s 54:52:0:98:d7:b6 --ip-src 192.168.11.122 -j ACCEPT
Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
หลักของสิ่งที่ฉันต้องการคือการมีนโยบายเริ่มต้น DROP และอนุญาตการรับส่งข้อมูลจากเครื่องเสมือนที่มีคู่ IP-MAC ที่ถูกต้องปรับใช้บนโฮสต์ที่กำหนด อย่างไรก็ตามการแก้ปัญหาเหล่านั้นไม่ทำงาน
คำถาม:จะอนุญาตการรับส่งข้อมูลบนบริดจ์สำหรับคู่ IP-MAC ที่ระบุในการใช้งานเครื่องเสมือนและปล่อยคู่ IP-MAC ที่ไม่รู้จักทั้งหมดที่มาจากพอร์ต vnet [0-9] + ได้อย่างไร
ขอบคุณมากสำหรับคำตอบใด ๆ