Saya mencoba membuat aturan penyandingan IP-MAC di ebtables . Ada beberapa tutorial dan pertanyaan terkait [1] yang tersedia tetapi saya memiliki jenis pengaturan khusus.
LINGKUNGAN: Saya memiliki banyak host fisik . Setiap host memiliki beberapa kartu ethernet, bergabung dalam ikatan dan digunakan sebagai slave untuk bridge. Ada banyak mesin virtual di setiap host (kvm, qemu, libvirt). Setiap mesin virtual terhubung ke jembatan host fisiknya melalui port baru bernama vnet [0-9] +. Tidak ada NAT. Jaringan berfungsi dengan baik, semua host fisik dapat di-ping, semua mesin virtual juga. Setiap mesin virtual memiliki alamat IP dan alamat MAC sendiri.
MASALAH: Di dalam mesin virtual, alamat IP dapat diubah ke yang lain.
SOLUSI DITEMUKAN: Ada solusi yang diketahui di situs ebtables [2], tetapi solusi ini dapat diterapkan ketika hanya satu host yang digunakan. Ini memungkinkan semua lalu lintas dan jika ada paket dari IP dengan MAC lain dari yang diizinkan, paket dijatuhkan. Jika ada lebih dari satu host, semua pasangan IP-MAC yang ada harus terdaftar pada semua host. Ada kebutuhan untuk solusi kebijakan terbalik.
SOLUSI CRAFTED: Saya telah mencoba menggunakan ebtables dengan cara terbalik. Berikut ini contoh yang saya coba.
CONTOH 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
CONTOH 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
Inti dari apa yang saya inginkan adalah memiliki DROP kebijakan default dan hanya mengizinkan lalu lintas dari mesin virtual dengan pasangan IP-MAC yang benar yang digunakan pada host yang diberikan. Namun, solusi itu tidak berhasil.
PERTANYAAN: Bagaimana mengizinkan lalu lintas di jembatan hanya untuk pasangan IP-MAC tertentu yang menjalankan mesin virtual dan menjatuhkan semua pasangan IP-MAC yang tidak dikenal yang datang dari ports vnet [0-9] +?
Terima kasih banyak atas jawaban Anda.