NEWS
Binding der IP Adresse des Admin Adapters
-
Hallo Zusammen,
ich bin ein Freund von Standartports und würde gerne die Adminoberfläche und VIS auf Standartports (also 80 bzw. 443) laufen lassen.
Dazu habe ich meinem (virtualisiertem) Server zwei Interface und zwei IP Adressen spendiert.
Wenn ich jetzt erstmal nur das Binding des Admins Adapters ändere (Port bleibt 8081) komme ich nicht mehr auf die Adminoberfläche:
iobroker01:/opt/iobroker # iobroker set admin.0 --bind 192.168.178.52 New bind for "admin.0" is: 192.168.178.52 Instance settings for "admin.0" are changed.
Der Admin Adapter scheint auch zu horchen:
iobroker01:/etc # lsof -i -n -P | grep 8081 io.admin. 3020 root 13u IPv6 30237 0t0 TCP *:8081 (LISTEN)
Allerdings hätte ich erwartet dass dort TCP 192.168.178.52:8081 (LISTEN) steht.
Der js-controller läuft:
iobroker01:/opt/iobroker # lsof -i -n -P | grep 9000 iobroker. 2892 root 12u IPv4 30988 0t0 TCP 127.0.0.1:9000 (LISTEN) iobroker01:/opt/iobroker # lsof -i -n -P | grep 9001 iobroker. 2892 root 12u IPv4 30988 0t0 TCP 127.0.0.1:9001 (LISTEN)
Über den Browser komme ich nicht auf die Oberfläche. Weder über IP noch DNS Name.
Wenn ich das Adapter Binding wieder auf 0.0.0.0 stelle klappt es wieder.
Kann mir hier jemand helfen?
Danke und Grüße,
Balu
-
[...]If IP address is not correct , then write: `iobroker set --bind 0.0.0.0` to allow it for all IP addresses. You can also change a port: `iobroker set --port 8081` [...]
.. sind beide Interfaces denn "im Betriebssystem angekommen" auf dem ioBroker läuft und korrekt konfiguriert?
ifconfig ````auf der Console.. Welche Ausgabe bekommst du? Gruß
-
Hallo BuZZy,
ja, es sind beide Interface angekommen:
iobroker01:~ # ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:6D:C:DD inet addr:192.168.178.52 Bcast:192.168.178.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:84249 errors:0 dropped:1700 overruns:0 frame:0 TX packets:71331 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:26837296 (25.5 Mb) TX bytes:35571050 (33.9 Mb) eth1 Link encap:Ethernet HWaddr 00:0C:29:6D:AA:BB inet addr:192.168.178.54 Bcast:192.168.178.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8558 errors:0 dropped:600 overruns:0 frame:0 TX packets:23 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:800504 (781.7 Kb) TX bytes:3579 (3.4 Kb) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:518403 errors:0 dropped:0 overruns:0 frame:0 TX packets:518403 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:144807655 (138.0 Mb) TX bytes:144807655 (138.0 Mb)
Grüße,
Balu
-
Mal versucht was passiert wenn du das über den Admin umstellst?
-
Da passiert genau das gleiche…
Neustart von iobroker und des Servers ändert am leider auch nichts..
-
Dann würde ich da mal einen Bug vermuten.
Am besten GitHub issue aufmachen!
-
OK… Werde ich machen.
Danke!
-
Ähm…
Bedeutet:
@Balu1973:iobroker01:/opt/iobroker # iobroker set admin.0 –bind 192.168.178.52 `
nicht, dass du nur noch von der IP 192.168.178.52 auf den admin zugreifen könntest?Was passiert denn, wenn du in der admin Konfig bei der Instanz den Port änderst?
Gruß
Rainer
-
"bind IP" ist gleichzusetzen mit "horche auf IP bzw. reagiere nur wenn du mit IP angesprochen wirst"..
Hat nichts mit "reagiere nur wenn die Anfrage von IP kommt" zu tun.
Also schon der korrekte Weg - außer es hat in ioBroker eine andere Bedeutung?! Kann ich mir aber nicht vorstellen.
Eventuell steht im Log auch etwas diesbezüglich?
Vielleicht ist der Port schon belegt oder ähnliches..
Was mir gerade so einfällt, ich gehe ganz stark davon aus dass ioBroker selbst immer versucht über localhost / 127.0.0.1 mit sich selbst zu kommunizieren..
Wenn du das Binding jetzt nur auf 192.168.x.x legst, ist ioBroker für sich selbst nicht mehr unter 127.0.0.1 zu erreichen..
Versuch mal````
--bind 127.0.0.1 192.168.178.52Gruß
-
"bind IP" ist gleichzusetzen mit "horche auf IP bzw. reagiere nur wenn du mit IP angesprochen wirst".. `
sicher????nicht "reagiere nur wenn du von IP angesprochen wirst"
"horche auf" ist für mich nicht "gehorche als"
Die Standardeinstellungen sind deshalb 0.0.0.0 damit der admin von allen IPs aus erreichbar ist.
Gruß
Rainer
-
"bind IP" ist gleichzusetzen mit "horche auf IP bzw. reagiere nur wenn du mit IP angesprochen wirst"..
sicher????
Ich denke BuZZy hat Recht:https://nodejs.org/api/net.html#net_ser … g_callback
` > Start a TCP server listening for connections on the given port and host.
If host is omitted, the server will accept connections on the unspecified IPv6 address (::) when IPv6 is available, or the unspecified IPv4 address (0.0.0.0) otherwise.
Note: In most operating systems, listening to the unspecified IPv6 address (::) may cause the net.Server to also listen on the unspecified IPv4 address (0.0.0.0). `
Die Angabe der Adresse ermöglicht bei Geräten mit mehreren Netzwerkschnittstellen (z.b. Ethernet und WLAN) nur auf Verbindungen auf einer dieser Schnittstellen zu reagieren.
-
Danke - wieder was gelernt (wenn auch noch nicht ganz verstanden)
@[url=https://en.wikipedia.org/wiki/0.0.0.0:~~Wikipedia"]~~In the context of servers, 0.0.0.0 can mean "all IPv4 addresses on the local machine". If a host has two IP addresses, 192.168.1.1 and 10.1.2.1, and a server running on the host is configured to listen on 0.0.0.0, it will be reachable at both of those IP addresses. `
Gruß
Rainer
-
Zum eigentlichen Problem:
Der Admin-Adapter erstellt hier
https://github.com/ioBroker/ioBroker.ad … eb.js#L393
einen neuen HTTP-Server, was auf diese Zeile zeigt:
https://github.com/ioBroker/ioBroker.js ... pt.js#L175
Die Einstellung für "bind" (IP-Adresse) wird anscheinend an die Funktion übergeben, aber nie an den erstellen HTTP-Server.
-
Zum eigentlichen Problem:
Der Admin-Adapter erstellt hier
https://github.com/ioBroker/ioBroker.ad … eb.js#L393
einen neuen HTTP-Server, was auf diese Zeile zeigt:
https://github.com/ioBroker/ioBroker.js ... pt.js#L175
Die Einstellung für "bind" (IP-Adresse) wird anscheinend an die Funktion übergeben, aber nie an den erstellen HTTP-Server. `
hierhttps://github.com/ioBroker/ioBroker.ad … eb.js#L408
Muss
server.server.listen(port, settings.bind);
stehen
-
Danke - wieder was gelernt (wenn auch noch nicht ganz verstanden)
` Stell dir vor, du hast EINEN Server, mit ZWEI Netzwerkkarten.
Also hast du zwei IPs unter denen du den selben Server erreichen kannst.
192.168.0.1 und 192.168.0.2
Jetzt installierst du auf diesem Server einen Webserver welcher auf dem HTTP Standardport 80 zu erreichen ist..
Die Instanz vom Webserver ist mit "bind 0.0.0.0" (auf allen IPs horchen) konfiguriert.
Jetzt kannst du im Browser
oder
aufrufen, und landest auf genau der gleichen Seite.
Angenommen du willst jetzt dass auf den unterschiedlichen Adressen auch unterschiedliche Webseiten angezeigt werden.
Dafür konfigurierst du die Webserver-1 Instanz auf "bind 192.168.0.1" und installierst eine zweite Instanz vom Webserver (Webserver-2)
welche mit "bind 192.168.0.2" konfiguriert wird.
Du bindest sozusagen die HTTP-Serverprozesss an diese IP-Adressen.
Wenn du jetzt http://192.168.0.1 aufrufst, antwortet dir die Webserver-1 Instanz ..
rufst du http://192.168.0.2 auf, antwortet dir die Webserver-2 Instanz - beide auf Port 80 - mit unterschiedlichen IPs - auf dem selben Server. 8-)
Gruß
-
Danke Buzzy, das hatte ich inzwischen sacken lassen, aber…
Ich hatte in Erinnerung, dass man irgendwie auch den Zugriff auf einen Server durch Angabe der zulässigen (zugreifenden) IP-Adresse oder Bereiche limitieren könnte.
Das habe ich jetzt nicht wieder gefunden.
Danke nochmals
Rainer
-
Ich hatte in Erinnerung, dass man irgendwie auch den Zugriff auf einen Server durch Angabe der zulässigen (zugreifenden) IP-Adresse oder Bereiche limitieren könnte. ` Sprichst du jetzt von einer Firewall? :lol:
Gruß
-
-
Manchmal ist das auch alles sehr verwirrend..
Gibt viele Begriffe die auf "beides" zutreffen..
Man kann auch eine Firewall an eine IP binden z.B…
:lol:
Gruß
-
Hallo Zusammen,
Danke für die Diskussion. Wenn ich es richtig verstanden habe, sind die erforderlichen Änderungen von AlCalzone schon auf GIT gemacht und von Bluefox bestätigt, oder?
Ab wann wäre das dann im Adapter vorhanden? Habe es gerade mit Version 3.3.5 versucht und dort klappt es noch nicht. Das Bild bleibt gleich…
Danke und Grüße,
Balu
Edit: Falls es hilft/wichtig/interessant ist: Im Web Adapter konnte ich das Binding auf die zweite IP festlegen und den Port auf 443 stellen. Zugriff klappt einwandfrei...