2

Не уверен, является ли это специфическим для докера или общим сетевым вопросом.

Я использую сервер Debian Jessie с несколькими контейнерами Docker. Насколько я понимаю, docker создает виртуальный интерфейс (или, строго говоря, виртуальный мост Ethernet) с именем docker0 и связывает виртуальные интерфейсы каждого отдельного контейнера. Затем он манипулирует iptables хоста, чтобы обеспечить связь между открытыми портами каждого контейнера и сетью хоста.

У меня VPN, интерфейс - tun0 . Один из контейнеров предоставляет два порта: 8888 и 23456 . Я хочу тоннель всего трафика , и из порта 23456 через VPN.

Как это может быть сделано?

Другой способ взглянуть на это состоит в том, что докер автоматически направляет трафик на основе порта в нужный контейнер. Я хочу вставить другой уровень через iptables , где трафик через порт 23456 направляется в VPN, а любой трафик из VPN направляется в порт 23456 .

Для информации, провайдер VPN использует OpenVPN.

1 ответ1

0

Это должно быть полностью автоматически, за исключением необходимости обычного правила маскарада:

  iptables -t nat -A POSTROUTING -i docker0 -o tun0 -j MASQUERADE

Просто ради тщательности убедитесь, что у вас есть правило маршрутизации на хосте, обслуживающее docker0: если вы можете пропинговать докеры с хоста, не нужно читать дальше. В противном случае добавьте

  ip route add Docker'sNetwork/16 via dev docker0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .