Skip to content

OpenWrt - Docker & DNS & Zugriff auf WAN

Linux
  • Ich wollte heute mal auf meinem NanoPi R5S schnell einen Debian Container aufsetzen um was zu testen. Ok, kein Ding, lief nach ein paar Sekunden 😉

    Nur ich hatte nicht so wirklich Internetzugriff. Lange im OpenWrt gesucht und nix gefunden, müsste eigentlich funktionieren.....

    Dann über das Thema auf DNS Einstellungen gestolpert und mal nachgesehen, ob man das im Container vernünftig einstellen kann.

    Nachdenken......

    Mit

    cat /etc/resolv.conf
    

    im gestarteten Container nachgeschaut.

    root@b9ffae24913a:/# cat /etc/resolv.conf
    search lan
    
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    Ok, sieht nicht wirklich funktional aus.

    Dann habe ich mir das Setup des Containers via Portainer nochmal angeschaut.

    973708e0-604b-47ff-97f6-fd6bcc8c70cf-grafik.png

    Da war unter Primary DNS Server erst nichts eingetragen, nachdem ich da 192.168.3.1 eingetragen hatte, kam das.

    root@b9ffae24913a:/# cat /etc/resolv.conf
    search lan
    nameserver 192.168.3.1
    

    Jetzt ging schon mal

    apt update
    

    und man konnte auch mal ein Tool installieren, z.B.

    apt install iperf3
    

    Test

     root@b9ffae24913a:/# iperf3 -c 192.168.3.213
     ^C- - - - - - - - - - - - - - - - - - - - - - - - -
     [ ID] Interval           Transfer     Bitrate         Retr
     iperf3: interrupt - the client has terminated
     root@b9ffae24913a:/# iperf3 -c 192.168.3.213
     Connecting to host 192.168.3.213, port 5201
     [  5] local 172.17.0.4 port 58906 connected to 192.168.3.213 port 5201
     [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
     [  5]   0.00-1.00   sec   148 MBytes  1.24 Gbits/sec    0    202 KBytes       
     [  5]   1.00-2.01   sec   169 MBytes  1.41 Gbits/sec    0    202 KBytes       
     [  5]   2.01-3.01   sec   169 MBytes  1.42 Gbits/sec    0    202 KBytes       
     [  5]   3.01-4.00   sec   168 MBytes  1.41 Gbits/sec    0    202 KBytes       
     [  5]   4.00-5.00   sec   169 MBytes  1.42 Gbits/sec    0    202 KBytes       
     [  5]   5.00-6.00   sec   166 MBytes  1.40 Gbits/sec    0    202 KBytes       
     [  5]   6.00-7.00   sec   169 MBytes  1.41 Gbits/sec    0    212 KBytes       
     [  5]   7.00-8.00   sec   166 MBytes  1.40 Gbits/sec    0    212 KBytes       
     [  5]   8.00-9.01   sec   169 MBytes  1.41 Gbits/sec    0    212 KBytes       
     [  5]   9.01-10.00  sec   166 MBytes  1.40 Gbits/sec   20    510 KBytes       
     - - - - - - - - - - - - - - - - - - - - - - - - -
     [ ID] Interval           Transfer     Bitrate         Retr
     [  5]   0.00-10.00  sec  1.62 GBytes  1.39 Gbits/sec   20             sender
     [  5]   0.00-10.01  sec  1.62 GBytes  1.39 Gbits/sec                  receiver
     
     iperf Done.
    
    root@b9ffae24913a:/# iperf3 -R -c 192.168.3.213
    Connecting to host 192.168.3.213, port 5201
    Reverse mode, remote host 192.168.3.213 is sending
    [  5] local 172.17.0.4 port 58910 connected to 192.168.3.213 port 5201
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec   247 MBytes  2.07 Gbits/sec                  
    [  5]   1.00-2.00   sec   259 MBytes  2.17 Gbits/sec                  
    [  5]   2.00-3.00   sec   257 MBytes  2.16 Gbits/sec                  
    [  5]   3.00-4.00   sec   259 MBytes  2.17 Gbits/sec                  
    [  5]   4.00-5.00   sec   257 MBytes  2.15 Gbits/sec                  
    [  5]   5.00-6.00   sec   260 MBytes  2.18 Gbits/sec                  
    [  5]   6.00-7.00   sec   258 MBytes  2.16 Gbits/sec                  
    [  5]   7.00-8.00   sec   271 MBytes  2.27 Gbits/sec                  
    [  5]   8.00-9.00   sec   262 MBytes  2.20 Gbits/sec                  
    [  5]   9.00-10.00  sec   259 MBytes  2.17 Gbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.01  sec  2.54 GBytes  2.18 Gbits/sec    0             sender
    [  5]   0.00-10.00  sec  2.53 GBytes  2.17 Gbits/sec                  receiver
    
    iperf Done.
    

    Aber, irgendwie war der Internetzugang immer noch nicht komplett.

    Der Ping z.B nach

    root@b9ffae24913a:/# ping 192.168.3.213
    PING 192.168.3.213 (192.168.3.213): 56 data bytes
    64 bytes from 192.168.3.213: icmp_seq=0 ttl=63 time=1.368 ms
    64 bytes from 192.168.3.213: icmp_seq=1 ttl=63 time=1.105 ms
    64 bytes from 192.168.3.213: icmp_seq=2 ttl=63 time=1.126 ms
    

    ging. Der Ping nach

    ping 8.8.8.8
    

    ging nicht. Also konnte ich immer noch nicht das Internet komplett erreichen. Hmm ?

    root@b9ffae24913a:/# ip route
    default via 172.17.0.1 dev eth0 
    172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.4 
    

    Ich habe hier in meinem OpenWrt-Setup leider nichts gefunden, was den Zugriff auf das Internet unterbindet. DNS geht, weil das über 192.168.3.1 aufgelöst wird. Die Brücke vom Docker geht dort hin, das ist dann so weit in Ordnung.

    Ich habe da aktuell keine Idee mehr dazu 😞

    Aber, beim Testen habe ich gefunden, wie ich mir etwas helfen kann.

    1b779e10-696e-4828-8cc0-605168fab2a1-grafik.png

    Wenn ich den Container auf Host stelle, benutzt er die Einstellungen des Host. Er bekommt keine eigene IP Adresse und ich kann pingen usw. Aber da tauchen dann andere Probleme auf.....

    Das Hauptproblem was ich aktuell hier sehe ist, das die Docker Container aus irgendeinem Grund, keinen Zugriff aufs Internet haben. Irgendwas blockt den Forward oder was auch immer? Muss ich noch weiter suchen.

    Irgendjemand der hier mit liest, mit viel OpenWrt Erfahrung? 😊

  • Ich habe da etwas viele Denkblockaden heute, vermutlich zu warm 🙂

    Wenn ich irgendeinen Dienst im Internet erreichen möchte, klappt das einwandfrei. Hier ein Test mit iperf3 auf einem meiner Hetzner Server.

    root@b9ffae24913a:/# iperf3 -c <IP>
    Connecting to host <IP>, port 5201
    [  5] local 172.17.0.4 port 37226 connected to <IP> port 5201
    [ ID] Interval           Transfer     Bitrate         Retr  Cwnd
    [  5]   0.00-1.00   sec  6.24 MBytes  52.3 Mbits/sec    2    182 KBytes       
    [  5]   1.00-2.00   sec  6.05 MBytes  50.8 Mbits/sec    0    209 KBytes       
    [  5]   2.00-3.00   sec  5.50 MBytes  46.1 Mbits/sec    3    111 KBytes       
    [  5]   3.00-4.00   sec  5.56 MBytes  46.6 Mbits/sec    0    144 KBytes       
    [  5]   4.00-5.00   sec  5.93 MBytes  49.7 Mbits/sec    0    170 KBytes       
    [  5]   5.00-6.00   sec  5.93 MBytes  49.7 Mbits/sec    0    195 KBytes       
    [  5]   6.00-7.00   sec  5.99 MBytes  50.3 Mbits/sec    1    157 KBytes       
    [  5]   7.00-8.00   sec  5.44 MBytes  45.6 Mbits/sec    0    184 KBytes       
    [  5]   8.00-9.00   sec  5.93 MBytes  49.7 Mbits/sec    1    204 KBytes       
    [  5]   9.00-10.00  sec  5.93 MBytes  49.7 Mbits/sec    0    224 KBytes       
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.00  sec  58.5 MBytes  49.1 Mbits/sec    7             sender
    [  5]   0.00-10.01  sec  57.3 MBytes  48.0 Mbits/sec                  receiver
    
    iperf Done.
    
    root@b9ffae24913a:/# iperf3 -R -c <IP>
    Connecting to host <IP>, port 5201
    Reverse mode, remote host <IP> is sending
    [  5] local 172.17.0.4 port 37230 connected to <IP> port 5201
    [ ID] Interval           Transfer     Bitrate
    [  5]   0.00-1.00   sec  54.1 MBytes   454 Mbits/sec                  
    [  5]   1.00-2.00   sec  52.3 MBytes   439 Mbits/sec                  
    [  5]   2.00-3.00   sec  45.4 MBytes   381 Mbits/sec                  
    [  5]   3.00-4.00   sec  44.8 MBytes   376 Mbits/sec                  
    [  5]   4.00-5.00   sec  49.2 MBytes   413 Mbits/sec                  
    [  5]   5.00-6.00   sec  48.1 MBytes   403 Mbits/sec                  
    [  5]   6.00-7.00   sec  50.0 MBytes   420 Mbits/sec                  
    [  5]   7.00-8.00   sec  52.0 MBytes   436 Mbits/sec                  
    [  5]   8.00-9.00   sec  48.6 MBytes   408 Mbits/sec                  
    [  5]   9.00-10.00  sec  51.9 MBytes   436 Mbits/sec                  
    - - - - - - - - - - - - - - - - - - - - - - - - -
    [ ID] Interval           Transfer     Bitrate         Retr
    [  5]   0.00-10.02  sec   500 MBytes   418 Mbits/sec   43             sender
    [  5]   0.00-10.00  sec   496 MBytes   416 Mbits/sec                  receiver
    
    iperf Done.
    

    Wichtig war also erstmal, den korrekten DNS-Server einzutragen. Das was nicht geht ist

    ping
    

    🤔 Und das verstehe ich aktuell immer noch nicht.

  • Das Problem ist gelöst und es hat nichts mit Portainer zu schaffen, ich werde den Titel anpassen 🤗

    So einfach aufgeben, das mache ich erst wenn ich merke, das meine Fähigkeiten überhaupt nicht ausreichen um ein Problem zu lösen. Hier war mir aber schnell klar, das es eine Einstellung geben musste, ich habe sie nur nicht gefunden.

    Beim stöbern im OpenWrt-Forum bin ich doch tatsächlich über ein ähnliches Problem gestolpert. Dort hatte man auch kein Lösung gefunden, aber ich habe einen entscheidenden Hinweis gefunden, der mich weiter brachte.

    /etc/config/dockerd

    config globals 'globals'
            option log_level 'warn'
            option iptables '1'
            option remote_endpoint '0'
            option data_root '/mnt/nvme_part2/docker'
    
    config firewall 'firewall'
            option device 'docker0'
            #list blocked_interfaces 'wan'
    

    Die auskommentierte Zeile war das Problem, einmal neustarten danach lief alles einwandfrei.

    Ich werde mal morgen ein neues OpenWrt aufsetzen und nachschauen, ob dieser Eintrag von Anfang an da steht oder ob ich den irgendwie da reingefummelt habe. Ich kann mich zwar nicht erinnern, aber wer weiß schon, ich bin da jetzt schon fast einen Tag dran 😉

  • Es geht weiter, der erste ☕ und ich bin mit der Lösung nicht so richtig zufrieden, also suchen.

    Als erstes habe ich heute Morgen ein frisches SD-Karten Image mit Docker von FreindlyWrt genommen und auf meinem Test NanoPi R5S installiert. Dort mal die Config angeschaut um zu sehen, ob der Eintrag standardmäßig gesetzt ist. Doch dort taucht dann einmal eine ganz ander Config auf 🙄

    # The following settings require a restart of docker to take full effect, A reload will only have partial or no effect:
    # bip
    # blocked_interfaces
    # extra_iptables_args
    # device
    
    config globals 'globals'
    #       option alt_config_file '/etc/docker/daemon.json'
            option enable '1'
            option data_root '/mnt/nvme_part2/docker'
            option log_level 'warn'
            option iptables '1'
            #list hosts 'unix:///var/run/docker.sock'
    #       option bip '172.18.0.1/24'
    #       option fixed_cidr '172.17.0.0/16'
    #       option fixed_cidr_v6 'fc00:1::/80'
    #       option ipv6 '1'
    #       option ip '::ffff:0.0.0.0'
    #       list dns '172.17.0.1'
    #       list registry_mirrors 'https://<my-docker-mirror-host>'
            list registry_mirrors 'https://hub.docker.com'
            option remote_endpoint '0'
    #       option bridge 'br-container'
    
    
    
    # Docker ignores fw3 rules and by default all external source IPs are allowed to connect to the Docker host.
    # See https://docs.docker.com/network/iptables/ for more details.
    # firewall config changes are only additive i.e firewall will need to be restarted first to clear old changes,
    # then docker restarted to load in new changes.
    config firewall 'firewall'
            option device 'docker0'
            list blocked_interfaces 'wan'
            option extra_iptables_args '--match conntrack ! --ctstate RELATED,ESTABLISHED' # allow outbound connections
    

    Das interessiert uns jetzt

            list blocked_interfaces 'wan'
            option extra_iptables_args '--match conntrack ! --ctstate RELATED,ESTABLISHED' # allow outbound connections
    

    Wenn ich das jetzt alles richtig verstehe, muss WAN geblockt sein, weil sonst der Docker Host offen im Netz steht (Hierbei bin ich mir nicht 100% sicher)
    Die zweite Zeile ist eine iptables Regel, die es den Containern dann ermöglicht das Internet zu erreichen.

    Das habe ich jetzt so eingestellt und getestet.

    root@b9ffae24913a:/# ping 1.1.1.1
    PING 1.1.1.1 (1.1.1.1): 56 data bytes
    64 bytes from 1.1.1.1: icmp_seq=0 ttl=57 time=17.151 ms
    64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=16.553 ms
    64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=20.630 ms
    64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=13.948 ms
    ^C--- 1.1.1.1 ping statistics ---
    4 packets transmitted, 4 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 13.948/17.071/20.630/2.382 ms
    
    root@b9ffae24913a:/# ping google.de
    PING google.de (142.250.185.195): 56 data bytes
    64 bytes from 142.250.185.195: icmp_seq=0 ttl=58 time=23.797 ms
    64 bytes from 142.250.185.195: icmp_seq=1 ttl=58 time=16.953 ms
    64 bytes from 142.250.185.195: icmp_seq=2 ttl=58 time=19.441 ms
    ^C--- google.de ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 16.953/20.064/23.797/2.829 ms
    

    Ich hoffe mal das ich diese Thema jetzt zu den Akten legen kann.

    Wenn was falsch ist, bitte hier kommentieren, damit ich das ändern kann.

  • NanoPi5 - eMMC

    Verschoben NanoPi R5S
    1
    0 Stimmen
    1 Beiträge
    189 Aufrufe
    Niemand hat geantwortet
  • Portainer - Entferntes System einbinden

    Linux
    1
    0 Stimmen
    1 Beiträge
    79 Aufrufe
    Niemand hat geantwortet
  • NanoPi R4S - OpenWrt upgraden !?

    NanoPi R4S
    4
    0 Stimmen
    4 Beiträge
    526 Aufrufe
    FrankMF

    Ich schrieb ja oben über Daten Sichern bevor man was macht......

    Ok, danach war die Installation lauffähig, aber das Webinterface kaputt. Kryptische Fehlermeldung, die ich auch mit Google nicht fixen konnte. Naja, es war nicht so schwer da ich ja noch einen R4S mit identischer Konfiguration hatte. SD_Karte getauscht und weiter geht's....

    Aber!! Warum? Ich musste ganz schön lange suchen, bis ich heraus fand das es mittlerweile eine neue Version als Release Candidate gibt.

    Link Preview Image [OpenWrt Wiki] OpenWrt 21.02.0-rc1 - First Release Candidate - 26 April 2021

    favicon

    (openwrt.org)

    Diese Version habe ich dann installiert und das Upgrade ist gescheitert. Da ich auf der alten Installation auch schon eine ganze Menge getestet hatte und es evt. auch vermurkst hatte, war es ja nicht so verkehrt mal was frisches aufzusetzen.

    Kurz meine Konfigurationsdateien kontrolliert und nach kleineren Korrekturen und Reboot lief alles wieder wie vorher.

    Diesmal habe ich mir die SD-Karte als Image gesichert. Nur für den Fall, das ich das mal dringend brauche.

    Es bleibt weiterhin nicht ganz einfach eine OpenWrt Installation aktuell zu halten. Aber so einmal im Jahr kann man sich ja die Arbeit machen.....

  • OpenWrt - Sysupgrade

    OpenWRT & Ubiquiti ER-X
    1
    0 Stimmen
    1 Beiträge
    237 Aufrufe
    Niemand hat geantwortet
  • Ubiquiti ER-X - Firewall

    Verschoben OpenWRT & Ubiquiti ER-X
    1
    0 Stimmen
    1 Beiträge
    258 Aufrufe
    Niemand hat geantwortet
  • Ubiquiti ER-X - Installation

    Verschoben OpenWRT & Ubiquiti ER-X
    1
    0 Stimmen
    1 Beiträge
    568 Aufrufe
    Niemand hat geantwortet
  • NanoPI R2S - Snapshot aktualisieren

    NanoPi R2S
    3
    0 Stimmen
    3 Beiträge
    348 Aufrufe
    FrankMF

    @thrakath1980 Das kann ich Dir leider nicht beantworten. Denke aber, das es sinnvoll ist neu anzufangen. Welche Settings meinst Du?

    Ich würde mal /etc/config sichern. Da sollte das Meiste ja drin sein.

    Notifications? Hmm, ich hoffe das das funktioniert. Ich schau zur Sicherheit mal nach.

  • NanoPi R2S - OpenWRT VLAN

    Verschoben NanoPi R2S
    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    FrankMF

    @thrakath1980 Ok, du meinst die FriendlyArm Variante von OpenWRT. Ich denke, da sollte man besser alles neu machen. Leider ist das bei OpenWRT nicht so einfach zu updaten/upgraden wie z.B. bei einem Linux Kernel. Ich habe es mal runtergeladen, wenn ich mal Zeit habe, schau ich mal rein.