
Ich habe ein verwirrendes Netzwerkproblem, das mir Kopfzerbrechen bereitet. Die Situation ist folgende: Ich kann von außen nicht auf die Ports 80 und 433 zugreifen, aber ich kann jeden anderen Port innerhalb von Docker weiterleiten, und es funktioniert einwandfrei! Ich habe UFW eingerichtet und auch K3s installiert, aber der Großteil meiner Dienste läuft mit Docker Compose.
Um die Angelegenheit weiter zu untersuchen, habe ich einen Nginx-Testcontainer gestartet und die Dinge nahmen eine noch seltsamere Wendung.
Ich kann diesen Testcontainer über seine interne Docker-IP erreichen, aber selbst eine einfache curl -I 127.0.0.1
Antwort führt zu einem 404-Fehler:
-> # curl -I 127.0.0.1
HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Wed, 20 Sep 2023 00:39:26 GMT
Content-Length: 19
Die Sache wird komplizierter, als ich feststelle, dass ich von einer anderen internen IP (einem VPN-Netzwerk) darauf zugreifen kann:
-> # curl -I 192.168.10.1
HTTP/1.1 200 OK
Server: nginx/1.25.2
Date: Wed, 20 Sep 2023 00:41:32 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 15 Aug 2023 17:03:04 GMT
Connection: keep-alive
ETag: "64dbafc8-267"
Accept-Ranges: bytes
Aber hier ist der Haken: Wenn ich den Container stoppe, würden Sie einen Fehler wie diesen erwarten:
-> # curl -I 127.0.0.1
curl: (7) Failed to connect to 127.0.0.1 port 80 after 0 ms: Couldn't connect to server
Aber nein, ich werde immer wieder mit dem gleichen 404-Fehler begrüßt!
AKTUALISIEREN:Das Mysterium wird dadurch noch größer, dass beim Ausschalten des Docker-Containers jeder Zugriffsversuch 192.168.10.1
ebenfalls zu einem 404-Fehler führt:
-> # curl -I 192.168.10.1
HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
Date: Wed, 20 Sep 2023 00:51:49 GMT
Content-Length: 19
Ich bin völlig ratlos und habe keine Ahnung, wo das Problem herkommt. Um das Ganze noch verwirrender zu machen, kann ich dieses Experiment mit Port 81 wiederholen und alles funktioniert wie erwartet. Wenn jemand Erkenntnisse oder Vorschläge zur Fehlerbehebung hat, wäre ich für Ihre Hilfe sehr dankbar!
Hier einige weitere Ausgaben:
-> # lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 9815 root 4u IPv4 54638 0t0 TCP *:http (LISTEN)
docker-pr 9823 root 4u IPv6 48079 0t0 TCP *:http (LISTEN)
-> # docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
975e74d4bdfd nginx:latest "/docker-entrypoint.…" 29 minutes ago Up 29 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp nginx_test_nginx-test_1
-> # ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
Anywhere ALLOW 192.168.1.0/24
Anywhere ALLOW 192.168.178.0/24
81/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
81/tcp (v6) ALLOW Anywhere (v6)
Anywhere on eth0 ALLOW FWD Anywhere on wghub
Anywhere on wghub ALLOW FWD Anywhere on wghub
Anywhere (v6) on eth0 ALLOW FWD Anywhere (v6) on wghub
Anywhere (v6) on wghub ALLOW FWD Anywhere (v6) on wghub
-> # netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:10010 0.0.0.0:* LISTEN 1374/containerd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 631/sshd: /usr/sbin
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9815/docker-proxy
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 610/systemd-resolve
tcp6 0 0 :::22 :::* LISTEN 631/sshd: /usr/sbin
tcp6 0 0 :::80 :::* LISTEN 9823/docker-proxy
-> # cat /etc/default/docker
DOCKER_OPTS="--iptables=false"
AKTUALISIEREN:Dies ist meine Testkonfiguration:
docker-compose.yml
version: '3'
services:
nginx-test:
image: nginx:latest
ports:
- "80:80"