Как я могу подключиться к VPN в docker без использования образов VPN? - PullRequest
5 голосов
/ 05 августа 2020

Доброе утро!

Я использую мобильную контрольную точку для подключения к моей клиентской VPN, и у меня есть 2 контейнера в docker: mysql и karaf, оба совместно используют сеть, которую я создал с помощью команды docker network create --subnet=vpnAddress mynet

Я использовал команду --network=mynet при запуске контейнеров.

Пока здесь все в порядке, я могу подключиться через putty s sh к karaf, установить kar и все пакеты ок.

Но при вызове служб я понимаю, что контейнер не подключен к VPN, даже если я создал сеть с адресом VPN. Мне нужно быть подключенным к VPN, чтобы вызывать службы.

Я подключен к VPN извне (за пределами docker) с помощью мобильной контрольной точки, но мне нужно docker для добавления / подключения к VPN.

Я использую windows 10 (используя docker с linux контейнерами), я попытался изменить go на C:\ProgramData\DockerDesktop\tmp-d4w, а также отредактировать файл host.docker.internal и изменить IP на мой адрес VPN, но ни один из них не работает.

Я много искал и видел людей, говорящих о docker образах vpn, таких как nordVpn или openVpn, но я не могу их использовать.

У меня есть Мне сказали, что мне нужно добавить сеть vpn к docker, но я зеленый в сети, и я не знаю, как это сделать, и то, что я сделал, не сработало.

Надеюсь, вы можете мне помочь. спасибо!

редактировать: в движке docker я добавил "bip": "vpnAddress/24" Теперь я понимаю, что сетевой мост теперь использует VPN-адрес, пытался --network=bridge в обоих контейнерах karaf и mysql, но теперь karaf не могу подключиться к mysql, но если я использую docker create network mynet по умолчанию и запускаю контейнер 2, используя эту сеть, он работает, но с VPN таким образом не повезло.

Ответы [ 2 ]

4 голосов
/ 14 августа 2020

Я не использовал Docker на Windows, но беглый взгляд на некоторые контейнеры VPN показывает, что, по крайней мере, в * nix, они используют --device /dev/net/tun --cap-add=NET_ADMIN, чтобы открыть «устройство» VPN для контейнера. Затем другие контейнеры используют сеть docker или ссылки для подключения к этому контейнеру VPN, поэтому может быть полезно посмотреть, как это делают контейнеры VPN.

Одно из предложений для Ma c кажется extra_hosts вот так:

extra_hosts:
  - "vpn.company.com:172.21.1.1"

Вы могли бы взломать его чем-то вроде этого. (или физически добавляя 172.21.1.1 vpn.company.com к /etc/hosts в контейнере). Кроме того, проверка конфликтов IP-адресов между демоном Docker и вашим хост-компьютером.

Windows docs , похоже, предполагает, что они не поддерживают сетевые интерфейсы как "устройства", поэтому вам, вероятно, потребуется либо создать очень специфичную сеть c docker, либо изменить настройки сети хоста, начиная с получения демона Docker для распознавания сети VPN.

См. Настроить расширенную сеть для некоторых примеров. Я бы попробовал сначала создать сеть, связанную с устройством VPN, а затем посмотреть на такие флаги, как --subnet и --gateway.

docker network create -d transparent \
    -o com.docker.network.windowsshim.interface="Ethernet 2" TransparentNet2

Это создает сеть с определенным su bnet и шлюзом, затем запускает контейнер со статически назначенным IP-адресом в этой сети.

C:\> docker network create -d transparent \
    --subnet=10.123.174.0/23 \
    --gateway=10.123.174.1 MyTransparentNet

C:\> docker run -it --network=MyTransparentNet \
    --ip=10.123.174.105 windowsservercore cmd

Удачи!

0 голосов
/ 13 августа 2020

Лучший способ справиться с этими вещами - использовать контейнер Linux, установить VPN и выполнять работу, как вы хотите, а sh контейнер Linux передать хабу docker для совместного использования работы. Не забудьте добавить документацию о том, как получить работу (в которую вы сохранили свою работу) из контейнера Linux.

...