[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