Назад | Перейти на главную страницу

Отладка перенаправления портов в Docker

Управляющий делами

У меня есть настройка роя докеров на сетевом VPN. Мой менеджер на 10.0.0.1. Я бегал:

docker swarm init --advertise-addr=wg0

который затем использует IP-адрес VPN для прослушивания 10.0.0.1 в отличие от общедоступного IP-адреса по умолчанию.


Рабочий

На моем работнике 10.0.0.2 Затем я могу присоединиться к рой:

docker swarm join --token SWMTKN-1... 10.0.0.1:2377

И все отлично работает.


Вопрос

К сожалению, я предполагал, что эта настройка будет означать, что вся сетевая активность для роя будет находиться под этим VPN, поскольку вы можете маршрутизировать к контейнеру только изнутри сети VPN. 10.0.0.0/24. Это не так - если одна из моих служб на рабочем узле использует порт, скажем, 80 при маршрутизации на PUB_IP_OF_SWARM:80 это обрабатывается докером, хотя у меня не явно выставленный порт 80 в рое, например:

    ports:
      - 80:80

при беге docker ps Я вижу, что в контейнере 80/tcp под PORTS но даже если я удалю этот контейнер, докер направит меня куда-нибудь - при проверке с помощью Wireshark:

 -- DOCKER CONTAINER WITH PORT 80 NOT RUNNING
 201 42.900853464   172.18.0.2 → SOME PUBLIC IP I DON'T RECOGNISE TCP 58 [TCP Retransmission] 80 → 46521 [SYN, ACK] Seq=0 Ack=1 Win=64860 Len=0 MSS=1410
 -- DOCKER CONTAINER WITH PORT 80 RUNNING
  202 44.578866182   172.18.0.1 → 172.18.0.2   TCP 74 42142 → 80 [SYN] Seq=0 Win=65495 Len=0 MSS=65495 SACK_PERM=1 TSval=2625752199 TSecr=0 WS=128
  203 44.598042481   172.18.0.2 → 127.0.0.1    TCP 74 80 → 42142 [SYN, ACK] Seq=0 Ack=1 Win=64308 Len=0 MSS=1410 SACK_PERM=1 TSval=2603481334 TSecr=2625752199 WS=128
  204 44.598106511   172.18.0.1 → 172.18.0.2   TCP 66 42142 → 80 [ACK] Seq=1 Ack=1 Win=65536 Len=0 TSval=2625752219 TSecr=2603481334
  205 44.598262858   172.18.0.1 → 172.18.0.2   HTTP 139 GET / HTTP/1.1 
  206 44.616831844   172.18.0.2 → 127.0.0.1    TCP 66 80 → 42142 [ACK] Seq=1 Ack=74 Win=64256 Len=0 TSval=2603481353 TSecr=2625752219
  207 44.618663675   172.18.0.2 → 127.0.0.1    HTTP 220 HTTP/1.1 302 Found  (text/plain)

При отправке HTTP-запроса к моему рабочему узлу извне он возвращает 404, и я считаю, что он направляется моему менеджеру, хотя я не вижу, что это так в журналах wirehark:

   5 2.297454567 MY HOME IP → 172.18.0.2   TCP 78 62063 → 443 [SYN, ECN, CWR] Seq=0 Win=65535 Len=0 MSS=1380 WS=64 TSval=442045669 TSecr=0 SACK_PERM=1
    6 2.315953260   172.18.0.2 → MY HOME IP TCP 74 443 → 62063 [SYN, ACK, ECN] Seq=0 Ack=1 Win=64308 Len=0 MSS=1410 SACK_PERM=1 TSval=2607358273 TSecr=442045669 WS=128
    7 2.335935602 MY HOME IP → 172.18.0.2   TCP 66 62063 → 443 [ACK] Seq=1 Ack=1 Win=131328 Len=0 TSval=442045707 TSecr=2607358273
    8 2.336135170 MY HOME IP → 172.18.0.2   TLSv1 583 Client Hello
    9 2.360086448   172.18.0.2 → MY HOME IP TCP 66 443 → 62063 [ACK] Seq=1 Ack=518 Win=63872 Len=0 TSval=2607358312 TSecr=442045707
   10 2.360197845   172.18.0.2 → MY HOME IP TLSv1.3 1434 Server Hello, Change Cipher Spec, Application Data, Application Data, Application Data
   11 2.360204742   172.18.0.2 → MY HOME IP TLSv1.3 264 Application Data, Application Data
   12 2.379397317 MY HOME IP → 172.18.0.2   TCP 66 62063 → 443 [ACK] Seq=518 Ack=1567 Win=129728 Len=0 TSval=442045750 TSecr=2607358317
   13 2.418295248 MY HOME IP → 172.18.0.2   TLSv1.3 96 Change Cipher Spec, Application Data
   14 2.418338129 MY HOME IP → 172.18.0.2   TCP 66 62063 → 443 [FIN, ACK] Seq=548 Ack=1567 Win=131072 Len=0 TSval=442045787 TSecr=2607358317
   15 2.437103286   172.18.0.2 → MY HOME IP TCP 66 443 → 62063 [FIN, ACK] Seq=1567 Ack=549 Win=64128 Len=0 TSval=2607358394 TSecr=442045787
   16 2.457970013 MY HOME IP → 172.18.0.2   TCP 66 62063 → 443 [ACK] Seq=549 Ack=1568 Win=131072 Len=0 TSval=442045825 TSecr=2607358394
   17 3.270244135 MY HOME IP → 172.18.0.2   TCP 78 62066 → 443 [SYN, ECN, CWR] Seq=0 Win=65535 Len=0 MSS=1380 WS=64 TSval=442046631 TSecr=0 SACK_PERM=1
   18 3.289073793   172.18.0.2 → MY HOME IP TCP 74 443 → 62066 [SYN, ACK, ECN] Seq=0 Ack=1 Win=64308 Len=0 MSS=1410 SACK_PERM=1 TSval=2607359246 TSecr=442046631 WS=128
   19 3.314538917 MY HOME IP → 172.18.0.2   TCP 66 62066 → 443 [ACK] Seq=1 Ack=1 Win=131328 Len=0 TSval=442046673 TSecr=2607359246
   20 3.315201380 MY HOME IP → 172.18.0.2   TLSv1 583 Client Hello

Может ли кто-нибудь объяснить, почему докер берет на себя всю сеть и как это остановить?