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.

  • Pycharm - Umzug auf neuen Rechner

    Linux
    1
    0 Stimmen
    1 Beiträge
    53 Aufrufe
    Niemand hat geantwortet
  • Python & Redis-Datenbank

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    97 Aufrufe
    FrankMF

    Heute dann die nächste Herausforderung. Mein JSON soll so aussehen, damit ich das entsprechend erweitern kann.

    Stocks {0: {'stockname': 'Deutsche Telekom Aktie', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 100}, 1: {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}}

    Die Daten sollen wie oben schon ausprobiert, in einer Redis Datenbank liegen. So weit auch kein großes Problem. ABER, der Zugriff auf diese Daten war dann meine nächste Hürde 🙂

    Ok, ich habe also mehrere Einträge im JSON File bzw. in der Datenbank. Wie komme ich da nun wieder dran. Ein paar ☕ später dann die Lösung.

    Wie komme ich an den einzelnen Eintrag, also über den Index??

    r1.json().get('stocks', 1)

    Gibt als Ergebnis

    {'stockname': 'Henkel', 'wkn1': '4534543534', 'wkn2': 'sfsdfsdfsfdfd', 'quantity': 50}

    Ok, das passt schon mal. Somit kann man dann gewohnt auf die einzelnen Elemente zugreifen.

    print("TESTING", testing['stockname'])

    Ausgabe

    TESTING Henkel

    Ok, Teil 1 erledigt. Jetzt habe ich ja irgendwann mehrere Elemente in der Liste und brauch dann den letzten Index , um damit was machen zu können. Also, z.B. durch die Daten zu loopen.

    objkeys = r1.json().objkeys('stocks') print("Objkeys", objkeys)

    Ausgabe

    Objkeys ['0', '1']

    Ok, kommt eine Liste des Index zurück. Damit kann man arbeiten 😉

    Ich hatte dann zum Testen mittels einer while Schleife die Daten geladen, aber jetzt beim Tippen klingelt es und wir machen das schön mit enumerate 😉

    @staticmethod def load(): data = {} for count, value in enumerate(objkeys): testing = r1.json().get('stocks', count) data[count] = { "stockname": testing['stockname'], "wkn1": testing['wkn1'], "wkn2": testing['wkn2'], "quantity": testing['quantity']} return data

    Somit habe ich die Daten aus der Redis Datenbank in einem Objekt und kann damit arbeiten.

  • NanoPi5 - eMMC

    Verschoben NanoPi R5S
    1
    0 Stimmen
    1 Beiträge
    154 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    3 Beiträge
    1k Aufrufe
    M

    @frankm

    Habe neulich auch einen meiner rockpro64 neu mit Debian 11 installiert, und dabei auch die festplatte (NVMe eigentlich) verschlüsselt.

    War mir erst unsicher das ich dann immer eine serielle Console brauch bei reboot. Man kann aber auch dropbear (SSH server) in die initram integrieren und dann während das booten den Server erreichen und die Passphrase für das Laufwerk eingeben.

    Diese 2 links waren hilfreich.

    https://salsa.debian.org/debian/dropbear/blob/debian/2018.76-5/debian/README.initramfs
    https://unix.stackexchange.com/questions/411945/luks-ssh-unlock-strange-behaviour-invalid-authorized-keys-file

    M

  • Docker - Portainer

    Linux
    3
    0 Stimmen
    3 Beiträge
    607 Aufrufe
    FrankMF

    Dann grabe ich das mal wieder aus 😉

    Bedingt durch den Wegfall meines Proxmox, musste ich mir Gedanken darüber machen, wie ein paar Dienste auch weiterhin laufen sollen. Um mal die zwei wichtigsten zu nennen.

    checkmk DokuWiki

    Diese sollen später, wenn der zweite NanoPi R5S aus China da ist, dort laufen. Da der aber mit der Schneckenpost kommt, kann man ja in der Zwischenzeit mal wieder mit Docker spielen.

    Ich erinnerte mich daran, das checkmk eine sehr gute Anleitung hat, so das ich das mal wieder ausprobierte. Klappte einwandfrei. Dann erinnerte mich an Portainer und dachte mir, das probiere ich mal wieder aus 🙂

    1d2dc9b3-ad71-45c5-b552-72c88a1bf773-grafik.png

    Ich hatte übrigens die Endpoints gesucht und nicht gefunden, die heißen jetzt Environments. Auf dem Bild ist noch keiner eingerichtet.

    4bdbf196-1b36-4e65-94d0-0e56daa473bf-grafik.png

    Irgendwie ist das wirklich richtig gute Software. Ich mag den Portainer und auch als selbst ausgebildeter ITler 😉 kommt man damit sehr schnell ganz gut zurecht.

    Ja, man kann die ganzen Docker Befehle auch über die Konsole eingeben, was ich normalerweise auch mit ganz vielen Dingen mache, aber das macht hier einfach Spaß. Man hat auch schnell einen guten Überblick was wo läuft usw.

    Wer so was sucht, einfach mal ausprobieren. Klare Empfehlung von mir.

  • 0 Stimmen
    1 Beiträge
    222 Aufrufe
    Niemand hat geantwortet
  • DNS-Schlüsselwechsel

    Linux
    2
    0 Stimmen
    2 Beiträge
    567 Aufrufe
    FrankMF

    Hoppla. ich musste gerade den DNS wechseln, weil ich Probleme hatte. Zufall??

  • Installation von Grav & NGinx & PHP7.2

    Angeheftet Verschoben Grav
    2
    0 Stimmen
    2 Beiträge
    1k Aufrufe
    FrankMF

    Nachdem ich den ROCKPro64 jetzt auf den Mainline umgestellt habe, lief meine Testinstallation von Grav nicht mehr.

    Hilfreiche Sache um das Problem zu lösen -> https://gist.github.com/GhazanfarMir/03bd1f1f770a3834d47274586d46ea62

    Ich bekam immer 502 Bad Gateway, Grund war ein nicht korrekt gestarteter php-pfm Service.

    rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm start rock64@rockpro64v2_0:/usr/local/bin$ sudo service php7.2-fpm status ● php7.2-fpm.service - The PHP 7.2 FastCGI Process Manager Loaded: loaded (/lib/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-08-16 20:15:20 CEST; 21s ago Docs: man:php-fpm7.2(8) Main PID: 3206 (php-fpm7.2) Status: "Processes active: 0, idle: 2, Requests: 3, slow: 0, Traffic: 0.2req/sec" Tasks: 3 (limit: 4622) CGroup: /system.slice/php7.2-fpm.service ├─3206 php-fpm: master process (/etc/php/7.2/fpm/php-fpm.conf) ├─3207 php-fpm: pool www └─3208 php-fpm: pool www Aug 16 20:15:19 rockpro64v2_0 systemd[1]: Starting The PHP 7.2 FastCGI Process Manager... Aug 16 20:15:20 rockpro64v2_0 systemd[1]: Started The PHP 7.2 FastCGI Process Manager.