Я его и рассматриваю как реальный коммутатор. У меня опыта не так много работы с сетями, но я предполагаю, что ip на свитче настраивается для удаленного доступа к нему. В таком случае мне надо в него аплинк ткнуть от физ. интерфейса (enp1s0). Но как только я добавляю в бридж этот интерфейс, у меня, конечно же, теряется соединение с серваком. Приходится откатывать настройки и думать, что я не понимаю и где лажаю.
Если коротко, то:
* brigde интерфейс является портом самого хоста в L2 сети, которую bridge и создает.
* потому для пропуска трафика через хост нужен IP-адрес на самом bridge-интерфейса (если не рассматривать всякие прозрачные мосты)
* контейнер при отправке пакета смотрит в таблицы маршрутизации (local и main, именно в таком порядке). Таблица local заполняется исходя из настроек интерфейса (сеть берется из адреса и маски).
* выбор нужного маршрута происходит по правилу longest prefix match (выбирается тот маршрут, в который попадает адрес назначения, и при этом маска у маршрута наибольшая).
* если ты отправляешь пакет на
8.8.8.8, то он попадает под default route из таблицы main, где gateway-ем выступает ip на bridge-интерфейсе.
* после этого надо понять, как отправть трафик на этот гейтвей: для этого происходит лукап адреса гейтвея, который для которого обнаруживается маршрут в таблице local, из которого видно, через какой интерфейс послать пакет и с каким source-адресом.
* далее по arp определяется mac-адрес, соответствующий IP-адресу гейтвея и уже тогда отправляется ethernet-фрейс с dst mac адресом гейтвея и src mac адресом исходящего интерфейса контейнера, а внутри фрейма находится ip пакет с dst ip адресом
8.8.8.8 и src ip адресом контейнера.