Linux-Befehle auf einem Docker-Container auf dem NAS

Begonnen von MarkoP, 18 August 2020, 15:11:50

Vorheriges Thema - Nächstes Thema

MarkoP

Hallo,

ich habe den Fhem-Server in einem Docker-Container auf einem QNAP-NAS laufen.
Dabei stoße ich immer wieder auf das gleiche Problem.

In vielen Anleitungen und Tips wird z.B. der Linux-Befehl sudo verwendet, wo genau muss dieser wie eingegeben werden.
Beim Raspi wählt man sich ja per Telnet ein, aber das funktioniert bei dem Docker-Container nicht, da er die gleiche IP-Adresse wie das NAS selbst hat und nur durch einen anderen Port angesprochen wird.
Ich kann im Container ein Terminal öffnet, doch da führt der Befehl immer zu einem Fehler.

Kann mir jemand der eine gleiche Konfiguration hat wie ich vielleicht helfen?
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

MarkoP

Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

yersinia

Zitat von: MarkoP am 18 August 2020, 15:11:50In vielen Anleitungen und Tips wird z.B. der Linux-Befehl sudo verwendet, wo genau muss dieser wie eingegeben werden.
Beim Raspi wählt man sich ja per Telnet ein, aber das funktioniert bei dem Docker-Container nicht, da er die gleiche IP-Adresse wie das NAS selbst hat und nur durch einen anderen Port angesprochen wird.
Ich kann im Container ein Terminal öffnet, doch da führt der Befehl immer zu einem Fehler.
1. ssh ist besser als telnet
2. beschäftige dich mal mit port forwarding: du musst den ssh-port des containers nach 'Außen' auf eine andere portnummer führen; dann solltest du per ssh über den anderen port auf das Terminal des containers zugreifen können.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

MarkoP

Theoretisch ja, praktisch besteht aber das Problem, dass der ssh-Port des NAS und des Fhem-Servers identisch sind.
Und wenn ich einen Port nach Außen öffne, geht er immer auf das NAS.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

yersinia

#4
Zitat von: MarkoP am 25 August 2020, 14:32:35
Theoretisch ja, praktisch besteht aber das Problem, dass der ssh-Port des NAS und des Fhem-Servers identisch sind.
Und wenn ich einen Port nach Außen öffne, geht er immer auf das NAS.
Zitat von: yersinia am 25 August 2020, 14:28:49
2. beschäftige dich mal mit port forwarding: du musst den ssh-port des containers nach 'Außen' auf eine andere portnummer führen; dann solltest du per ssh über den anderen port auf das Terminal des containers zugreifen können.
Alternativ den ssh port des Containers ändern, aber das wirst du ohne Terminal im container wohl kaum schaffen.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

MarkoP

Hey, kurze Begriffsklärung.
Außen bedeutet für mich extern hinter der Fritzbox.

Das ist dann nicht das Problem, das Problem ist, dass der fhem-Server keine eigene IP hat, sondern mit der IP des NAS und einer zusätzlichen Portnummer aufgerufen wird.
Dadurch hat der Fhem-server und das NAS die gleiche interne Portnummer für ssh-Zugriffe und somit landet ein ssh-Zugriff beispielsweise über Putty immer auf dem NAS.

Falls Außen für dich was anderes bedeutet:
Ein Terminnal wird über die Container-Oberfläche als einfache Befehlszeileneingabe zur Verfügung gestellt, doch macht es Sinn den internen Port für ssh-Zugriffe zu verändern?
Ich habe so schon genug Probleme die ganzen Ports zuzuordnen und auseinander zu halten.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

yersinia

Ja, das war unglücklich gewählt. Mit Außen meine ich den Netzwerk-Port der QNAP. Nicht den WAN-Port der Fritte.

Wahrscheinlich ist der ssh port 22 für die QNAP belegt. Demnach müsste NAT/Port forwarding durch die QNAP geschehen.
Der fhem-ssh-standard-port 22 muss auf den QNAP Port auf einen anderen wie zB 22022 gelegt werden und dann kannst du darauf via ssh oder putty zugreifen.
Oder du änderst den Standard ssh port entweder beim FHEM-Container oder der QNAP auf was anderes als 22.

Zitat von: MarkoP am 25 August 2020, 15:29:46Ein Terminnal wird über die Container-Oberfläche als einfache Befehlszeileneingabe zur Verfügung gestellt, doch macht es Sinn den internen Port für ssh-Zugriffe zu verändern?
Ich habe so schon genug Probleme die ganzen Ports zuzuordnen und auseinander zu halten.
Wahrscheinlich ist das kein richtiges Terminal, was dir QNAP da zur Verfügung stellt.
Möglicherweise ist das Gesamtsetup für dich erstmal zu komplex? Warum nicht mit einem RasPi3 oder 4 (sprich: dediziertes System) probieren?
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

