.titleBar { margin-bottom: 5px!important; }

Script zum Setzen von Portfreigaben in den forwardrules der ar7.cfg

Dieses Thema im Forum "FRITZ!Box Fon: Modifikationen" wurde erstellt von fws, 15 Feb. 2006.

  1. fws

    fws Neuer User

    Registriert seit:
    7 Juni 2005
    Beiträge:
    126
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 fws, 15 Feb. 2006
    Zuletzt bearbeitet: 23 Feb. 2006
    hallo,

    da sehr oft das problem der portfreigabe in den forwardrules der ar7.cfg auftritt habe ich ein script erstellt mit dem ports freigegeben und wieder gelöscht werden können, die auf die box zeigen (abc 0.0.0.0:y 0.0.0.0:z).

    die syntax ist folgende:

    Code:
    setforw.sh Wan-Port Box-Port [0|1] [tcp|udp]
    die parameter Wan-Port und Box-Port sind zwingend notwendig und müssen einen gültigen wert zwischen 1 und 65535 haben.
    0|1 ist optional wobei 0 für löschen und 1 für freigabe steht, default ist 1
    tcp|udp gibt das protokoll an, hier ist tcp der default-wert.

    die neue regel wird hinter >>"udp 0.0.0.0:7085 0.0.0.0:7085",<< in die forwardrules eingefügt.

    das script wurde ausgiebig auf einer fritz!box 7050 ohne branding getestet, trotzdem kann ich keine gewähr für die funktion übernehmen.

    ein bekanntes problem ist das der parameter für die ports nicht auf einen gültigen wert überprüft wird, es muss also beim aufruf darauf geachtet werden das die werte im gültigen bereich liegen!

    das script setforw.sh muss auf die box geladen werden und mit
    Code:
    chmod +x setforw.sh
    ausführbar gemacht werden.

    mfg fritz


    [hr]x[/hr]

    EDIT: neue version des scriptes zur portfreigabe. eintrag des portes in der ar7.cfg erfolgt nun in dem abschnitt: dslifaces->internet->dsldpconfig->forwardrules hinter dem eintrag "udp 0.0.0.0:0 0.0.0.0:0 1 out", und ist somit auch für andere versionen der fritz!box einsetzbar.

    EDIT: auf wunsch wird jetzt eine sicherungsdatei /var/tmp/ar7.bak angelegt.
    [hr]x[/hr]
     

    Anhänge:

  2. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ähm, mal 'ne DAU-Frage:
    Was ist da anders als die Portfreigaben über das Web-Menü?
    (wahrscheinlich hab ich das nicht kapiert, dann bitte Nachsicht üben ;))

    Gruß, ao
     
  3. waldwuffel

    waldwuffel Mitglied

    Registriert seit:
    13 Juni 2005
    Beiträge:
    570
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    mache mal eine Portfreigabe auf z.B.

    Portfreigabe für: Andere Anwendungen
    Bezeichnung: Test
    Protokoll: udp
    Port 1194
    an IP-Adresse: 192.168.178.1 (oder die Ip deiner Box)
    Port: 1194


    Und schau was passiert! Das kannst du mit dem Skript umgehen.
     
  4. fws

    fws Neuer User

    Registriert seit:
    7 Juni 2005
    Beiträge:
    126
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    info zur portfreigabe

    ein eingehender port kann in der weboberfläche nur für einen existierenden, localen ip-adressbereich freigegeben werden, dabei ist die locale adresse der fritz!box ausgenommen.

    soll der freizugebende port für die fritz!box in der weboberfläche konfiguriert werden können, dann muss zuvor ein virtuelles interface angelegt werden.

    z.b. mit
    Code:
    ifconfig eth0:0 192.168.178.253 netmask 255.255.255.0 broadcast 192.168.178.255 up
    da diese ip auf die fritz!box zeigt, kann damit in der weboberfläche eine portfreigabe zur adresse 192.168.178.253 erfolgen.

    bei dem von mir erstellten script findet eine portfreigabe zur fritz!box über die zuordnung zu 0.0.0.0 statt. dies ist in der weboberfläche nicht möglich. diese freigabe erscheint auch nicht in der weboberfläche.
     
  5. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ist das ifconfig bei jedem Reboot der Box auszuführen?
    Stellt es ein erhöhtes Sicherheitsrisiko dar, eine Portfreigabe auf 192.168.178.253 einzuführen?

    Danke Euch und Gruß, ao
     
  6. fws

    fws Neuer User

    Registriert seit:
    7 Juni 2005
    Beiträge:
    126
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ifconfig muss nach jedem reboot ausgeführt werden. /var/flash/debug.cfg ist ein guter platz für diesen aufruf.

    die portfreigabe auf die ip 192.168.178.253 ist so sicher/unsicher wie jede portfreigabe ins internet!
     
  7. ao

    ao Aktives Mitglied

    Registriert seit:
    15 Aug. 2005
    Beiträge:
    2,078
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Klar, hast natürlich Recht. Ich hatte mich halt nur gefragt, weshalb das von AVM gesperrt wurde. :confused:

    Gruß, ao
     
  8. fws

    fws Neuer User

    Registriert seit:
    7 Juni 2005
    Beiträge:
    126
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hallo ao,

    avm hat keine selbstkonfigurierbare portfreigabe vorgesehen die auf die fritz!box selber zeigt.
    darum ist man auf ein paar klimmzüge angewiesen.
     
  9. Bejobe

    Bejobe Neuer User

    Registriert seit:
    19 Mai 2005
    Beiträge:
    163
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #9 Bejobe, 23 Feb. 2006
    Zuletzt bearbeitet: 23 Feb. 2006
    Böse Fehler und Fallen im Script, bitte korrigieren

    Hallo,

    Sehr verdienstvoll, danke.

    Die Tests wurden auf der Fritzbox mit Sicherheit _nicht_ mit _genau_ der Script-Datei, die im Zip-Archiv "setforw.zip" enthalten ist, durchgeführt. Das dort enthaltene Script ist nämlich im PC-Text-Format abgespeichert und wegen der zu Linux/Unix nicht kompatiblen Zeilenumbrüche (falsch: CR und LF) auf der Box nicht vernünftig lauffähig.

    ... führt zur sofortigen Zerstörung der Datei /var/flash/ar7.cfg (wobei auch keine Sicherheitskopie erstellt wird), wenn es in ein beliebiges Verzeichnis auf der Box kopiert und dort ausgeführt wird (ausser, dieses Verzeichnis ist zufälligerweise das Verzeichnis /var/tmp ).

    Bitte deshalb im Script die folgenden Zeilen anpassen/zufügen und das Script danach im Unix-Format abgespeichert wieder hier im Zip-Archiv zur Verfügung stellen:

    Zeile 47:cat > sed_in <<EOFSEDIN
    ändern zu:cat > /var/tmp/sed_in <<EOFSEDIN

    Zeile 52:cat >> sed_in <<EOFSEDIN2
    ändern zu:cat >> /var/tmp/sed_in <<EOFSEDIN2

    folgende Zeile (oder ähnlich) hinzufügen:
    cat /var/flash/ar7.cfg > /var/tmp/ar7_cfg.old
    ... und zwar VOR der Zeile 58:
    cat /var/flash/ar7.cfg | sed -f /var/tmp/sed_in > /var/tmp/ar7.bak

    Best regards

    Bejobe

    Edit: Nach dem heutigen Update des Scripts von Version 1 auf Version 3 sind die Fehler behoben und die Fallen beseitigt. Sehr gut.
     
  10. fws

    fws Neuer User

    Registriert seit:
    7 Juni 2005
    Beiträge:
    126
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    neue version v0.3

    leider hatte sich ein fehler in das script eingeschlichen.
    die angesprochenen fehler sind behoben. zusätzlich wird ein backup der ar7.cfg in /var/tmp/ar7.bak angelegt, so das die änderungen durch ein
    Code:
    cat /var/tmp/ar7.bak > /var/flash/ar7.cfg
    wieder rückgängig gemacht werden können. weiterhin wird die freigabe jetzt in der sektion "internet" an den eintrag "udp 0.0.0.0:0 0.0.0.0:0 1 out", angehängt und ist somit auch für boxen ohne voip nutzbar.
     
  11. Hugo58

    Hugo58 Neuer User

    Registriert seit:
    1 Okt. 2004
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    habe folgendes Problem:

    habe das Skript setforw.sh per wget auf die Box in das Verzeichnis /var/tmp geladen und dann ausführbar gemacht, wie oben beschrieben. Allerdings kommt bei mir die Fehlermeldung:

    -sh: setforw.sh: not found

    obwohl die Datei, im o.g. Verzeichnis zu finden ist.

    Den Programmaufruf habe ich mit:

    setforw.sh 1194 1194 1 udp

    gestartet ... habe ich da was falsch verstanden oder ist irgend etwas anderes schief gegangen?
     
  12. schnuffi72

    schnuffi72 Neuer User

    Registriert seit:
    22 Aug. 2005
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #12 schnuffi72, 6 März 2006
    Zuletzt bearbeitet: 6 März 2006
    Hallo Hugo58,

    Du mußt auch hier (wie im Script) den gesamten Pfad zu setforw.sh angeben, also

    /var/tmp/setforw.sh 1194 1194 1 udp

    Das ist notwendig, weil das Verzeichnis /var/tmp (aus gutem Grund, nämlich, damit nicht ausversehen eine fremde unsichere Datei ausgeführt wird) nicht zum Suchpfad für ausführbare Programme gehört.

    Gruß,
    schnuffi72
     
  13. Darkyputz

    Darkyputz Aktives Mitglied

    Registriert seit:
    27 Juli 2005
    Beiträge:
    2,320
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Newton, New Jersey
    nennt mich altmodisch...aber was tut das gute stück anderes als ich mit dem fbeditor machen kann??
    habe ich damit vorteile??
     
  14. Hugo58

    Hugo58 Neuer User

    Registriert seit:
    1 Okt. 2004
    Beiträge:
    8
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Nachtschicht???
    Danke schnuffi72 hat wunderbar funktioniert :D

    Vielleicht noch eine Frage zum FBEditor. Kann ich hier einfach eine Zeile einfügen und wie realisiere ich den Einzug? Mit Leerzeichen? Habe absolut keine Lust mir die Box an die Wand zu fahren.

    Hier gab es mal eine Lösung, wo man einen Eintrag mit dem normalen Portforwarding der Box macht, diesen aber nur nicht aktiviert, weil das ja nicht funktioniert und dann mit dem FBEditor (glaube ich) die # rauslöscht, um den Eintrag zu aktivieren. Ich glaube bei mir hat es nicht funktioniert außerdem war es nervig, dass man bei jedem neuen Portforwarding mit der Fehlermeldung genervt wurde und immer wieder diesen Arbeitschritt mit dem FBEditor machen mußte.

    Gruß Hugo
     
  15. Darkyputz

    Darkyputz Aktives Mitglied

    Registriert seit:
    27 Juli 2005
    Beiträge:
    2,320
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Newton, New Jersey
    tjaaaa...nu hab ich das auch nötig, und auch sofort ausprobiert...
    leidr scheint bis auf das die versprochene backupdatei zu erzeugen nix zu passieren...
    kann das jemand bestätigen oder läuft das script bei euch auf ner 7170?
    oder habt ihr ne neue/andere/bessere idee ports freizuschalten?
    sollte nen script sein, da es via callmonitor oder dtmfbox angesprochenw erden soll...
    danke für eure ideen
     
  16. Micha-J

    Micha-J Neuer User

    Registriert seit:
    22 Nov. 2006
    Beiträge:
    36
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Leute.
    Ich finde dieses Script sehr interessant und würde gerne das WebIF der Fritz.Box auf den Port 20000 weiterleiten.
    Ich habe das Script mit wget in /var/tmp geladen und ausführbar gemacht, danach habe ich zur Freigabe folgenden Befehl ausgeführt:
    Code:
    /var/tmp/setforw.sh 20000 80 1 tcp
    nach diesem Befehl erhalte ich einfach wieder den Promt.
    Ist die Freigabe damit abgeschlossen ?, oder muss ich noch etwas anderes machen bzw. ist der Befehl überhaput richtig ?
    Funktionieren tut es nämlich nicht :confused:

    DANKE für eure Hilfe

    MfG
    MICHA

    P.S: Bleibt die Freigabe auch nach einem Neustart erhalten ?
     
  17. han-solo

    han-solo Mitglied

    Registriert seit:
    28 Juli 2005
    Beiträge:
    451
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #17 han-solo, 16 Sep. 2007
    Zuletzt bearbeitet: 28 Mai 2009
    Hallo,

    wollte das skript für meinen sl-mod verwenden. Hat aber nicht funktioniert.
    Also hab ich ne Kurzvariante davon generiert, welche ich jetzt auch im sl-mod für die FritzBox SL eingebaut hab.

    Bitte sehr, als rule.sh anlegen und mit chmod +x ausführbar machen.

    Code:
    #!/bin/sh
    REAL="/var/flash/ar7.cfg"
    TEMP="/var/tmp/ar7.tmp"
    if [ "$1" != "" ]; then
       echo "ok"
      else
       echo ""
       echo "Usage: rule [SPort] [DPort] [0|1] [udp|tcp] [ip] [service]"
       echo ""
       echo "[SPort]   = Incoming Port"
       echo "[DPort]   = Outgoing Port"
       echo "[0|1]     = 1 for set, 0 for delete"
       echo "[udp|tcp] = UDP or TCP"
       echo "[ip]      = IP address to forward"
       echo "[service] = Identify"
       echo ""
       echo "sample: rule 22 22 1 tcp 192.168.178.253 SSH"
       exit
    fi
    cat $REAL >$TEMP
    if [ "$3" = "1" ]; then
       sed -e 's/"tcp 0.0.0.0:0 0.0.0.0:0 1 out",/"tcp 0.0.0.0:0 0.0.0.0:0 1 out",\n
                                           "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'",/g
    ' <$REAL >$TEMP
       echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; added to ar7.cfg'
    fi
    if [ "$3" = "0" ]; then
      sed '/"'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'",/d' <$REAL >$TEMP
      echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; removed from ar7.cfg'
    fi
    cat $TEMP >$REAL
    rm $TEMP
    
    Gruß
    HS
     
  18. memphys

    memphys Neuer User

    Registriert seit:
    29 Nov. 2007
    Beiträge:
    5
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wo muss ich den das script von dir jetzt engeben?? In die debug.cfg??
     
  19. Darkyputz

    Darkyputz Aktives Mitglied

    Registriert seit:
    27 Juli 2005
    Beiträge:
    2,320
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Newton, New Jersey
    was möchtest du denn machen?
    dann schauen wir mal was wo rein muss ;-)
    und leg dir ne signatur an, oder schrieb um was für hardware/firmware es sich dreht
     
  20. gerry1980

    gerry1980 Neuer User

    Registriert seit:
    1 Juli 2007
    Beiträge:
    13
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #20 gerry1980, 18 Dez. 2007
    Zuletzt bearbeitet: 18 Dez. 2007
    Noch ein setfw Skript, dass aber über AVMs Methode einträgt

    Dieses Skript nutzt die Möglichkeit, über den FritzBox-Webserver die Forwardrule
    einzutragen. Das ist meiner Meinung nach besser, als selbst
    alles in der ar7.cfg zu ändern.

    Das Skript legt eine Pseudo-Rule an,
    die dann mit sed auf die Gewünschte abgeändert wird.

    Getestet habe ich das Skript auf meiner 7170.29.04.40
    und einer 7141.40.04.37.

    Um Post Daten an den Webserver zu übergeben
    benutze ich curl.
    Ich hab das static-binary auch im Anhang.
    Im Skript wird es von meinem Server geholt.

    Skript auch im Anhang,
    beim Kopieren des Zitates kommen
    Zeilenumbrüche rein !
    Wer das Skript aus dem Anhang nimmt,
    hat diese Problem nicht :)

    NEWRULE ist die neue Regel.

    Feedback in jeder Form, erwünscht !!! :spocht:


     

    Anhänge: