Я намагаюся створити правила сполучення IP-MAC в ebtables . Є кілька підручників та пов'язаних із цим питань [1], але у мене є певна настройка.
ЕКОЛОГІЯ: У мене багато фізичних господарів . У кожного хоста є кілька карток Ethernet, об'єднаних у зв'язки і використовуваних як раб для мосту. На кожному хості є багато віртуальних машин (kvm, qemu, libvirt). Кожна віртуальна машина підключена до мосту свого фізичного хоста через новий порт під назвою vnet [0-9] +. Не існує НАТ. Мережа працює чудово, всі фізичні хости можуть пінгнути, всі віртуальні машини теж. У кожної віртуальної машини є своя IP-адреса та MAC-адреса.
ПРОБЛЕМА: Всередині віртуальної машини IP-адресу можна змінити на іншу.
ЗНАЙДЕННЕ РІШЕННЯ: На сайті 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] +?
Дуже дякую за будь-які відповіді.