@Dude Danke für die Tipps. Die Tools waren mir bekannt, auch wenn ich sie noch nicht selber getestet habe. Man kann ja nicht alles ausprobieren 🙂
Unbound bot sich hier einfach als Test für die LXC Container an.
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.
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.
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.