Keine Verbindung vom Docker Container auf den Host

  • Hallo miteinander,


    ich habe hier eine QNAP TS-253A

    Code
    Servername	QNAPModellbezeichnung	TS-253ACPU	Intel(R) Celeron(R) CPU  N3160  @ 1.60GHzSeriennummer	Q164I11566Gesamtspeicher	16 GB (15933.6 MB nutzbar)Dualkanal unterstützt	NIC_VIEW_YESSpeichersteckplätze	2 (8 GB / 8 GB)Firmware-Version	4.2.1 Build 20160601Systembetriebszeit	0 Tag(e) 21 Stunde(n) 7 Minute(n)Zeitzone	(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, ViennaDateinamencodierung	Englisch

    Diese QNAP soll in erster Linie als Docker Host fungieren. Die Container Station ist in der Version 1.5.1343 installiert.
    Mein Problem ist folgendes:


    Jeglicher Docker-Container kann nicht mit der Host-IP kommunizieren. Das ist schlecht und macht für mich das System unbrauchbar.
    Ich vermute das dies mit iptables zu tun hat, weiß aber nicht wie ich diese konfigurieren muss.
    Anbei ein Paar Details zum Aufbau:



    Die route auf dem QNAP Host

    Code
    [~] # routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Ifacedefault         fritz.box       0.0.0.0         UG    0      0        0 eth010.0.3.0        *               255.255.255.0   U     0      0        0 lxcbr0127.0.0.0       *               255.0.0.0       U     0      0        0 lo192.168.188.0   *               255.255.255.0   U     0      0        0 eth0

    Die installierten Docker Container

    Code
    [~] # docker psCONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                                              NAMES16221b6dc9ae        rancher/agent:v1.0.2    "/run.sh http://192.1"   2 minutes ago       Up 2 minutes                                                           rancher-hostd952d64b270b        rancher/server:latest   "/usr/bin/s6-svscan /"   12 minutes ago      Up 12 minutes       0.0.0.0:32769->3306/tcp, 0.0.0.0:32768->8080/tcp   server-1


    Verbunden auf die Bash des Docker-Containers.
    Ausgeführte Befehle:

    • route
    • ping auf google.de - OK
    • nslookup auf google.de -OK
    • nslookup auf QNAP - OK
    • ping auf QNAP - FEHLER
    • traceroute auf QNAP - FEHLER
    • traceroute auf den Router - OK
    • ping auf alle anderen Clients im 192.168.188.0/24 Netzwerk - OK
    Code
    [~] # docker exec -it 162 bash                                                                                                                                                                           root@16221b6dc9ae:/# routeKernel IP routing tableDestination     Gateway         Genmask         Flags Metric Ref    Use Ifacedefault         10.0.3.1        0.0.0.0         UG    0      0        0 eth010.0.3.0        *               255.255.255.0   U     0      0        0 eth0root@16221b6dc9ae:/# ping www.google.dePING www.google.de (172.217.19.195) 56(84) bytes of data.64 bytes from fra02s21-in-f3.1e100.net (172.217.19.195): icmp_seq=1 ttl=54 time=34.8 ms64 bytes from fra02s21-in-f3.1e100.net (172.217.19.195): icmp_seq=2 ttl=54 time=34.3 ms64 bytes from fra02s21-in-f3.1e100.net (172.217.19.195): icmp_seq=3 ttl=54 time=33.1 ms64 bytes from fra02s21-in-f3.1e100.net (172.217.19.195): icmp_seq=4 ttl=54 time=44.9 ms^C--- www.google.de ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 3003msrtt min/avg/max/mdev = 33.168/36.821/44.909/4.712 msroot@16221b6dc9ae:/# nslookup www.google.deServer:		192.168.188.1Address:	192.168.188.1#53Non-authoritative answer:Name:	www.google.deAddress: 172.217.21.3root@16221b6dc9ae:/# nslookup QNAP        Server:		192.168.188.1Address:	192.168.188.1#53Name:	QNAPAddress: 192.168.188.2root@16221b6dc9ae:/# ping 192.168.188.2PING 192.168.188.2 (192.168.188.2) 56(84) bytes of data.^C--- 192.168.188.2 ping statistics ---12 packets transmitted, 0 received, 100% packet loss, time 11000msroot@16221b6dc9ae:/# traceroute 192.168.188.2traceroute to 192.168.188.2 (192.168.188.2), 30 hops max, 60 byte packets 1  * * * 2  * * *29  * * *30  * * *root@16221b6dc9ae:/# traceroute 192.168.188.1traceroute to 192.168.188.1 (192.168.188.1), 30 hops max, 60 byte packets 1  10.0.3.1 (10.0.3.1)  0.106 ms  0.036 ms  0.034 ms 2  fritz.box (192.168.188.1)  0.378 ms  0.457 ms  0.711 ms


    Wo liegt hier der Fehler? Ich kann aus dem Docker Container alles im Netzwerk erreichen nur den docker-host nicht.
    Aus der Ausgabe von iptables werde ich auch nicht schlau. Unter Systemsteuerung -> Sicherheit -> Sicherheitsstufe lasse ich alle Verbindungen zu



    Code
    [~] # iptables -L   Chain INPUT (policy ACCEPT)target     prot opt source               destination         Chain FORWARD (policy ACCEPT)target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)target     prot opt source               destination         Chain DOCKER (0 references)target     prot opt source               destination

    Vielen Dank für eure Hilfe!

    Einmal editiert, zuletzt von Ep-Naj ()

  • soweit ich das verstanden habe kannst du aus Docker nicht die IP des Hosts anpingen oder verwenden,aus dem Docker heraus ist der Host 10.0.3.1 darüber läuft alles.

  • Korrekt, anpingen möchte ich die Host Ip auf 192.168.188.2 bzw QNAP als DNS und nicht die 10.0.3.1.

  • Schaue dir mal den Netzwerk Modus im Docker Container an.
    Wenn der auf NAT läuft bleibt dir nur die 10.0.3.1.
    Soweit ich weiß kannst du auch Host verwenden dann müsste der Docker Container eine IP von deinem DHCP Server bekommen also eine 192.168.188.*.
    Ich arbeite mit einigen LXC Containern die nur im NAT Modus laufen und alles läuft ohne Probleme über die 10.0.3.* Adressen.
    Ich konnte noch keine Einschränkungen erkennen.

  • Naja, auf meinen anderen Docker Host Systemen funktioniert es genau so. Nur die QNAP verhält sich hier anders.
    Wenn ich ein Service im Docker auf Port 3307 nach außen laufen lasse, dann sollte ein weiterer Docker auf dem gleichen Host auch über die 192.168.188.2:3306 auf diesen Service zugreifen können und nicht auf dem Docker Netz 10.0.3.x. Das macht so ein Container ja Starr und ich kann ihn nicht ohne Anpassungen auf einem anderen Docker Host laufen lassen.

  • ja stimmt schon,warum QNAP diesen Weg geht ist mir nicht bekannt nur das es so ist.
    Probiere mal einen neuen Container im Host Modus das müsste eigentlich das sein was du willst,bei Docker geht das bei LXC leider nicht ohne massiven Eingriff in das System über eine zusätzliche Netzwerk Brige.