[Info] 7390: Neue SSL-Lib von 6.20 macht FHEM Anpassung notwendig

grappa24

Mitglied
Mitglied seit
9 Jan 2006
Beiträge
358
Punkte für Reaktionen
6
Punkte
18
EDIT: Das eigentliche Problem liegt an an einer geänderten SSL-Library in Fritz!OS 6.20, bitte hier weiterlesen:

http://www.ip-phone-forum.de/showthread.php?t=272953&page=2&p=2034735&viewfull=1#post2034735


Hallo,

ich hatte unter 6.04 Portfreigaben für fhem auf die Box eingerichtet, was auch bisher funktioniert hat:

Code:
     ip = 192.168.178.3;
                name = "fritzbox";
                mac = 00:00:00:00:00:00;
                medium = medium_unknown;
                auto_etherwake = no;
                ifaceid = ::;
                type = neightype_unknown;
                staticlease = no;
                ipv4forwardrules = 
                                   "tcp 0.0.0.0:8084 192.168.178.3:8084 0 # FHEM", 
                                   "tcp 0.0.0.0:8083 192.168.178.3:8083 0 # FHEM";

Nach dem Update auf die 6.20 gestern waren die beiden forwardrules "auskommentiert" (klar), daraufhin hab ich nach der Standardmethode die ar7.cfg aus dem flash kopiert, mit telnet geändert und wieder zurückkopiert. Nach dem Starten waren aber meine Änderungen weg und die ar7.cfg wieder auf dem alten Stand.
Ein reboot durch "Steckerziehen" kurz nach dem Zurückkopieren hat auch nix gebracht, vielleicht war ich aber auch nur "zu schnell" oder "zu langsam" mit dem Steckerziehen ... ?????

Oder hat sich die Syntax vielleicht wieder mal geändert?
 
Zuletzt bearbeitet:
Moin

Das ist doch eine simple Freigabe/Weiterleitung auf einen Klienten.
Warum machst du das nicht im Webinterface der Box?
 
weil eine Portfreigabe auf die IP-Adr der Box nicht zulässig ist ... siehe screenshot ... und fhem diese Ports an der IP-Adr der Box benötigt ...
 

Anhänge

  • Portfreigabe.JPG
    Portfreigabe.JPG
    98.1 KB · Aufrufe: 38
Portfreigaben von der Box auf die Box werden aber so gemacht...
Code:
internet_forwardrules = "tcp 0.0.0.0:21 0.0.0.0:21 0";

Die genaue Position in der ar7.cfg findest du, indem du mal Fernzugriff und FTP in der Box aktivierst,
und das dann in der ar7.cfg suchst...
Code:
internet_forwardrules = "tcp 0.0.0.0:443 0.0.0.0:443 0",
                                "tcp 0.0.0.0:21 0.0.0.0:21 0";
...so macht die Fritz!Box das selber.
Und diese Freigaben werden nicht im Webinterface angezeigt.
 
Zuletzt bearbeitet:
bin jetzt nicht so "sattelfest", ich weiß nur, dass meine Freigaben aus dem o.a. Code bis jetzt funktionierten und nach dem Neustart jeweils mit Kommentarzeichen versehen sind ...

"# tcp 0.0.0.0:8084 192.168.178.3:8084 0 # FHEM",
"# tcp 0.0.0.0:8083 192.168.178.3:8083 0 # FHEM";
 
Ich bleib dabei.
Das sind Freigaben auf Dienste eines Klienten (Block: landevices{}).
Die IP der Box ist intern immer: 0.0.0.0
Und Freigaben darauf werden im Abschnitt internet_forwardrules gemacht.
 
Zuletzt bearbeitet:
dann so ...

internet_forwardrules = "tcp 0.0.0.0:443 0.0.0.0:443 0",
"tcp 0.0.0.0:8084 0.0.0.0:8084 0 # FHEM",
"tcp 0.0.0.0:8083 0.0.0.0:8083 0 # FHEM";

ar7.cfg lässt sich ändern, lag an meiner "Syntax".

Die Weiterleitungen auf die Box werden nicht im Web-IF angezeigt - richtig?

Jetzt muss die Freigabe nur noch funktionieren, tut sie bisher noch nicht, teste noch ...
 
Zuletzt bearbeitet:
Berichte auch obs klappt, dass könnte Anderen die hier auch mal reingucken helfen.

PS: Um mir selbst dieses gefrickel mit der ar7.cfg zu ersparen, benutz ich die lan:0 bis lan:3 Interfaces.
Diese können dann auch problemlos im Webinterface verwaltet und geschaltet werden.
Die Dienste auf der Box müssen dann aber auch explizit auf dieser IP laufen.
Als Beispiel baun wir mal ganz einfach ein neues privates 10er Netz auf...
mkten.sh
Code:
#!/bin/sh
ifconfig lan:0 down
ifconfig lan:0 10.10.10.10 up
ifconfig lan:1 10.10.10.20 up
ifconfig lan:2 10.10.10.30 up
ifconfig lan:3 10.10.10.40 up
Und so kann darauf auf der Box z.B. ein SSH Server laufen...
rc.dropbear
Code:
#!/bin/sh
dropbear -R -m -p 10.10.10.10:22
#EOF
Die Angabe der IP bei den Freigaben im Webinterface erfolgt: Manuell
Es kann sein, das der Name des Gerätes verstümmelt auftaucht, die Funktionalität ist aber nicht beeinträchtigt.
Diese Freigaben/Weiterleitungen tauchen auch unter landevices auf.

