Я пытаюсь настроить контейнер firewall
, который разрешает только исходящий трафик через определенный IP-адрес, используя iptables
.У меня есть второй контейнер (openvpn
), который устанавливает OpenVPN с этим IP.
Контейнер брандмауэра находится в пользовательской сети (созданной с помощью docker network create <name>
), а контейнер openvpn использует --network container:firewall
.
Настройка брандмауэра работает нормально.Выходной трафик работает только при подключенном openvpn.
Проблема:
Я хотел добавить способ проверки настройки брандмауэра перед запуском openvpn.Я решил запустить сокет в контейнере брандмауэра с nc -l -k -p 5000 localhost
и опрашивать его с помощью этого скрипта ожидания .
Проблема в том, что я не могу отреагировать на этот сокет вв любом случае из другого контейнера.На firewall
контейнер nc -vz localhost 5000
подключается нормально.Я думал, что, поскольку они совместно использовали свой сетевой стек, я мог бы также вызывать nc -vz localhost 5000
для контейнера openvpn
, но это не работает.Я перепробовал все IP-адреса, которые контейнеры показывают в ifconfig
, и безуспешно пытался не привязать nc
к интерфейсу (например, nc -l -k -p 5000
).
Я неправильно понял, как работает --network container:<name>
, иличто-то еще мне не хватает?
Я проверил это с простыми контейнерами Ubuntu, а также с Alpine Linux.