Forums Neueste Beiträge
 

Problem mit source based Routing und UDP

11/01/2008 - 22:38 von Ralf Beyer | Report spam
Hallo NG,

ich habe einen DSL-NAT-Router, welcher auf Debian etch basiert. Dieser
hat 3 Interfaces, wovon 2 am Internet angeschlossen sind:

eth0 192.68.0.0/24 -> LAN-Verbindung
ppp0 aa.bb.cc.dd -> T-DSL dialup (dyn. IP)
eth2 83.236.xx.yy -> QSC-DSL (feste IP)

Das LAN wird über ppp0 genatted, Default-Route geht über ppp0. Das
funktioniert einwandfrei. Auf der Kiste làuft ein sshd und ein weiterer
Dienst auf UDP Port 6001 (beide laut netstat auf 0.0.0.0 lauschend).

Damit die Dienste von außen auch über den QSC-Zugang erreichbar sind,
habe ich für eth2 source based Routing aktiviert:

echo "100 qsc" >> /etc/iproute2/rt_tables
ip rule add from 83.236.xx.yy table qsc
ip route add default via $QSC-GATEWAY table qsc

Den sshd kann ich damit von außen sowohl über den T-DSL- und den QSC-
Zugang erreichen, bei dem UDP-Dienst klappt das nur über den T-DSL-
Zugang. Ping von außen auf beide Zugànge funktioniert.

Wenn ich die Ausgabe von Wireshark richtig interpretiere, erreichen die
Anfragen von außen auf UDP 6001 auf 83.236.xx.yy (eth2) ihr Ziel. Jedoch
werden die Antwortpakete darauf (aus welchem Grund auch immer) mit der
Source-IP aa.bb.cc.dd (ppp0) generiert und deswegen greift obige Regel
nicht (die Pakete gehen über ppp0 raus). Der sshd dagegen generiert
Antwortpakete mit der Source-IP 83.236.xx.yy und deswegen funktioniert's.

Dummerweise habe ich von dem UDP-Dienst weder den Source-Code, noch eine
brauchbare Doku. Ich kann höchstens auf einen anderen UDP-Port ausweichen.
Das bringt mich nicht weiter. Ich kann auch nicht "von außen" auf einen
bestimmten IP-Bereich eingrenzen.

Probiert habe ich auch schon, die Antwortpakete zu markieren und danach
zu routen:

echo "101 udp_out" >> /etc/iproute2/rt_tables
iptables -A PREROUTING -t mangle -p udp --sport 6001 -j MARK --set-mark 4
ip rule add fwmark 4 table udp_out
ip route add default via $QSC-GATEWAY table udp_out

Leider ohne Erfolg (gleicher Effekt). Hat jemand eine Idee, wie man
weiterkommt?

BTW: Macht es Sinn, spàter -- wenn alles funktioniert --, die ganzen Regeln
per pre-up, post-up etc. in /etc/network/interfaces einzutragen oder sollte
man lieber auf separate Start-/Stop-Skripte in /etc/init.d ausweichen?

Thanx + Gruß Ralf
 

Lesen sie die antworten

#1 Ralf Döblitz
12/01/2008 - 20:41 | Warnen spam
Ralf Beyer schrieb:
Hallo NG,

ich habe einen DSL-NAT-Router, welcher auf Debian etch basiert. Dieser
hat 3 Interfaces, wovon 2 am Internet angeschlossen sind:

eth0 192.68.0.0/24 -> LAN-Verbindung
ppp0 aa.bb.cc.dd -> T-DSL dialup (dyn. IP)
eth2 83.236.xx.yy -> QSC-DSL (feste IP)

Das LAN wird über ppp0 genatted, Default-Route geht über ppp0. Das
funktioniert einwandfrei. Auf der Kiste làuft ein sshd und ein weiterer
Dienst auf UDP Port 6001 (beide laut netstat auf 0.0.0.0 lauschend).

Damit die Dienste von außen auch über den QSC-Zugang erreichbar sind,
habe ich für eth2 source based Routing aktiviert:



Produzieren deine Dienste denn auch Antworten mit der richtigen
Source-Adresse? Hàufig wird einfach die kanonische Adresse des Hosst
genommen und das dann eben nicht immer die gewünschte Adresse (IIRC war
der ntpd so ein Kandidat, bei bind war ebenfalls _eine_ Adresse (wenn
auch konfigurierbar) üblich (wobei man da aber evtl. mittels Views
rumferkeln kann)).

Ralf
Ralf Döblitz * Schapenstraße 6 * 38104 Braunschweig * Germany
Phone: +49-531-2361223 Fax: +49-531-2361224 mailto:
Homepage: http://www.escape.de/users/selene/
Mit UTF-8 kann man gleichzeitig àöüßÄÖÜæœłø‱¼½¾¤¹²³¢€£¥¶§¬÷×±©®™¡¿ verwenden…

Ähnliche fragen