MarkoP

ZitatWarum nicht mit einem RasPi3 oder 4 (sprich: dediziertes System) probieren?
Naja, extra Kosten, extra Gerät. Habe das NAS ja bewusst unter der Annahme angeschafft, dass dort auch Server für entsprechende Dienste laufen können.
Als reines Speichermedium gäbe es deutlich billigere Lösungen.

Ärgere mich ja schon genug, dass ich mich fälschlicherweise für ein armh-System entschieden habe statt für ein x86-System.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

t1me2die

Genau, was yersinia schrieb bzgl. Portforwarding hättest du glaub ich bei der Erstellung des Containers eingeben müssen.
Unter Advanced Settings -> Network -> Portforwarding kann / muss man sowas angeben.
Wie du sonst schon richtig beschrieben hast, wären die SSH Ports von deinem QNAP und deinem Container ja identisch, da der Container + QNAP dieselbe IP haben.

Gruß
Mathze

MarkoP

Ich weiß was du meinst, da habe ich lediglich den 8083 (als fürs Frontend) umgeleitet.
Müsste sich aber auch nachträglich noch eintragen lassen.

Wollte aber eh von NAT auf Bridge umstellen, dann hätte der Server ja eine eigene IP.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

yersinia

dann löst sich ggf auch dein httpmod/Netzwerkproblem, weil der angefragte Server dann auch richtig antworten kann...
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

MarkoP

#11
Mag sein, aber die Frage ist ja welche Ports dann freigegeben werden müssen.
Kann ja nicht pauschal alle freigeben.

Ergänzung:
Muss mich korrigieren. Bei der Einstellung Bridge mit eigener IP kann man keine Ports einstellen, das geht nur bei der Einstellung NAT, dann ist aber die IP die gleiche wie die des NAS.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

yersinia

Zitat von: MarkoP am 25 August 2020, 21:31:43
Mag sein, aber die Frage ist ja welche Ports dann freigegeben werden müssen.
Kann ja nicht pauschal alle freigeben.
Warum nicht? Die Ports gibst du doch nur an der QNAP frei und nicht ins Internet (jenseits der Fritte).

Zitat von: MarkoP am 25 August 2020, 21:31:43Ergänzung:
Muss mich korrigieren. Bei der Einstellung Bridge mit eigener IP kann man keine Ports einstellen, das geht nur bei der Einstellung NAT, dann ist aber die IP die gleiche wie die des NAS.
Ja, klar, bei Bridge bekommt der Container eine eigene IP und damit müsstest du den Container direkt ansprechen können. Die IP sollte dann eine andere als des Hosts (QNAP) sein.

Mit NAT tritt der Container immer mit der QNAP IP auf, natürlich.
Da musst du den Port 22 des Containers auf einen andere, freien Port der QNAP mappen. Ich würde auch einen Port >65535 nehmen.
Aber anscheinend schreib ich mir die Finger wund:
Zitat von: yersinia am 25 August 2020, 15:44:18
Wahrscheinlich ist der ssh port 22 für die QNAP belegt. Demnach müsste NAT/Port forwarding durch die QNAP geschehen.
Der fhem-ssh-standard-port 22 muss auf den QNAP Port auf einen anderen wie zB 22022 gelegt werden und dann kannst du darauf via ssh oder putty zugreifen.
Oder du änderst den Standard ssh port entweder beim FHEM-Container oder der QNAP auf was anderes als 22.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

t1me2die

Kannst du im Nachhinein von NAT auf Bridge umstellen oder musst du dazu den Container neu aufsetzen?
Früher musste man dazu immer einen neuen Container aufsetzen.
Stelle um auf Bridge, entweder managt deine Fritte die DHCP Vergabe oder du vergibst direkt eine Wunsch-IP.
Um die Ports brauchst du Dir keine Gedanken zu machen, du befindest Dich in deinem Netzwerk, eine Freigabe von Ports ist nur nach Außen relevant.
Ansonsten kannst du problemlos danach per 192.168.178.xxx:8083 dein FHEM erreichen.
Ich vermute auch, dass dies Probleme mit HTTPMOD beheben könnte!

Aber ich muss noch einmal nachfragen, wie groß ist dein FHEM?
Beginnst du gerade neu?
Ich bezweifel weiterhin, dass du mit dieser Lösung glücklich wirst!
Wenn du später ioDevices wie z.B. nanoCUL, Jeelink, SignalDuino o.ä. per USB an den Container weitergeben willst, könnte das zu Problemen führen!
Ich meine gesehen zu haben, dass du einen HMUART als WLAN Variante betreibst oder? Dieser sollte nach der Umstellung auf Bridge hoffentlich auch korrekt funktionieren.

