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:
"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.
Die "lange" Version ermöglicht auch die Anzeige der Einträge in der GUI:
ich möchte euch mal bitten, den folgenden Vorschlag zu prüfen:
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
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:
"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:
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
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.
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
Anhänge
Zuletzt bearbeitet: