Skip to content

Regelbasiertes Routing

^ v M ><
Seit kurzem hab ich den Bedarf, gewissen Netzwerkverkehr über ein VPN zu tunneln. Da die direkte Anbindung aber wesentlich schneller ist als die Anbindung des VPN-Servers, wäre es eine eher mässig produktive Massnahme, einfach allen Verkehr übers VPN laufen zu lassen. Aber unter Linux sind auch anspruchsvolle Routinglösungen genial einfach. Alles, was man so benötigt, hat man in der Regel standardmässig dabei, nämlich die Tools iptables und ip. Mittels iptables werden die umzuroutenden Pakete identifiziert und markiert, mittels ip wird eine Routing-Regel und ein Routing-Tabelleneintrag erstellt. Wirklich total simpel:
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
TCP_PORTS="993 5222"
for PORT in $TCP_PORTS; do
iptables -t mangle -A OUTPUT -p tcp --dport $PORT -j MARK --set-mark 1
done

In diesem Fall werden einfach alle Pakete markiert, welche an einen bestimmten TCP-Port gesendet werden. Bei Bedarf können natürlich problemlos weitere Regeln (auch für UDP, ICMP oder bestimmte Zieladressen) gesetzt werden. Iptables setzt der Kreativität eigentlich keine Grenzen. Damit auch die Antworten eintreffen, müssen die Pakete geNATet werden. Nun benötigt man noch eine passende Routenkonfiguration:
ip rule add fwmark 1 table 1
ip route add default dev tun0 table 1
ip route flush cache

Sollte der VPN-Tunnel mal zusammenbrechen, muss einfachh nach dem Wiederaufbau der VPN-Verbindung die Route nochmals neu gesetzt und der Puffer nochmals geleert werden. Das war's.

Neue Wanderschuhe

^ v M ><
Heute Nachmittag habe ich mir neue Wanderschuhe gekauft. Eigentlich nichts besonderes, robuste Dinger mit moderner Textiltechnologie in erschwinglichem Preisrahmen. Allerdings hab ich dann grad meinen Zug nach Hause verpasst, weil die UBS-Karte vom Typen vor mir an der Kasse nicht funktionieren wollte (ja, man müsste halt mit der Karte einer vertrauenswürdigen Bank bezahlen, dann geht das). Na gut, da hatte ich zwei Möglichkeiten: Entweder 28 Minuten auf den nächsten Zug warten oder die neuen Schuhe anziehen und 1.5 Stunden lang heimlaufen. Na dann, auf!

Ich muss sagen, die Dinger sind bequem :-)