Контейнер Docker с VPN-прокси не может подключиться к другому контейнеру в той же сети docker

#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 , но потом мне снова нужно добавить IP Container A .

4. а. и почему это проблема (о resolv.conf)? б. почему бы не сохранить IP-адрес перед запуском вашего скрипта?

5. IP-адреса контейнера docker не являются статическими. Поэтому мне нужно настроить IP-адрес для каждого развертывания вручную. Но я сделаю это через переменную среды для приложения. И поскольку IP-адрес изменится только в том случае, если я удалю и создам Container A его, усилия не так уж велики.