Из того, что я читал, мост происходит ниже уровня IP, но как я могу назначить IP интерфейсу моста?
brctl addbr br0
ifconfig br0 IP promisc up
Что делает ОС? похоже, что он предоставляет мне сетевой стек IP поверх br0.
Могут ли правила iptable работать поверх этого интерфейса?
Спасибо. PS: не интересует ebtables. Меня больше интересует концепция того, что происходит под капотом, когда я назначаю IP интерфейсу моста.
По сути, мост отображается на компьютере как другой интерфейс, который вы обычно настраиваете, как любой другой сетевой интерфейс.
В целом процесс выглядит следующим образом:
Теперь вы, как обычно, используете другие команды для добавления интерфейсов. Автоконфигурация каждого дистрибутива работает немного по-разному, например, в RHEL6.x
cat /etc/sysconfig/network-scripts/ifcfg-eth0
...
IPADDR="0.0.0.0"
BRIDGE="br0"
...
cat /etc/sysconfig/network-scripts/ifcfg-br0
...
DEVICE="br0"
TYPE="Bridge"
IPADDR="10.0.0.1"
Вот хорошая статья с более подробной информацией, для CentOS
Вот официальная документация ядра для brctl.
iptables
Теперь, когда основы разложены, мост в Linux действительно очень важен. Мостовое соединение происходит на более низком уровне в сетевом стеке, и, таким образом, с этими кадрами уже что-то делается, еще до того, как они пересекут iptables. Это тема wiiiiide, поэтому вот хорошая страница с множеством диаграмм.
Да, вы можете использовать iptables поверх моста, однако ebtables - более правильный способ сделать это.