Docker bridge networks - kaputte IP tables

guacamole
docker
ucs-4-4

#1

Hallo,

ich habe hier einen UCS 4.4-1 errata223 DC Master Server und bin mit docker-compose über das Problem gestolpert, dass iptables irgendwann kaputt sind. Wahrscheinlich betrifft das auch die Guacamole App (siehe Guacamole Network Bridge Problem - Bypass Solution).

Ich habe folgendes docker-compose.yml:

version: '2'
services:
  acmedns:
    build:
      context: .
      dockerfile: Dockerfile
    image: joohoi/acme-dns:latest
    restart: always
    ports:
      - "1153:53"
      - "1153:53/udp"
      - "8053:80"
    volumes:
      - ./config:/etc/acme-dns:ro
      - ./data:/var/lib/acme-dns

Nach dem Befehl

docker-compose up -d

sehen die iptables noch OK aus:

iptables -t nat -L DOCKER -v
Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 RETURN     all  --  br-55b2b36a614b any     anywhere             anywhere            
   81  5095 RETURN     all  --  docker0 any     anywhere             anywhere            
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40004 to::8080
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40002 to:172.17.0.1:80
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40001 to:172.17.0.2:443
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40000 to:172.17.0.2:80
    0     0 DNAT       tcp  --  !br-55b2b36a614b any     anywhere             anywhere             tcp dpt:8053 to:172.19.0.2:80
    0     0 DNAT       tcp  --  !br-55b2b36a614b any     anywhere             anywhere             tcp dpt:1153 to:172.19.0.2:53
    0     0 DNAT       udp  --  !br-55b2b36a614b any     anywhere             anywhere             udp dpt:1153 to:172.19.0.2:53

Der Container acmedns_acmedns_1 läuft korrekt mit der IP-Adresse 172.19.0.2 und die Portforwardings stimmen.

Ab irgendeinem Zeitpunkt (ich konnte bisher noch keinen Trigger dafür bestimmen) sehen die iptables folgendermaßen aus:

iptables -t nat -L DOCKER -v
Chain DOCKER (2 references)
 pkts bytes target     prot opt in     out     source               destination         
   24  1495 RETURN     all  --  docker0 any     anywhere             anywhere            
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:1880 to::1880
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:1153 to::53
    0     0 DNAT       udp  --  !docker0 any     anywhere             anywhere             udp dpt:1153 to::53
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:8053 to::80
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40004 to::8080
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40002 to:172.17.0.1:80
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40001 to:172.17.0.2:443
    0     0 DNAT       tcp  --  !docker0 any     anywhere             anywhere             tcp dpt:40000 to:172.17.0.2:80

Der UDP-Port 1153 wird nicht mehr auf Port 53 des Docker-Containers umgebogen, sondern allgemein auf den Port 53 des Hostsystems. Das ist in diesem Fall natürlich fatal.

Die Guacamole-App habe ich auch installiert. Ich nutze sie nur derzeit nicht, weshalb mir auch eine eventuelle Fehlfunktion aktuell nicht auffällt. Aber der Port 40004 ist auch nicht mehr sauber in den Docker-Container weitergeleitet.

Noch eine Ausgabe von “docker ps -a”:

CONTAINER ID        IMAGE                                                                   COMMAND                  CREATED             STATUS                       PORTS                                                                       NAMES
9c3eecae92ba        palstek/node-red                                                        "node-red --userDi..."   8 days ago          Up 29 seconds                0.0.0.0:1880->1880/tcp                                                      nodered_node-red_1
5998c8aca09f        joohoi/acme-dns:latest                                                  "./acme-dns"             10 days ago         Up 28 seconds                443/tcp, 0.0.0.0:1153->53/tcp, 0.0.0.0:1153->53/udp, 0.0.0.0:8053->80/tcp   acmedns_acmedns_1
2807dbb019f0        docker.software-univention.de/nextcloud:15.0.8-0                        "/bin/sh -c /usr/s..."   2 months ago        Up 21 seconds                0.0.0.0:40002->80/tcp                                                       gifted_fermi
950505f0cc9a        docker.software-univention.de/guacamole-guacamole:0.9.13-univention13   "/opt/guacamole/bi..."   5 months ago        Up 29 seconds                0.0.0.0:40004->8080/tcp                                                     guacamole_guacamole_1
fc21fef849d2        docker.software-univention.de/guacamole-guacd:0.9.13-univention13       "/usr/local/sbin/g..."   5 months ago        Up 29 seconds                4822/tcp                                                                    guacamole_guacd_1
688d267f9c99        docker.software-univention.de/ucs-appbox-amd64:4.3-0                    "/sbin/init"             13 months ago       Up 20 seconds                0.0.0.0:40000->80/tcp, 0.0.0.0:40001->443/tcp                               friendly_dijkstra

Reboots helfen nicht. Danach sehen die iptables genauso kaputt aus. Wenn ich den betreffenden Docker-Container mit “docker-compose down” lösche, muss ich die betreffenden iptables-Rules händisch löschen. Im Netz habe ich leider keine weiterhelfenden Hinweise finden können.

Wann plant Univention docker/docker-compose auf aktuellere Versionsstände zu aktualisieren? Diese sind mittlerweile doch schon etwas in die Jahre gekommen.

Viele Grüße,
Daniel