Seltsames Netzwerkproblem: Ports 80 und 433 von außen nicht erreichbar, Docker

Seltsames Netzwerkproblem: Ports 80 und 433 von außen nicht erreichbar, Docker

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.1Antwort 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.1ebenfalls 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"

verwandte Informationen