[Eisfair_dev] avm-fritz-toolbox.sh (war: Re: fb_port_forwarding_for_letsencrypt)

Marcus Roeckrath marcus.roeckrath at gmx.de
Di Sep 20 19:21:41 CEST 2016


Hallo,

da das Skript schon lange weit über den ursprünglich angedachten speziellen
Anwendungsfall für das certs_dehydrated (letsencrypt) Paket gewachsen ist,
habe ich eine Umbenennung vorgenommen und plane es auch als eigenständiges
Paket bereitzustellen.

Bevor ich jedoch darauf eingehe, bitte ich um einen Test mit
fb_port_forwarding_for_letsencrypt.

Legt bitte ein Portforward auf der Fritzbox in der Weboberfläche an:

Quellport 1234
Zielport 5678
Zielrechner egal

Danach bitte die Fritzbox rebooten, da für den Zugriff per TR64 ansonsten
die internen PortMappings-Zähler nicht stimmen.

Danach

fb_portfb_port_forwarding_for_letsencrypt show

aufrufen. Stimmen die Angaben für Quell- und Zielport oder sind sie
vertauscht?

Ich habe da Vertauschungen auf einer 7490 gefunden, auf einer 7270 nicht.
Bitte Typ, Firmwareversion und Internetanbindung (PPPoE bzw. IP) und ob der
Fehler da ist oder nicht.

Ich habe das Problem schon an AVM gemeldet.

Wenn ihr den Testforward auf der Fritz löscht, bitte wieder die Box
rebooten.

Bitte später den Test mit der neuen Skriptversion wiederholen.



Nun zur neuen Version, die es hier gibt:

http://home.foni.net/~marcusroeckrath/eisfair/avm-fritz-toolbox.sh

Diese benutzt auch eine neue Datei für die persönlichen Voreinstellungen:

{HOME}/.avm-fritz-toolbox

Um eure bisherigen Voreinstellungen nicht neu eingeben müsst, benennt die
alte Voreinstellungsdatei um

cd ${HOME}
mv .fb-forwarding-params .avm-fritz-toolbox

Um nun die Voreinstellungsdatei unter Erhalt eurer Einstellungen upzudaten:

avm-fritz-toolbox.sh writeconfig

Dieser Befehl kann beliebig oft aufgerufen werden; die eigenen Einstellungen
gehen dabei nicht verloren, wenn ich z. B. mal neue Dinge vordefiniere.

Hier zunächst eine Übersicht über die neuen Möglichkeiten, die ihr euch auch
mit avm-fritz-toolbox.sh --help anzeigen lassen könnt.

Fritzbox TR-064 command line interface
Usage  : avm-fritz-toolbox.sh [command] [option [value]] .. [option [value]]
Commands:
add     : Adds a (predefined) port forward.
del     : Deletes a (predefined) port forward.
enable  : Activates a previous disabled (predefined) port forward.
         If not yet present in fritzbox port forward will be added enabled.
disable : Deactivates a (predefined) port forward if present in fritzbox.
         If not yet present in fritzbox port forward will be added disabled.
show    : Shows all port forwardings whether set by authorized user or upnp.
extip|extipv4 : Shows the external IP v4 address.
extipv6       : Shows the external IP v6 address.
reconnect     : Reconnects to internet/wan.
reboot        : Reboots the fritzbox.
savefbconfig  : Stores the fritzbox configuration to
                /root/fritzbox_<model>_<serialno>_<date_time_stamp>.config
deviceinfo    : Informations about the fritzbox (model, firmware, ...).
writeconfig   : Writes sample configuration file
                to /root/.avm-fritz-toolbox.

Optional parameters
Parameter                        Used by commands
--fbip <ip address>              all but writeconfig
--description "<text>"           add, enable, disable
--extport <port number>          add, enable, disable, del
--intclient <ip address>         add, enable, disable
--intport <port number>          add, enable, disable
--protocol <TCP|UDP>             add, enable, disable, del
--active                         add
--inactive                       add
--fbconffilepath "<abs path>"    savefbconfig
--fbconffileprefix "<text>"      savefbconfig
--fbconffilesuffix "<text>"      savefbconfig
--fbconffilepassword "<text>"    savefbconfig
--help                           none

