# iptables 1:1 nat



## dotti (23. Juli 2011)

Hallo Forum,

ich möchte folgendes realisieren:

1. Netz Router mit UMTS und Netz 10.80.0.0/16
2. Netz Router mit UMTS und Netz 10.80.0.0/16

beide bauen einen OpenVPN tun mit einem 3. Router mit DSL und fester IP (Netz 10.60.0.0/16) auf. Jetzt würde ich gerne dir zwei UMTS Router mit Hilfe von 1:1 NAT's in einen anderen IP Adressen Bereich legen.

1. Router -> 10.81.0.0/16
2. Router -> 10.82.0.0/16

Man müsste es doch mit iptables schaffen, dass wenn ich z.B. auf dem 3. Router die Adresse 10.82.5.5 anpinge, dass dann das Gerät mit der Adresse 10.80.5.5 welches am 2. Router hängt antwortet.

Hab schon viele Kombinationen versucht bis jetzt jedoch immer ohne Erfolg.


----------



## chibisuke (26. Juli 2011)

Ich hab solche sachen bisher nur mit FreeBSD pf gemacht, es müsste jedoch mit IPTables mit SNAT und DNAT auch möglich sein.

Versuchs mal diesen ansatz:

```
iptables -t nat -A POSTROUTING -o tun0 -s 10.80.0.0/16 -j SNAT --to-source 10.81.0.0/16
iptables -t nat -A PREROUTING -i tun0 -d 10.81.0.0/16 -j DNAT --to-destination 10.80.0.0/16
```


----------



## dotti (26. Juli 2011)

Hallo chibisuke,

wenn ich deine Befehle richtig lese müsste ich die im Router 1 setzen. Richtig?

Mir wäre es aber lieber, wenn ich alle Regeln im Router 3 setzen könnte.
Dann hätte ich weniger Verwalötungsaufwand.

Ich habe immer versucht POSTROUTING und DNAT zusammen zu verwenden,
jedoch scheind dass nicht zu funktionieren. Oder doch?

mfg

Klaus


----------



## chibisuke (31. Juli 2011)

Du brauchst beides. DNAT und SNAT. 


Ja das wird natürlich in router 1 / 2 gesetzt. 

in router 3 geht zwar theoretisch auch, dann musst du allerdings zusätzlich policyrouting einsetzen, um den traffic da hin zu schieben wo du ihn haben willst. 

die vorgehendsweise wäre dann folgende:

```
1.) Taggen der pakete nach destination
2.) Nat der packete 
3.) policy routing in richtung des korrekten gateways in abhängigkeit des vorher gesetzten tags
achtung: established,related rule nicht vergessen, sonst ist eine der beiden verbindungen instabil oder gar nicht funktionsfähig.
```

Ausserdem musst du hier berücksichtigen, dass du dir damit auf jedenfall ein teilweise assymetrisches routing einfängst, das potentiell sehr schwer zu debuggen ist, wenn irgendwas nicht funktioniert. 

Wie man das mit IPTables macht, kann ich dir allerdings leider nicht sagen, da ich für router und firewall zwecke normalerweise FreeBSD einsetze.


----------



## dotti (20. August 2011)

Hallo chibisuke,

danke für deine Tipp's.
Ich hab jetzt doch die einfachere Variante genutzt und hab im Router 1/2 jeweils eine 1:1 NAT eingerichtet. Ist zwar nicht ganz so schön, da ich Änderungen nicht zentral vorgenommen werden können, es ist jedoch wesendlich einfacher zu konfigurieren.

mfg

Klaus


----------