Gruß
Mathze

MarkoP

Zitat von: yersiniaWarum nicht? Die Ports gibst du doch nur an der QNAP frei und nicht ins Internet (jenseits der Fritte).
Ich kann im QNAP keine Ports freigeben, zumindest ist mir keine Möglichkeit dafür bekannt. Einzig im Container bei einer NAT-Einstellung ließen sich Ports freigaben, aber immer nur einer pro Eingabezeile, es müsste also eine unendliche Zahl von Zeilen eingetragen werden.

Zitat von: yersiniaJa, klar, bei Bridge bekommt der Container eine eigene IP und damit müsstest du den Container direkt ansprechen können. Die IP sollte dann eine andere als des Hosts (QNAP) sein.
Deshalb hatte ich das ja von NAT aus umgestellt. Leider bringt es mich nicht weiter, da bei einem ssh-Zugriff per Putty auf 192.168.178.155:22 (IP des Fhem-Servers) keine Eingabeaufforderung im cmd-Fenster kommt. Ich kann also nichts machen.

Zitat von: yersiniaMit NAT tritt der Container immer mit der QNAP IP auf, natürlich.
Da musst du den Port 22 des Containers auf einen andere, freien Port der QNAP mappen. Ich würde auch einen Port >65535 nehmen.
Als du das geschrieben hast, hatte ich bereits auf Bridge umgestellt, also war es hinfällig, da ich bei Bridge keine Ports mappen kann. Leider funktioniert wie oben geschrieben der Zugriff über die separate IP per ssh dennoch nicht.

@t1me2die
Ja kann ich hin und her Wechseln - in beide Richtungen. Derzeitige Einstellung ist auf Bridge mit fester IP 192.168.178.155.
Die Fhem-Oberfläche kann ich über den Port 8083 erreichen. Leider funktioniert dies aber offenbar nicht mit ssh auf Port 22 - siehe oben.
Auch sind die HTTPMOD-Probleme bei Einstellung auf Bridge genauso vorhanden.

Mein Fhem ist noch sehr klein, beginne gerade erst. 2 Hue Lampen, 1 von 4 Shelly2.5 aktiv im Betrieb, 1 Rolladenaktor, und ein Türkontakt von Homematic, dazu noch einen Saugroboter, der aber auch noch nicht eingebunden ist. ich habe derzeit nicht vor irgendwelche Geräte per USB anzuschließen, da ich schon beim CUL gesehen habe, dass dies nicht einfach ist.
Ich nutze für die Homematic-Devices ein Lan-Gateway, dass per Netzwerkkabel angeschlossen ist und per Funk mit den Devices kommuniziert. Ob man bei der Frequenz von WLan reden kann, weiß ich nicht. Das ist ja norm. entweder 2,4 GHz oder 5GHz.

Ganz dumm gefragt, macht es Sinn in der Fritzbox den Port 8083 für die Fhem-IP nach Außen freizugeben? Kann es sein, dass die Befehle zwar rausgehen, aber die Rückmeldung von der Fritzbox abgefangen werden?
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

t1me2die

Stop, ich dachte dein QNAP ist unter 192.168.178.155 erreichbar?
Warum ist der Container dann, wenn er unter dem Bridge Modus läuft unter derselben IP erreichbar?
-
Nein, der Port 8083 muss nicht nach draußen geöffnet werden!
Lokal muss dieser Port in deinem Netzwerk erst einmal funktionieren!

MarkoP

Nein, das NAS läuft auf den IP's 192.168.178.200 und .201 (zwei Netzwerkanschlüsse).
Der Container ist per Bridge auf 192.168.178.155 eingestellt.

Der Port 8083 funktioniert intern schon immer, habe ich mehrfach drauf hingewiesen.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

t1me2die

Alles klar, dass muss an mir vorbeigegangen sein!
SSH ist aber auf dem Container installiert ja?

MarkoP

Das ssh-Protokoll/Zugriff ist im NAS aktiviert.
Im Container kann ich da nichts installieren. Das ist doch nur ein fertiges Image.
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8

t1me2die

Wenn du da in der Konsole folgendes eingibst, kommt was?


service ssh status

MarkoP

Kann ich aktuell leider nicht prüfen.
Die laufende Syncronisierung auf dem NAS hat alle Dienste und Server deaktiviert.
Nach Angaben des NAS dauert das auch noch rund 6 Stunden.

Sch**ß Absturz gestern!
Fhem-Server läuft per Bridge mit eigener IP auf einem Docker-Container auf meinem NAS. Alle Geräte haben eine statische IP im Netzwerk und laufen im gleichen Subnetzwerk. DHCP ist deaktiviert. DNS läuft über den Router (Fritzbox Cable), alternative über Googles 8.8.8.8