[Berlin-wireless] kleines nat problem mit ff-firmware
Stefan Sperling
stsp
Do Aug 14 11:13:19 CEST 2008
Hallo Sven-Ola und andere,
dies ist kein Bugreport mit fix, sondern nur eine kurze
Beschreibung eines Problem, von dem ich nur vermuten
kann was die Ursache sein ist (noch keine Zeit gehabt
richtig zu forschen).
Problem: Internet geht manchmal nicht.
Ok, danke.
Heh, ok, und warum? Naja, auf meinem Weg zu Katharina's
DSL Anschluss sind 2 ff-firmware router die NAT machen.
Der eine (router 1) macht NAT von 104.x -> 10.x (hausnetz), der
andere (router 2) macht NAT von 10.x -> internet am pppoe interface.
Durch das alles fahr ich ein openvpn zum in-berlin (UDP mode).
Ab und zu gibts mal die Situation, dass ich den VPN server
beim in-berlin zwar pingen kann, das VPN aber hängt.
Bin dann mit tcpdump über die router gewirbelt um rauszufinden
was ist. Was ist: Einer der beiden NATtenden router NATted
die UDP Pakete für mein VPN nicht, aber alles andere scheint
korrekt zu NATten. D.h. man sieht im tcpdump am externen
Interface dass die VPN pakete am router 1 mit source addresse
104.x rausgehen, und bei router 2 mit 10.x (Das passierte bisher
nicht gleichzeitig, ist aber schon auf beiden routern einzeln
aufgetreten). Kein Wunder also, dass es meine UDP Pakete
nicht bis zum VPN server schaffen.
Reboot router -> hilft nicht.
VPN aus, reboot router, kurz warten, VPN an -> hilft.
Tcpdump zeigt an, dass auch die VPN Pakete wieder richtig
geNATted werden.
Meine Vermutung: Der Router lässt schon Pakete zu einem
Zeitpunkt durch, wo NAT noch nicht aktiv ist. Dadurch kriegen
die UDP Pakete einen "state" in iptables, und behalten den state
solange bis ich mein openvpn davon abhalte, Pakete zu senden,
so dass der state sein timeout erreicht.
Die Situation ist jetzt schon paar Tage nicht mehr aufgetreten,
lässt sich aber evtl. herstellen durch reboot der router und ein
bisschen Glück mit dem Timing.
Frage an Sven-Ola: Hast du Lust, zu versuchen das Problem lokal zu
reproduzieren? (Es gibt ja viele Wege, UDP Pakete ins internet zu
schicken :) Evtl. sollte man die NAT regeln im firewall skript früher
laden als bisher? Also z.B (untested):
--- S45firewall.orig 2008-08-14 11:02:44.000000000 +0200
+++ S45firewall 2008-08-14 11:02:57.000000000 +0200
@@ -266,13 +266,13 @@
case $1 in
start)
echo "Starting firewall..."
+ set_masq
if [ "$(nvram get fw_disable)" != "1" ]; then
test -n "$WANDEV" && set_wan_fw
if [ -z "$WIFIADR" ] || [ "$(ipcalc -n $LANADR $WIFIMSK|cut -d'=' -f2)" != "$(ipcalc -n $WIFIADR $WIFIMSK|cut -d'=' -f2)" ]; then
set_wlan_fw
fi
fi
- set_masq
for i in /etc/local.fw /etc/local.fw-*; do
if [ -f $i ]; then
trap - INT QUIT TSTP
Danke,
Stefan
Mehr Informationen über die Mailingliste Berlin