Anstatt die ar7.cfg zu editieren oder das Webinterface zu bemühen, hab ich mir dafür ein Skript gebastelt,
um auf der Kommandozeile die Portfreigaben zu schalten.
fb_fw.sh
Code:
#!/bin/sh
local FW_IP=${1}
local FW_PORT=${2}
local FW_PORT_ST=${3}
local FW_PORT_EN=${4}
local FW_PRT=${5}
local FW_DESCR=${6}
local FW_ACT=${7}
local NEWRULE=$(ctlmgr_ctl r forwardrules settings/rule/count)
fw_activate () {
if [ $# -eq 2 ] ; then
ctlmgr_ctl w forwardrules settings/rule${1}/activated ${2}
fi
}
fw_delete () {
if [ $# -eq 1 ] ; then
ctlmgr_ctl w forwardrules settings/rule${1}/fwip 0
fi
}
fw_status () {
local maxcount=$(ctlmgr_ctl r forwardrules settings/rule/count)
if [ ${maxcount} -gt 0 ] ; then
local count=0
while [ ${count} -lt ${maxcount} ] ; do
local FW_IP=$(ctlmgr_ctl r forwardrules settings/rule${count}/fwip)
local FW_PORT=$(ctlmgr_ctl r forwardrules settings/rule${count}/port)
local FW_PORT_ST=$(ctlmgr_ctl r forwardrules settings/rule${count}/fwport)
local FW_PORT_EN=$(ctlmgr_ctl r forwardrules settings/rule${count}/endport)
local FW_PRT=$(ctlmgr_ctl r forwardrules settings/rule${count}/protocol)
local FW_DESCR=$(ctlmgr_ctl r forwardrules settings/rule${count}/description)
local FW_ACT=$(ctlmgr_ctl r forwardrules settings/rule${count}/activated)
echo -ne ${FW_IP}\
', '\
${FW_PORT}\
' an '\
${FW_PORT_ST}\
' - '\
${FW_PORT_EN}\
', '\
${FW_PRT}\
', '\
${FW_DESCR}\
', '\
${FW_ACT}'\n'
: $((count++))
done
else
echo -ne 'No rules present!\n'
fi
}
if [ $# -eq 7 ] ; then
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/fwip ${FW_IP}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/port ${FW_PORT}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/fwport ${FW_PORT_ST}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/endport ${FW_PORT_EN}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/protocol ${FW_PRT}
ctlmgr_ctl w forwardrules settings/rule${NEWRULE}/description ${FW_DESCR}
fw_activate ${NEWRULE} ${FW_ACT}
else
case ${1} in
disable) fw_activate ${2} 0;;
enable) fw_activate ${2} 1;;
delete) fw_delete ${2};;
help) echo -ne $(basename ${0})\
': Need 7 arguments!\n'\
'[fwip] [port] [fwport] [endport] [protocol] [description] [activated]\n'\
'status for entries\n'\
'disable number or enable number enables or disable entry nummber\n'\
'(first entry is 0)\n'\
'and delete number is deleting entry number\n';;
status) echo -ne 'Rules:\n'
fw_status ;;
*) echo -ne $(basename ${0})': try help\n';;
esac
fi
#EOF
Ist aber nicht jedermanns Sache, obwohl das Webinterface es ganz genauso macht.
:rolleyes:

Aufruf: fb_fw.sh help
...zeigt die Hilfe für die Optionen an.

fb_fw.sh status
...zeigt die aktuellen Freigaben/Weiterleitungen an.
 
Zuletzt bearbeitet:
Die Ports 8083 und 8084 sind anscheinend offen, nur der Zugriff auf fhem klappt noch nicht. Der D-DNS funktioniert.

So sieht mein fhem-Aufruf aus:

https://xxxx.ddns.net:8084/fhem

... oder brauchts für https eine andere Syntax beim Portforwarding ????
 

Anhänge

  • Portscan.JPG
    Portscan.JPG
    35.3 KB · Aufrufe: 19
Zuletzt bearbeitet:
Das kannst du leicht überprüfen indem du deine öffentliche IP zum Testen nimmst.
Mal eine doofe Frage: Läuft FHEM denn auch auf der Box?
Durch diese Klientfreigaben bin ich etwas verunsichert.
 
Zuletzt bearbeitet:
OK, wollte nur sicher gehen.