Necessary parameters not given on the command line are taken from default
values or /root/.avm-fritz-toolbox.

Für die Wirksamkeit der Optionen gilt dabei (fast immer) die Priorität
(niedrig nach hoch):
Defaults im Skript|eigene Konfigurationsdatei|Optionen beim Aufruf des
Skripts

Die Reihenfolge der Optionen ist beliebig. Texte als Werte sind in
Hochkommas einzuschliessen, damit sie (insbesondere wenn Leerzeichen
enthalten sind) als ein Parameter erscheinen.

Wie ihr seht, kann man nun einfach beliebige Portmapping anlegen,
bearbeiten, (de-)aktivieren und löschen.

add, enable und disable arbeiten grundsätzlich gleich, wobei bei Add der
Aktivitätsstatus über die Voreinstellungen (Skriptdefaults,
Konfigurationsdatei, Programmoption --(in)active) gegeben wird, enable
immer --active und disable immer --inactive setzt.

enable und disable können also zum Erzeugen von Portmappings wie add
verwendet werden. 

add, enable und disable bearbeiten ein bestehendes Portmapping oder legen es
an, wenn es nicht existiert.

Es sind immer alle Parameter anzugeben, bzw. werden durch die entsprechenden
Voreinstellungen ergänzt:

... add --extport 80 --protocol TCP --intclient 192.168.178.3 --intport 8080
--description "mein neuer port forward" --inactive

legt das Portforward "disabled" an; --active würde es gleich aktivieren
(wenn in den Voreistellungen new_enabled=1 gesetzt ist, kann man sich das
--active auch sparen.
 
Wenn dieser Eintrag nun geändert werden soll, ist das nur für description,
intport und Aktivierungsstatus möglich. Die anderen Parameter (extport,
protocol, intclient) müsen übereinstimmen.

Wenn nicht, wird entweder ein neuer Portforward angelegt oder die
Anforderung von der Box wegen "Conflict" zurückgewiesen.

Also ändern wir mal was:

... add --extport 80 --protocol TCP --intclient 192.168.178.3 --intport 999
--description "nun geht der anderswohin" --active

Der Forward geht also nun an Port 999 und der Forward wurde aktiviert.

Dieses

... add --extport 80 --protocol TCP --intclient 192.168.178.200 --intport
999 --description "nun geht der anderswohin" --active

geht nicht!

Wenn man sowas will, muss der alte Forward erst geöscht werden, wobei als
Parameter extport und protocol anzugeben sind:

... del --extport 80 --protocol TCP

Soweit so klar?

Nun kurz noch zu den weiteren Möglichkeiten:

show:

Zeigt eine Liste aller Portforwardings an, getrennt nach von authorisierten
Usern und UPnP-Devices angelegten an; letztere nur, wenn das unter
"Internet|Freigaben|Portfreigaben" aktiviert ist. Die UPnP-Freigaben werden
auch nur angezeigt, können aber nicht bearbeitet werden.

extip(v4)|extipv4:

Zeigt die externen IPv4/v6-Adresse an (letztere mit Prefix)
 
reconnect: Erneuert die Internetverbindung

reboot: Rebootet die Fritzbox

savefbconfig:

Sichert die Konfiguration der Fritzbox in einen definierbaren Pfad unter dem
Namen <wählbarer Prefix>_Modellname_Seriennummer_YYYYMMDD_hhmmss.<wählbarer
suffix>

deviceinfo:

Liefert Informationen zur eigenen Fritzbox; insbesondere auch die Art der
anbindung ans Internet PPPoE oder IP, was für mich besonders wichtig ist,
da man in vielen Fällen eine andere Funktionsgruppe ansprechen muss.

Bitte testen, Danke.

-- 
Gruss Marcus


Mehr Informationen über die Mailingliste Eisfair_dev