Назад | Перейти на главную страницу

Доступ к VPN контейнера докеров извне (хост-машина или другие контейнеры)

У меня есть несколько контейнеров докеров на одном компьютере, и один из них работает с сервером OpenVPN, поэтому у него есть сетевой интерфейс. tun0 (192.168.255.1). В этой виртуальной частной сети есть один клиент 192.168.255.2 удаленно.
Мне нужно иметь возможность общаться с этим удаленным клиентом из других контейнеров докеров или с хост-машины, как если бы они были в одной локальной сети. Я добавил маршрут на хост-машине:

# ip route add 192.168.255.0/24 dev docker0 

Теперь я могу пинговать 192.168.255.1 (VPN-сервер), но клиенты недоступны:

# ping 192.168.255.2
PING 192.168.255.2 (192.168.255.2) 56(84) bytes of data.
From 172.17.0.1 icmp_seq=1 Destination Host Unreachable
From 172.17.0.1 icmp_seq=2 Destination Host Unreachable
From 172.17.0.1 icmp_seq=3 Destination Host Unreachable

Пробовал режимы устройства TAP и TUN OpenVPN, топологии по умолчанию и подсети - не помогает

Вы должны взглянуть на мой ответ здесь: https://serverfault.com/a/879809/67419 это именно то, что я настроил execpt, чтобы я не использовал мост Docker по умолчанию, а создал специальный. Но с мостом по умолчанию это будет работать аналогично.

Вам действительно нужно добавить правильный маршрут (как и вы), но вам также нужно хотя бы разрешить FORWARDING на ваших iptables, что-то вроде sudo iptables -A FORWARD -i tun+ -j ACCEPT.

Убедитесь также, что у вас есть client-to-client и topology subnet по крайней мере, в конфигурации вашего сервера OpenVPN.

Все подробности в моем другом ответе.