Michael Krax: Projects

  • asterisk
  • reise-blog
  • log2mail
Startseite › Weblogs › Michael Krax's blog

I love Free Software!

Navigation

  • Dissertation
  • Open-Source-Projekte
  • Weblogs
  • Impressum

Routing mit iptables, fester IP und openvpn

Michael Krax — Di, 11/20/2007 - 10:03

Problem: Die exim-Prozesse auf meinen virtuellen Servern verabschieden sich immer mal wieder, weil zuwenig Speicher vorhanden ist ... oder wie letztes Wochenende aufgrund eines Hardwaredefektes. An einem Standort habe ich eine DSL-Leitung mit festen IPs; am anderen Standort eine kleine Linksys NSLU mit Debian, auf der exim sowieso schon läuft. Ziel: Verwende eine der festen IPs als Backup-MX.

Die Realisierung ist nicht trivial, weil die Linksys natürlich weiterhin ihre Default-Route behalten sollte und der normale Traffic über das Gateway am Standort 2 (ein OpenWRT-System) erfolgen sollte. In einem ersten Schritt habe ich deshalb auf dem Openwrt-Router am Standort 1 (mit den festen IPs) Source- und Destination-NAT aktiviert:

# SMTP to linksys nslu standort 2 (IP 192.168.2.25)
iptables -t nat -A prerouting_rule -i $WAN -p tcp --dport 25 -d 1.2.3.4 -j DNAT --to 192.168.2.25:25
iptables -A forwarding_rule -i $WAN -p tcp --dport 25 -d 192.168.2.25 -j ACCEPT
iptables -t nat -A postrouting_rule -o tun0 -p tcp --dport 25 -d 192.168.2.25 -j SNAT --to 192.168.1.1

Die beiden Standorte sind über OpenVPN verbunden, Standort 1 hat das Netz 192.168.1.0/24, Standort 2 192.168.2.0/24. Die externe IP ist 1.2.3.4. Die letzte Regel ändert die Absendeadresse der ankommenden Pakete auf die IP des Routers am Standort 1 im internen Netz. Damit weiß exim auf der NSLU, an welche Adresse es die Pakete zurückschicken muss und verwendet den Router am Standort 1 als Ziel, der dann wiederum weiß, an welche echte Adresse die Pakete verschickt werden. tun0 ist das VPN-Interface.

Nachteil dieser Lösung ist, dass greylisting nicht funktioniert (und die NSLU für ein anderes Spamerkennungsverfahren zu langsam ist). Für den Greylisting-Dämon sieht es immer so aus, als ob die Pakete vom Router mit der IP 192.168.1.1 kommen. Deshalb muss das SNAT entfallen und ein anderer Weg gefunden werden, die SMTP-Pakete von der NSLU zum Router 1 zu bringen.

Dazu wird die Routing-Tabelle auf dem Router am Standort 2 (192.168.2.1) manipuliert.

#!/bin/sh
iptables -t mangle -F PREROUTING
# send smtp from sophie to berlin (and the other way round)
iptables -A PREROUTING -t mangle -i $LAN -p tcp --dport 25 -s 192.168.2.25 \
-j MARK --set-mark 71
iptables -A PREROUTING -t mangle -i $LAN -p tcp --sport 25 -s 192.168.2.25 \
-j MARK --set-mark 71

Damit werden die Pakete durch iptables markiert. Wer gleichzeitig QOS verwendet, sollte das Skript mit in den hotplug-Folder legen und es nach jeder Aktualisierung des QOS ausführen. Folgendes Skript ändert die Routing-Tabellen und muss nur beim Systemstart ausgeführt werden:

#!/bin/sh
ip rule add fwmark 71 table 201
ip route add default via 10.1.1.1 table 201

Sowohl 71 als auch 201 sind willkürlich gewählt. Die IP-Adresse ist die intern von OpenVPN für Router 1 verwendete.

Damit der Router 1 die richtige IP-Adresse für abgehende Pakete verwendet, wird die DNAT-Regel von oben durch folgende ersetzt:

# and back from NSLU
iptables -t nat -A postrouting_rule -o $WAN -s 192.168.2.25 -j SNAT --to 1.2.3.4

Die NSLU ist damit unter der festen IP erreichbar, während sie weiterhin das Standard-Gateway am Standort 2 verwendet.

5
Your rating: Keine Average: 5 (1 vote)
  • Michael Krax's blog
  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

What is OpenID?
  • Log in using OpenID
  • Cancel OpenID login
  • Registrieren
  • Neues Passwort anfordern

Buchnavigation

  • Open-Source-Projekte

Weitere Informationen

  • Michael Krax
  • Open Source Projekte
  • Dissertation
  • krax.net

Languages

  • English English
  • Deutsch Deutsch

Beliebte Inhalte

Heute:

  • 2010: Projekt Leben

Insgesamt:

  • AVM Fritz Box und remote capi
  • Routing mit iptables, fester IP und openvpn
  • Nortel iPhones

Zuletzt angezeigt:

  • 2010: Projekt Leben
  • Open-Source-Projekte
  • Routing mit iptables, fester IP und openvpn
  • asterisk
  • reise-blog
  • log2mail