Рейтинг:0

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

флаг de

Я создаю следующую настройку, используя контейнеры докеров

  • Докер-хост: физическая машина, на которой запущены док-контейнеры.
    • опенвпн: контейнер, который запускает openvpn и автоматически подключается к VPN.
    • nzbget: контейнер с запущенным nzbget, веб-интерфейс доступен через порт <докер-хост-ip>:6789

Факты:

  • Я могу получить доступ ко всем контейнерам, используя IP-адрес узла докера.
  • Соединение openvpn успешно устанавливает соединение VPN.
  • nzbget работает.

Второй этап моего плана заключается в маршрутизации трафика nzbget контейнер через опенвпн контейнер. Я успешно достиг этого, добавив следующую строку в docker-compose.yaml контейнера nzbget:

...
network_mode: "контейнер: openvpn"`
...

После этого запроса ipinfo.io показывает мне IP VPN. Но после этого я теряю доступ к веб-интерфейсу nzbget через <докер-хост-ip>:6789 (время соединения истекло). Когда я (в целях тестирования) не позволяю опенвпн контейнер установить VPN-соединение и перезапустить оба контейнера. Я могу подключиться к интерфейсу nzbget, используя <докер-хост-ip>:6789. Итак, мне кажется, что само VPN-соединение мешает мне подключиться к контейнеру nzbget.

Теперь вопрос: как я могу настроить openvpn таким образом, чтобы он позволял мне подключаться к моему веб-интерфейсу nzbget, используя <докер-хост-ip>:6789.

Я заметил, глядя на логи докера принадлежащий опенвпн контейнер, что при установлении VPN-подключения добавляются некоторые маршруты:

...
2021-11-16 19:03:38 Устройство TUN/TAP tun0 открыто
16.11.2021, 19:03:38 /sbin/ip link set dev tun0 up mtu 1500
2021-11-16 19:03:38 /sbin/ip link set dev tun0 up
2021-11-16 19:03:38 /sbin/ip-адрес добавить dev tun0 10.7.2.7/24
2021-11-16 19:03:38 /sbin/ip route add <vpn-ip-address>/32 через 172.18.0.1
2021-11-16 19:03:38 /sbin/ip маршрут добавить 0.0.0.0/1 через 10.7.2.1
2021-11-16 19:03:38 /sbin/ip маршрут добавить 128.0.0.0/1 через 10.7.2.1
...

Я думаю, что неправильная конфигурация/конфликтующие IP-маршруты вызывают мои проблемы. Итак, немного дополнительной информации.

Интерфейсы на опенвпн контейнер:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
2: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast состояние НЕИЗВЕСТНО qlen 500
    ссылка/[65534] 
    инет 10.7.2.7/24 глобальная область tun0
       valid_lft навсегда
85: eth0@if86: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    ссылка/эфир 02:42:ac:12:00:02 брд ff:ff:ff:ff:ff:ff
    инет 172.18.0.2/16 brd 172.18.255.255 глобальная область действия eth0
       valid_lft навсегда

Список IP-маршрутов, когда vpn активен на опенвпн контейнер:

root@cf64c3dd2846:/# список IP-маршрутов
0.0.0.0/1 через 10.7.2.1 dev tun0 
по умолчанию через 172.18.0.1 dev eth0 
10.7.2.0/24 dev tun0 ссылка на область действия src 10.7.2.7 
<vpn-ip-адрес> через 172.18.0.1 dev eth0 
128.0.0.0/1 через 10.7.2.1 dev tun0 
172.18.0.0/16 dev eth0 ссылка на область действия src 172.18.0.2 

Список IP-маршрутов при включенном vpn нет активен на опенвпн контейнер (в этой ситуации я могу получить доступ к веб-интерфейсу nzbget):

по умолчанию через 172.18.0.1 dev eth0 
172.18.0.0/16 dev eth0 ссылка на область ядра proto src 172.18.0.2

Кто-нибудь знает правило IP-маршрута, которое я могу применить, чтобы разрешить доступ к веб-интерфейсу nzbget? При наличии активного VPN-подключения? Например, есть способ разрешить (только) входящий трафик на порт 6789 маршрутизироваться «обычно» (не через VPN)

Спасибо за вашу помощь!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.