Рейтинг:0

ebtables не работает в докере

флаг us

Привет, я пытаюсь запустить ebtables в докере, однако ни одно из правил ebtables не выполняется.

Например - обратите внимание, что счетчики не увеличены хотя ARP отправляется и успешно

[root@injector /]# ebtables -A ВЫВОД -p ARP -j ПРИНЯТЬ
[root@injector /]# ebtables -Lc --Lc --Lx
Бридж-таблица: фильтр

Мостовая цепочка: INPUT, записей: 0, политика: ACCEPT

Мостовая цепочка: FORWARD, записей: 0, политика: ACCEPT

Мостовая цепочка: OUTPUT, записей: 1, политика: ACCEPT
-p ARP -j ПРИНЯТЬ, pcnt = 0 -- bcnt = 0
[root@injector /]# пинг 192.168.5.201
PING 192.168.5.201 (192.168.5.201) 56 (84) байт данных.
64 байта от 192.168.5.201: icmp_seq=1 ttl=64 время=0,141 мс
64 байта от 192.168.5.201: icmp_seq=2 ttl=64 время=0,071 мс
64 байта от 192.168.5.201: icmp_seq=3 ttl=64 время=0,137 мс
^ С
--- Статистика пинга 192.168.5.201 ---
3 пакета передано, 3 получено, 0% потери пакетов, время 2065 мс
rtt min/avg/max/mdev = 0,071/0,116/0,141/0,033 мс
[root@injector /]# ebtables -Lc --Lc --Lx
Бридж-таблица: фильтр

Мостовая цепочка: INPUT, записей: 0, политика: ACCEPT

Мостовая цепочка: FORWARD, записей: 0, политика: ACCEPT

Мостовая цепочка: OUTPUT, записей: 1, политика: ACCEPT
-p ARP -j ПРИНЯТЬ, pcnt = 0 -- bcnt = 0

Докер запускается в компоновке со следующими разрешениями

привилегированный: правда
cap_add: 
  - NET_ADMIN
  - ВСЕ
тома:
  - /Дев:/Дев

То же самое в корневом пространстве имен хоста работает нормально

➢ ~ sudo ebtables -A ВЫВОД -p ARP -j ПРИНЯТЬ
~ sudo ebtables -Lc --Lc --Lx
Бридж-таблица: фильтр

Мостовая цепочка: INPUT, записей: 0, политика: ACCEPT

Мостовая цепочка: FORWARD, записей: 0, политика: ACCEPT

Мостовая цепочка: OUTPUT, записей: 1, политика: ACCEPT
-p ARP -j ПРИНЯТЬ, pcnt = 0 -- bcnt = 0
~ пинг 192.168.5.201
PING 192.168.5.201 (192.168.5.201) 56 (84) байт данных.
64 байта от 192.168.5.201: icmp_seq=1 ttl=64 время=0,087 мс
64 байта от 192.168.5.201: icmp_seq=2 ttl=64 время=0,040 мс
64 байта от 192.168.5.201: icmp_seq=3 ttl=64 время=0,030 мс
^ С
--- Статистика пинга 192.168.5.201 ---
3 пакета передано, 3 получено, 0% потери пакетов, время 2058 мс
rtt min/avg/max/mdev = 0,030/0,052/0,087/0,025 мс
~ sudo ebtables -Lc --Lc --Lx
Бридж-таблица: фильтр

Мостовая цепочка: INPUT, записей: 0, политика: ACCEPT

Мостовая цепочка: FORWARD, записей: 0, политика: ACCEPT

Мостовая цепочка: OUTPUT, записей: 1, политика: ACCEPT
-p ARP -j ПРИНЯТЬ, pcnt = 4 -- bcnt = 112
~

версия докера на основе almalinux:8.5

A.B avatar
флаг cl
A.B
ebtables требует моста. Пожалуйста, покажите имя интерфейса моста в контейнере (не в хосте).
Boris avatar
флаг us
@A.B Мост — это мост докера, который соединяет хост-компьютер и докер и создается с помощью компоновки докера (драйвер моста, подсеть 192.168.5.0/24). Имя интерфейса моста в контейнере — eth0, но я думаю, что это не то, что вы ищете. Я думаю, что сам контейнер не знает, что он подключен к мосту.
Boris avatar
флаг us
@A.B Это настройка, которая описана здесь https://serverfault.com/questions/1101109
Boris avatar
флаг us
Я понимаю. Если вы вставите ответы. Я отмечу это как ответ. Думаю отладить проблему описанную в ссылке (serverfault.com/questions/1101109). Я буду использовать ebtables на хосте, только пытаясь отслеживать трафик veth контейнеров, которые видны на хосте и подключены к мосту, вместо того, чтобы запускать ebtables внутри контейнера. Спасибо!!!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.