Hauptmenü

IPv6-Support?

Begonnen von alarmschaben, 27 Januar 2014, 19:52:00

Vorheriges Thema - Nächstes Thema

alarmschaben

Hallo,

seit einigen Tagen beschäftige ich mich mit FHEM als Steuerung für meine Homematic-Komponenten und bin vom Funktionsumfang angetan.

Eine Kleinigkeit habe ich aber noch nicht hinbekommen:

Wie bekomme ich das Web Frontend dazu, IPv6 zu sprechen? Jede Hilfe hierzu ist hochwillkommen! :-)

Beste Grüße
alarmschaben


alarmschaben

#2
Ah, vielen Dank für die freundliche Aufnahme. :-)

Dann versuche ich mal, etwas mehr Kontext zu liefern:

Betreibt man FHEM hinsichtlich des Web Frontends in der Default-Konfiguration, also mit dieser Definition:

define WEB FHEMWEB 8083 global

lauscht der Prozess an 0.0.0.0:8083, also nur an IPv4.

Weder in der Dokumentation noch im Wiki finden sich wirkliche Hinweise darauf, ob FHEM IPv6-fähig ist und wenn ja, wie man das Frontend dahingehend konfiguriert. Aus diesem Grunde auch meine recht allgemein gehaltene Frage.

Irgendwo (ich habe die Quelle leider nicht mehr) wurde vorgeschlagen, die o.a. Definition gegen

define WEB FHEMWEB IPV6:8083 global

zu tauschen. Allerdings lauscht der Frontend-Prozess weiterhin an 0.0.0.0:8083 statt an :::8083.

Das Environment ist Raspbian Wheezy in aktueller Version.

Was habe ich eigentlich vor?

Da meine Internetanbindung zu Hause im Gegensatz zu IPv4 bei IPv6 eine statische IP besitzt, habe ich auf meinem Server beim Hoster einen Proxy gebaut, der das Interface im öffentlichen Internet mit statischer URL exponiert. Der Transport zwischen Hoster-RZ und Heimnetz soll dann per IPv6 erfolgen. Hierfür ist es notwendig, daß FHEM ebenfalls IPv6 spricht.

Ein möglicher Workaround wäre ein zweiter Proxy auf dem Raspberry, der das gleiche tut wie der beim Hoster nur eben umgekehrt. Das wollte ich mir ganz gerne sparen. ;-)

Beste Grüße
alarmschaben

EDIT: Wenn man länger darüber nachdenkt, ergibt sich ohnehin die Erfordernis für TLS. Aus diesem Grunde bräuchte man eh zwei Proxies. Wie dem auch sei, eine Antwort würde mich trotzdem interessieren. ;-)

rudolfkoenig

ZitatWeder in der Dokumentation noch im Wiki finden sich wirkliche Hinweise darauf, ob FHEM IPv6-fähig ist und wenn ja, wie man das Frontend dahingehend konfiguriert. Aus diesem Grunde auch meine recht allgemein gehaltene Frage.

Aah, die falsche Doku gelesen. Richtig ist:
http://fhem.de/commandref.html#telnet
http://fhem.de/commandref.html#FHEMWEB

alarmschaben

Das war es gewesen, herzlichen Dank!

Die Seiten sind aber nicht im Google-Index, kann das sein? ;-)

binlan

funzt auch für mich prima auf dem raspberry, jedoch leider nicht auf der fritzbox.  perl v6 support ist da. fhem beschwert sich auch nicht über IPV6:8083 nur macht es ausschliesslich auf 0.0.0.0 den port auf. any hints?

Sidey

Hallo,

ich bin völliger Anfänger was FHEM angeht, allerdings nicht was IPV6 oder eine Fritz Box angeht.

Folgendes habe ich getan:
1. Freetz auf meiner 7490 (ohne FHEM, ohne Perl) läuft bereits seit einigen Wochen.
2. Das FHEM Image von FHEM.de installiert. also nicht das von AVM.

