Введение проблемы
У меня есть топология сети, которая выглядит как на рисунке ниже. Все хосты работают под разными дистрибутивами Linux, и вся моя конфигурация должна (надеюсь) быть сделана на хосте A, который является RHEL7.
с этой таблицей маршрутизации:
Destination Gateway Genmask Flags Metric Ref Use
Iface
default fw.gatename. 0.0.0.0 UG 100 0 0 enp34s0
10.0.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enp9s0
10.0.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 bridge1
10.12.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp2s0f1
10.14.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp2s0f0
10.17.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp7s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 bridge2
172.18.0.3 0.0.0.0 255.255.255.255 UH 0 0 0 bridge0
172.18.0.4 0.0.0.0 255.255.255.255 UH 0 0 0 bridge1
192.168.3.0 0.0.0.0 255.255.255.0 U 100 0 0 enp34s0
192.168.30.0 0.0.0.0 255.255.255.0 U 0 0 0 enp35s0
192.168.30.91 0.0.0.0 255.255.255.255 UH 0 0 0 bridge2
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Моя главная цель состоит в том, чтобы каждый физический интерфейс узла A отображался в контейнер Docker, чтобы трафик мог свободно проходить только между обоими концами этого сопоставления (и не передавал трафик к интерфейсам вне этого сопоставления или от них).
Например, Container1 должен иметь возможность (только) связываться с хостом B (по красным ссылкам на диаграмме), а Container2 должен иметь возможность (только) связываться с хостом C (по зеленым ссылкам на диаграмме).
Начальная попытка
По умолчанию docker создает мост br-97707d67f97c
(например), который я удалил (потому что он соединяет все контейнеры друг с другом). Я создал три моста (bridge0
, bridge1
, bridge2
), потому что я думал, что может быть какая-то надежда на то, чтобы сделать мост «частным».
В настоящее время я могу пропинговать из любого контейнера любой интерфейс на хосте A, B или C; Я не могу пропинговать от одного контейнера до другого, который я предполагаю, из-за того, что они находятся в той же подсети и запутывают мост.
Вопрос
Как я могу логически разделить интерфейсы на хосте, чтобы они могли взаимодействовать только с теми интерфейсами, которые мне нужны?