Я пытаюсь создать правила сопряжения IP-MAC в ebtables . Есть несколько учебных пособий и связанных с ними вопросов [1], но у меня есть особые настройки.
ОКРУЖАЮЩАЯ СРЕДА: У меня много физических хозяев . Каждый хост имеет несколько сетевых карт, соединенных в связку и используемых в качестве подчиненных для моста. На каждом хосте много виртуальных машин (kvm, qemu, libvirt). Каждая виртуальная машина подключена к мосту своего физического хоста через новый порт vnet [0-9] +. Там нет NAT. Сеть работает нормально, все физические хосты могут быть проверены, все виртуальные машины тоже. Каждая виртуальная машина имеет свой 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] +?
Большое спасибо за любые ответы.