Dann habe ich mich gewundert, dass es unglaublich lange dauert über das Webinterface Befehle abzusetzen.
Egal was ich mache, der ganze Browser (Chrome) ist dann blockiert. Wer also das gleiche Problem hat hier mal weiterlesen, denn ich denke ich habe die Ursache gefunden.
Dazu kommt noch, dass ich beim Verbinden mit dem Telnet Port 7072 keine Befehle abgeben konnte. Dachte schon FHEM funktioniert nicht richtig.

Dann habe ich herausgefunden, dass das Webinterface sehr flott ist, wenn ich direkt die IPV4 Adresse von FHEM (der Fritzbox) adressiere. Ebenso die Telnet Oberfläche funktioniert.

Also ist hier klar, wenn IPv6 auf dem Gerät aktiv ist und man über den Hostnamen arbeitet, dann wird der Name in die V6 Adresse aufgelöst. Beim Verbindungsversuch auf den Port 8083, 7072, etc. kommt dann keine Antwort und das OS wartet auf einen Timeout.
Je nach Software wird dann über IPv4 gearbeitet.

3. Die Config in /var/media/ftp/fhem/ angepasst mit dem Versuch das Webinterface auch auf meiner IPV6 Adresse laufen zu bekommen:

define telnetPort IPV6:telnet 7072 global
define WEB FHEMWEB IPV6:8083 global
...

Wenn ich die Doku richtig interpretiert habe, ist das der richtige Syntax, damit FHEM auch auf der V6 Adresse lauscht.
Tut es aber nicht auf meiner 7490. :(

Wenn ich die Doku nun richtig verstanden habe dann wird ein Perl Modul " IO::Socket:INET6" benötigt.
Das Statement "FritzBox-7390 perl already has this module" irritiert mich etwas, da FHEM ja perl mitbringt und nicht von der fritzbox verwenden, was ja üblicherweise dort auch nicht installiert ist.

Ich habe auf meiner Box nach dem Modul gesucht, kann mir vielleicht jemand sagen, wo es liegen sollte und durch was es dort hin kommt?

Grüße Sidey




Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

LuckyDay


Sidey

Vielen Dank für den Screenshot.
Die Datei gibts auch bei mir. :)

Bleibt jetzt aber unklar, wieso bei mit Ipv6 nicht klappt.
Wenn da noch wer eine Idee hat wäre das toll.
Im logfile habe ich leider keine Hinweise gefunden.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

Sieht man im Log etwas?

Sidey

Hallo,

Anbei der Auszug aus dem Log:


2014.05.29 14:10:48 0: Server shutdown
2014.05.29 15:10:20 1: Including fhem.cfg
2014.05.29 15:10:20 3: telnetPort: port 7072 opened
2014.05.29 15:10:21 3: WEB: port 8083 opened
2014.05.29 15:10:21 3: WEBphone: port 8084 opened
2014.05.29 15:10:21 3: WEBtablet: port 8085 opened
2014.05.29 15:10:22 1: Including ./log/fhem.save
2014.05.29 15:10:22 2: SecurityCheck:  WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute.  Restart fhem for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2014.05.29 15:10:22 0: Server started with 8 defined entities (version $Id: fhem.pl 3872 2013-09-07 11:58:33Z rudolfkoenig $, os linux, user root, pid 7382)


Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

Sidey

Hallo allerseits,
Ich habe heute noch mal etwas geforscht.

Im log steht auf einmal was. Das hat mich auch weiter gebracht, aber trotzdem noch nicht alles gelöst.


2014.05.31 17:17:11 0: Server shutdown
2014.05.31 17:17:38 1: Including fhem.cfg
2014.05.31 17:17:40 1: Can't locate loadable object for module Socket6 in @INC (@INC contains: /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2 /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2 /opt/lib/perl5/site_perl/5.12.2/mips-linux /opt/lib/perl5/site_perl/5.12.2 /opt/lib/perl5/5.12.2/mips-linux /opt/lib/perl5/5.12.2 . ./FHEM) at (eval 9) line 1
Compilation failed in require at (eval 9) line 1.
BEGIN failed--compilation aborted at (eval 9) line 1.