Da haben aber einige User Probleme mit gehabt...
Code:
landevices {
landevices_version = 2;
landevices {
ip = 192.168.178.20;
(Die IP ist nicht die Fritz!Box, sondern die erste zugewiesene DHCP IP eines Klienten)
...und die Lösung von Woody sieht der die ich dir vorgeschlagen habe, zumindest "ähnlich".
 
Zuletzt bearbeitet:
bin etwas frustriert, weder die Clientfreigaben (Code im Ausgangspost) noch die Platzierung bei den internet_forwardrules nach dem Muster der AVM-eigenen Freigabe des Ports 443 funktionieren ... :mad:
 
Ich frag mich immer noch, was die 192.168.178.3 bei landevices zu suchen hat, wenn denn das die IP der Box sein soll.
Unter landevices tauchen bei mir nur die Heimnetzgeräte auf, und nicht die fritz.box selber.
(Außer meine selbstangelegten lan:0 bis lan:3 IPs)
 
Das ist jetzt der nach Stand der Diskussion einzig sinnvolle Ansatz:

internet_forwardrules =
"tcp 0.0.0.0:443 0.0.0.0:443 0",
"tcp 0.0.0.0:8084 0.0.0.0:8084 0",
"tcp 0.0.0.0:8083 0.0.0.0:8083 0";

Bevor fhem gestartet wird, meldet der Portscan 8083+8084 grün/geschlossen (Grafik links), nachdem fhem gestartet wurde, sind 8083+8084 rot/offen (Grafik rechts). Für mich ein Indiz, dass die Freigabe funktioniert und dass etwas mit fhem nicht stimmt. Immerhin einen Schritt weiter ...

Danke koyaanisquatsi für Deine Geduld ...
 

Anhänge

  • Portscan.JPG
    Portscan.JPG
    43.4 KB · Aufrufe: 9
  • Portscan02.JPG
    Portscan02.JPG
    39 KB · Aufrufe: 6
Zuletzt bearbeitet:
Also, das sieht eigentlich gut aus.
HTTPS ist erreichbar und da läuft auch ein Dienst.
8083-8084 sind erreichbar, aber da läuft kein Dienst.
8085 ist nicht erreichbar und die Firewall macht den auch dicht.

Stelle also sicher, dass FHEM auch auf 0.0.0.0 oder eben auf der 192.168.178.3 und Port 8083-8084 läuft.
Ein...
Code:
netstat -tlep
...listet dir die Server auf TCP auf.

Kannst du mal bitte die Ausgabe posten?

EDIT: Äh? Du brauchst 8085 und gibst 8083-8084 frei?
 
Zuletzt bearbeitet:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:7072 0.0.0.0:* LISTEN 2065/perl
tcp 0 0 0.0.0.0:2002 0.0.0.0:* LISTEN 1450/aha
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 2065/perl
tcp 0 0 localhost:1011 0.0.0.0:* LISTEN 1181/telefon
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN 2065/perl
tcp 0 0 0.0.0.0:8085 0.0.0.0:* LISTEN 2065/perl
tcp 0 0 0.0.0.0:49400 0.0.0.0:* LISTEN 1017/upnpd
tcp 0 0 localhost:8888 0.0.0.0:* LISTEN 1181/telefon
tcp 0 0 :::49443 :::* LISTEN 1017/upnpd
tcp 0 0 :::5060 :::* LISTEN 1242/voipd
tcp 0 0 :::49000 :::* LISTEN 1017/upnpd
tcp 0 0 :::139 :::* LISTEN 1287/inetd
tcp 0 0 :::48493 :::* LISTEN 1013/ctlmgr
tcp 0 0 :::49200 :::* LISTEN 1017/upnpd
tcp 0 0 :::80 :::* LISTEN 1013/ctlmgr
tcp 0 0 :::1012 :::* LISTEN 1181/telefon
tcp 0 0 :::8181 :::* LISTEN 1885/contfiltd
tcp 0 0 :::21 :::* LISTEN 1287/inetd
tcp 0 0 :::53 :::* LISTEN 1022/multid
tcp 0 0 :::8182 :::* LISTEN 1013/ctlmgr
tcp 0 0 :::8183 :::* LISTEN 1013/ctlmgr
tcp 0 0 :::23 :::* LISTEN 1180/telnetd
tcp 0 0 :::443 :::* LISTEN 1013/ctlmgr
tcp 0 0 :::445 :::* LISTEN 1287/inetd
 
Ok, die laufen alle auf 0.0.0.0 und am Ende hängt: perl
Du schreibst, du connectest auf Port: 8085
Dann ist die Freigabe/Weiterleitung die du brauchst...
Code:
internet_forwardrules =
"tcp 0.0.0.0:443 0.0.0.0:443 0",
"tcp 0.0.0.0:8085 0.0.0.0:8085 0";
...und dann sollte es passen.
 
ich hab mir mal das Log von fhem angesehen, ich glaube, da liegt "der Hund begraben".

Den 8085 will ich ja nur lokal nutzen und nicht vom Web aus ...

Ich mach mal im FHEM-Forum weiter, Rudolf König weiß sicher die Lösung aus dem Stand ... Melde mich, wenns läuft. Danke nochmal. So hab ich jetzt wenigstens meine ar7.cfg aufgeräumt ...
 

Anhänge

  • fhem_IO_socket.JPG
    fhem_IO_socket.JPG
    129.9 KB · Aufrufe: 20
Zuletzt bearbeitet:
Das Log besagt übrigens: HTTPS geht nicht, deswegen biete ich jetzt HTTP an ;)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.