LINUX.ORG.RU

Все-ли правила iptables применяються для linux bridge?

 ,


0

1

Я знаю что можно вклучить следующий параметр bridge-nf-call-iptables в procfs, корорый разрешит коду линуксового бриджа (а точнее модуля ядра br_netfilter) передавать IP пакеты в код фаервола (я имею ввиду в ту часть где рутинг и хуки, чейны и таблицы). Но вопрос такой, все ли правила применяются в случае бриджа, я имею ввиду все ли чейны, таблицы и хуки могут применяться или в случае бриджа какие-то правила не будут работать? Было бы здорово увидеть ссылку какую-нибуть… Я по этому поводу не смог ничего нагуглить… Спасибо!

Ну вы разрываете пересылку с одного интерфейса на другой и следовательно все правила FORWARD будут теперь идти через iptables.

vodz ★★★★★
()

http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html

Если рассматривать транзитный пакет для моста, то он проходит все правила цепочки iptables prerouting,forward,postrouting так же как и транзитный пакет ipv4 при форвардинге.

А еще если сработает prerouting/dnat, то пакет может стать маршрутизируемым, а не коммутируемым.

Для тестирования при небольшом трафике можно воспользоваться

iptables -t raw -I PREROUTING 1 -i brX -j TRACE
Будет видно через что прошел пакет пришедший из бриджа.

vel ★★★★★
()
Ответ на: комментарий от vel

Да, но правильно ли я понимаю что пакет проходящий через линукс бридж в цепочки INPUT, OUTPUT никак не попадет? Потому что интерфейсы которые подключены к мосту, от IP стека глобального неймспейса откючены.

Andy041292
() автор топика
Ответ на: комментарий от Andy041292
#$IPTABLES -A FORWARD -d $PUBLIC_IP4_RANGE -o $PUBLIC_IFACE -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#$IPTABLES -A FORWARD -s $PUBLIC_IP4_RANGE -i $PUBLIC_IFACE -j ACCEPT
$IPTABLES -A FORWARD -i $PUBLIC_IFACE -o $PUBLIC_IFACE -j ACCEPT
$IPTABLES -A FORWARD -o $PUBLIC_IFACE -j REJECT --reject-with icmp-port-unreachable
$IPTABLES -A FORWARD -i $PUBLIC_IFACE -j REJECT --reject-with icmp-port-unreachable

первые два правила для использования бриджа для выхода в Сеть. Следующие три - изоляция. Я прямой выход в Сеть через бридж не использую, я использую отдельную машину под шлюз.

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от Andy041292

Если цель является локальный процесс, то вполне проходит. При создании бриджа в linux не заморочились с выделением интерфейса. Бридж для локалхоста одновренно И коммутатор И интерфейс. Адрес присваивается прямо бриджу.

targitaj ★★★★★
()

Насколько я знаю, транзитные пакеты просто идут мимо и для мостов есть отдельные фильтры. Пакеты выходящие с моста для маршрутизации или к хосту естественно попадут и в файрвол.

См например https://wiki.nftables.org/wiki-nftables/index.php/Bridge_filtering

sergej ★★★★★
()
Ответ на: комментарий от sergej

Ок, спасибо, но немного запутался… «для мостов есть отдельные фильтры» - то есть это про nftables? Может я неправильно понимаю, но я вижу это так - в ядре линукс есть встроенный файервол (Netfilters), который представляет из себя набор таблиц и хуков, разбросанных по сетевому стеку (PREROUTING, POSTROUTING, FORWARD хуки находятся в коде сетевого стека, отвечающего за маршрутизацию, INPUT/OUTPUT хуки на входе/выходе в сетевой стек). НО, чего я не понимаю, в то время как и iptables, и nftables, ebtables и т. д. это все РАЗНОЕ API для регистрации этих самых хуков и записи данных в таблицы raw,mangle и т. д., правильно? Но они регистрируют одни и те же хуки и таблицы или для nftables свои хуки/таблицы, а для iptables свои?

Andy041292
() автор топика
Ответ на: комментарий от Andy041292

либо ebtables + iptables, либо nft.

Хуки в одних и тех же местах, но у каждого своя реализация и со своим api.

nft, в теории, будет транслироваться в [e]BPF, но когда это будет - ХЗ. Держать clang на маршрутизаторе чтобы загрузить правила - это полный 3.14ц

vel ★★★★★
()
Ответ на: комментарий от vel

Ок, спасибо, и последнне, получается вывод такой - обычный линукс бридж будет вызывать ВСЕ правила(хуки) из цепочек FORWARD, PREROUTING и POSTROUTING, если в правиле явно не было указано название другого интерфейса или бриджа, так? К тому же если у линукс бриджа будет еще и IP адрес и у пакета проходящего транзитом через этот бридж destination IP address будет совпадать с бриджом (или какое-то приложение в юзерспейсе привяжется к бриджу и будет слать IP пакеты через него), то он (код биджа) будет вызывать все правила(хуки) еще и из цепочек INPUT, OUTPUT (опять же если в правиле не было указано явно название другого интерфейса). Я прав или есть ошибка?

Andy041292
() автор топика
Ответ на: комментарий от Andy041292

Я не читал, поэтому man ebtables и экспериментируй сам, а потом man nftables по желанию.

thesis ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.