2014.05.31 17:17:40 1: WEB: Can't load INET6, falling back to IPV4
2014.05.31 17:17:40 3: WEB: port 8083 opened
2014.05.31 17:17:40 1: Attempt to reload Socket6.pm aborted.
Compilation failed in require at (eval 11) line 1, <$fh> line 11.
BEGIN failed--compilation aborted at (eval 11) line 1, <$fh> line 11.

2014.05.31 17:17:40 1: WEBphone: Can't load INET6, falling back to IPV4
2014.05.31 17:17:40 3: WEBphone: port 8084 opened
2014.05.31 17:17:40 1: Attempt to reload Socket6.pm aborted.
Compilation failed in require at (eval 12) line 1, <$fh> line 14.
BEGIN failed--compilation aborted at (eval 12) line 1, <$fh> line 14.

2014.05.31 17:17:40 1: WEBtablet: Can't load INET6, falling back to IPV4
2014.05.31 17:17:40 3: WEBtablet: port 8085 opened
2014.05.31 17:17:40 2: eventTypes: loaded 0 events from ./log/eventTypes.txt
2014.05.31 17:17:40 1: Including ./log/fhem.save
2014.05.31 17:17:40 1: configfile: Unknown module IPV6:telnet

2014.05.31 17:17:40 2: Error messages while initializing FHEM: configfile: Unknown module IPV6:telnet
2014.05.31 17:17:40 0: Server started with 7 defined entities (version $Id: fhem.pl 5956 2014-05-24 13:04:04Z rudolfkoenig $, os linux, user root, pid 5948)


Unter  fhem / lib / perl5 / site_perl / 5.12.2 / mips-linux liegt die Datei Socket6.pm.
Das ganze lib averzeichnis gehörte einem user 501. den gab es auf meiner. Box aber nicht. Da perl ala user fhem gestartet wird konnte darauf nicht zugegriffen werden.

Gibt es einen Grund, wieso das lib Verzeichnis, im startfhem script, nicht dem User fhem zugeordnet wird?
Ich habe das manuell nachgeholt, allerdings brachte das noch nicht den Durchbruch.

Habe testhalber fhem auch mal startfhemAsroot probiert, perl läuft aber trotzdem als user fhem.

Grüße

Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

Das Socket6.pm Modul benoetigt externe Bibliotheken, um die Aufgabe wahrzunehmen, ich vermute die in der aktuellen FRITZ!OS Version ausgelieferten Bibliotheken passen nicht mehr zum Modul. Perl @ FB7390 und die IPV6 Module hat uns AVM zur Verfuegung gestellt, insofern kann ich nichts naeheres dazu sagen.

Ich habe bei AVM nachgefragt, bin gespannt, ob ich eine Antwort bekomme.

Sidey

Vielen Dank für die Mühe.

Was mich allerdings doch etwas wundert ist die Fehlermeldung:

"Can't locate loadable object for module Socket6"

Das deutet ja eher darauf hin, dass Socket6 von Perl erst gar nicht geladen werden kann.
So, als ob Perl nicht weiss, dass in Socket6.pm das modul steckt...

Ich hab gleich mal mit einem kleine example perl script experimentiert und dem Perl Interpreter den Pfad mit angegeben:
in etwa so:


./perl -I /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux/  -I /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux/ -I /var/InternerSpeicher/fhem/
lib/perl5/5.12.2/ example.pm

Socket6.pm wird so auch nicht gefunden. Socket.pm hingegen schon.

Irgendwas ist also grundlegend mit perl und der 7490. An FHEM selbst liegt es nicht.

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

rudolfkoenig

Socket6.pm benoetigt Socket6.so, dies ist aber in dem Perl-Paket nicht vorhanden.
Socket6.so muss eine mit uclibc gelinkte mips-el Bibliothek sein, sowas aufzutreiben duerfte schwierig werden.

-> Kein IPV6 @ FritzBox.

Sidey

Hallo,

Die 7490 basiert ebenso wie die 7390 auf MIPS.
Mipsel sind ältere Versionen wie z.B. 7170.

Läuft ipv6 denn auf der 7390 oder überhaup einer FB?

Wenn wir die sourcen finden, dann können wir das auch für MIPS compilieren, nur die sozrcen habe ich auf Anhieb nicht gefunden.

Grüße
Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker