#docker #vpn #docker-networking
#docker #vpn #docker-сеть
Вопрос:
Я не уверен, относится ли этот вопрос к stackoverflow. Я использую контейнеры docker для своих приложений. Чтобы легко понять мою архитектуру, вот некоторые пиксельные рисунки:
Docker Network A
------------------ Request A ------------------
| Container A | <-------------- | Container B |
| | | |
| Rest Service | Request B | Worker with |
| | <-------------- | VPN Proxy |
------------------ ------------------
Проблема: в контейнере B есть VPN-прокси, который управляется моим приложением через python subprocess
. Перед тем, как приложение запустит прокси, Container B
делает a Request A
, который работает нормально. После этого приложение запускает прокси и подключается к местоположению, что также работает нормально. Но с этого момента Container B
не может разрешить имя хоста Container A
, поэтому все запросы завершаются неудачно.
Мой вопрос: есть ли способ подключиться Container A
даже с включенным VPN-прокси Container B
?
Обновление (2020-12-06 11:37):
Я обнаружил, что DNS не работает, но доступ напрямую через IP-швы работает. На данный момент это обходной путь, но не удовлетворительное решение. Если у кого-нибудь есть идея или совет, это было бы здорово.
Комментарии:
1. Я считаю, что если у вас будет два сетевых адаптера, а ваш vpn поддерживает «разделенный dns», вы сможете реализовать это решение
2. Спасибо за совет. На данный момент мой VPN не поддерживает раздельное туннелирование. У вас есть другие идеи?
3. Я думал о манипулировании
resolv.conf
, но потом мне снова нужно добавить IPContainer A
.4. а. и почему это проблема (о resolv.conf)? б. почему бы не сохранить IP-адрес перед запуском вашего скрипта?
5. IP-адреса контейнера docker не являются статическими. Поэтому мне нужно настроить IP-адрес для каждого развертывания вручную. Но я сделаю это через переменную среды для приложения. И поскольку IP-адрес изменится только в том случае, если я удалю и создам
Container A
его, усилия не так уж велики.