Moin zusammen,
ich möchte euch mal bitten, den folgenden Vorschlag zu prüfen:
Damit kann man in der "normalen" Oberfläche als Ziel die "0.0.0.0" also die Box selbst angeben. Damit geht dann z.B. folgendes, ohne Eingriffe in die ar7.cfg:Code:--- usr/www/all/html/de/internet/portrule.js.ori 2008-02-05 09:52:26.000000000 +0100 +++ usr/www/all/html/de/internet/portrule.js 2008-02-05 10:12:04.000000000 +0100 @@ -35,10 +35,8 @@ for (i=0; i < 4; i++) { if ((Number(digits[i]) > 255 ) || (Number(digits[i]) < 0 )) return g_mldIpAdr; } - // IP-Adresse 0.0.0.0 verbieten - if ((Number(digits[0]) == 0) && (Number(digits[1]) == 0) && (Number(digits[2]) == 0) && (Number(digits[3]) == 0)) return g_mldIpAdr0000; - // IP-Adresse *.*.*.0 verbieten - if (Number(digits[3]) == 0) return g_mldIpAdr0; + // IP-Adresse *.*.*.0 verbieten ... aber 0.0.0.0 erlauben ;-) + if (Number(digits[3]) == 0 && address[0] != "0.0.0.0") return g_mldIpAdr0; // IP-Adresse *.*.*.255 verbieten if (Number(digits[3]) == 255) return g_mldIpAdr255; // IP-Adresse 169.254.*.* verbieten
"tcp 0.0.0.0:22 0.0.0.0:22 0 # SSH auf FBOX",
"udp 0.0.0.0:1194 0.0.0.0:1194 0 # OVPN";
Jörg
EDIT 20080406: Nachtrag einer "Minianleitung"
Um das ganze ohne Patches zu nutzen, kann man das oben genannte auch per Telnet auf der Box direkt eingeben. Die "kurze" Variante ermöglicht es, Portfreigaben auf "0.0.0.0" zu setzen, die zwar im Flash abgespeicert werden, nach einem Reboot aber nicht mehr in der GUI sichtbar sind. Die "längere" Variante zeigt auch in der GUI alle Weiterleitungen auf 0.0.0.0 an und ermöglicht deren Änderung (Ausnahme ist die Standard-AVM-Regel für VOIP auf Port 5060).
Für die "Mini-Lösung" per telnet auf die Box und dann das folgende ausführen:
Wie gesagt: Damit kann man bis zu einem Neustart 0.0.0.0 als Ziel eintragen und diese Einträge (nicht schon existierende) "sehen". Nach einem Neustart bleiben diese Einträge zwar erhalten, sind aber nicht sichtbar in der GUI.Code:pr=`find /var/html/ -name portrule.js` sed 's/return g_mldIpAdr0000/return null/' $pr > /var/tmp/portrule.js mount -o bind /var/tmp/portrule.js $pr
Die "lange" Version ermöglicht auch die Anzeige der Einträge in der GUI:
Code:pr=`find /var/html/ -name portrule.js` sed 's/return g_mldIpAdr0000/return null/' $pr > /var/tmp/portrule.js mount -o bind /var/tmp/portrule.js $pr cat > /var/tmp/unhiderules << 'EOF' #! /bin/sh # Die VOIP-Regel "ausblenden" EXCLUDE="0\.0\.0\.0\:5060" #PW extrahieren local PWD=$(/bin/allcfgconv -C ar7 -c -o - | sed -ne '/^webui[[:space:]]*{/,/^}/{ /=/{s/[[:space:]]*=[[:space:]]*/=/;s/^[[:space:]]*//;p} }' | grep '^password=' | cut -d '"' -f2) ret=$? if [ $ret != 0 ]; then echo "ERROR: Unhide_local_PFWD (exit code $ret)" >&2 exit $ret fi # 0.0.0.0:xx 0.0.0.0:yy ersetzen durch 0.0.0.0:xx 127.0.0.1:yy cat /var/flash/ar7.cfg | sed "/dslifaces/,/} {/ {/forward/,/}/ {/$EXCLUDE/! s/\(.*0\.0\.0\.0.*\)\(0\.0\.0\.0\)\(.*\)/\1127\.0\.0\.1\3/}}" > /var/tmp/tmpar7.cfg cat /var/tmp/tmpar7.cfg > /var/flash/ar7.cfg # Die "neuen" Regeln einlesen lassen, so dass sie per GUI erreichbar sind (die 0.0.0.0-er Regeln sind nicht "ansprechbar": killall -9 ctlmgr && sleep 1 && /usr/bin/ctlmgr sleep 5 # ... und nun das Aendern auf 0.0.0.0 per GUI "emulieren" # TESTSTRING="127.0.0.1" NEUEIP="0.0.0.0" # Die Rules finden ... rules="`wget -q -O - "http://127.0.0.1/cgi-bin/webcm?getpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&errorpage=..%2Fhtml%2Fde%2Fmenus%2Fmenu2.html&var%3Alang=de&var%3Apagename=portfw&var%3Amenu=internet&var%3Apagemaster=" | grep -v $EXCLUDE |grep -A 6 $TESTSTRING | grep "uiDoEdit" | sed "s/.*uiDoEdit('\(.*\)').*/\1/"`" if [ "$rules" != "" ]; then # ... POST_DATA String "basteln" PDATA="getpage=/usr/www/all/html/query.txt&login:command/password=$pw&id=uiPostForm&name=uiPostForm&var:pagename=portrule&var:menu=internet" for myrule in `echo "$rules" | tr '\n' ' '`; do PDATA="${PDATA}&var:rule=${myrule}&var:isnew=0&var:isexp=0&forwardrules:settings/${myrule}/fwip=$NEUEIP" done echo -n "$PDATA" | REQUEST_METHOD="POST" REMOTE_ADDR="127.0.0.1" CONTENT_TYPE="application/x-www-form-urlencoded" CONTENT_LENGTH=${#PDATA} /usr/www/html/cgi-bin/webcm > /dev/null fi # ... fertig EOF sh /var/tmp/unhiderules


Zitieren

Das Ziel des OP war ja doch ein etwas anderes.

