[Eisfair_dev] fb_port_forwarding_for_letsencrypt

Marcus Roeckrath marcus.roeckrath at gmx.de
So Sep 18 18:51:05 CEST 2016


Hallo,

Marcus Roeckrath wrote:

> Noch eine Warnung:
> 
> Auf meinen beiden Fritzboxen (7490/6.6.0 und 7270/6.06) habe ich
> festgestellt, dass Eintragen/Löschen von Portforwardings in der
> Weboberfläche zu einem falschen Zähler in der Fritzbox führt; erst ein
> Reboot setzt den Zähler auf den richtigen Wert.

Folgende Mail habe ich gerade an das AVM-Entwicklerteam geschrieben:

Sehr gehrte Damen und Herren,

bei der Programmierung mit TR064 auf einer 7490 (6.60) und einer 7270
(6.06) bin ich auf ein Problem mit der Behandlung von PortMappings
gestoßen.

Benutzt habe ich folgendes Dokument:

https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wanipconnSCPD.pdf
https://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/wanpppconnSCPD.pdf

Beschreibungsdatei: tr64desc.xml der Box
Authentifizierter Zugriff auf die Box

Es geht speziell um die folgenden verwendeten Funktionen:

GetPortMappingNumberOfEntries
GetGenericPortMappingEntry
AddPortMapping

Hier einige Szenarien, die Ihnen helfen sollen, das Problem zu
reproduzieren:

1. ------------------------------------------------------------------------
Zunächst lege ich in der WebGUI der Fritzbox unter Internet|Freigaben|
Portfreigaben ein oder mehrere Portfreigaben an.

Die TR-064-Funktion GetPortMappingNumberOfEntries liefert dennoch als
Ergebnis 0 zurück.

Nun reboote ich die Fritzbox und GetPortMappingNumberOfEntries liefert nun
die korrekte Anzahl der Portfreigaben zurück.

2. ------------------------------------------------------------------------
Ausgangszustand: keine Portfreigaben

Lege nun in der WebGUI eine Portfreigabe an.

Wie oben liefert GetPortMappingNumberOfEntries wieder 0 zurück.

Setze ich nun mit der TR-064-Funktion AddPortMapping ein weiteres Mapping,
wird nun gnadenlos das vorher in der GUI erstellte Mapping überschrieben.

3. ------------------------------------------------------------------------
Ausgangszustand: keine Portfreigaben

Lege nun in der WebGUI eine Portfreigabe an.

Wie oben liefert GetPortMappingNumberOfEntries wieder 0 zurück.

Nun ein Reboot wonach GetPortMappingNumberOfEntries korrekt 1 meldet.

Setze ich nun mit der TR-064-Funktion AddPortMapping ein weiteres Mapping,
wird dieses diesmal korrekt hinzufügt.

4. ------------------------------------------------------------------------
Ausgangszustand: keine oder vorhandene Portfreigaben

Mit AddPortMapping füge ich eine Portfreigabe per TR-064 ein; jetzt wird
der interne Zähler korrekt erhöht; GetPortMappingNumberOfEntries liefert
die korrkte Zahl.

Lösche ich nun in der WegGUI eine Portfreigabe (egal, ob eine in der WegGUI
oder per TR-064 erzeugte) bleibt der Zähler GetPortMappingNumberOfEntries
auf dem alten Wert.

5. ------------------------------------------------------------------------
Ausgangszustand: keine oder vorhandene Portfreigaben

Lösche ich nun in der WegGUI eine Portfreigabe (egal, ob eine in der WegGUI
oder per TR-064 erzeugte) bleibt der Zähler GetPortMappingNumberOfEntries
auf dem alten Wert und wird nicht um eins erniedrigt

Lese ich nun mit dem über GetPortMappingNumberOfEntries ermittelten Wert
mittels GetGenericPortMappingEntry die Portfreigaben aus, erhälte ich als
letzten Datensatz einen mit der Fehlermeldung
"SpecifiedArrayIndexInvalid", da GetPortMappingNumberOfEntries ja einen um
eins zu hohen Wert zurückgeliefert hat.

----------------------------------------------------------------------------

Ich könnte noch weitere Beispiel mit Löschen und Einfügen von Portfreigaben
per TR-064 oder WebGUI anführen, das Ergebnis ist immer das Gleiche:

Beim Hinzufügen/Löschen von Portfreigaben in der WebGUI wird der
Portfreigabenzähler nicht mitgeführt/aktualisiert, sondern erst nach
reboot ist dieser korrekt - das heißt, erst nach dem Reboot liefert

GetPortMappingNumberOfEntries

den richtigen Wert aus.

Für weitere Informationen stehe ich gerne zur Verfügung.
=========================================================================

Vielleicht hat jemand mal Lust, das nachzuvollziehen.

Das Kommando "show" zeigt ja die Portfreigaben an.

Stimmt etwas mit dem Zähler nicht, erscheint eine Fehlermeldung (Zähler in
der Fritzbox zu hoch) bzw. es werden nicht die erwarteten Freigaben
angezeigt (Zähler in der Fritzbox zu niedrig).

Im Rahmen des Skriptscodings habe ich es auf 16 tote Einträge gebracht, die
dann für mich zu Fehlern führten, obwohl das Skript eigentlich korrekt war.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair_dev