У меня есть настройка роя докеров на сетевом 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
Может ли кто-нибудь объяснить, почему докер берет на себя всю сеть и как это остановить?