У меня есть несколько контейнеров докеров на одном компьютере, и один из них работает с сервером 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.
Все подробности в моем другом ответе.