2013-02-15 8 views
7

Ich versuche, alle eingehenden TCP-Pakete an mehrere IP-Adressen weiterzuleiten.Klonen und Weiterleiten von Paketen an mehrere IP-Adressen

Setup:

A - 10.10.10.10 
B - 10.10.10.11 
C - 10.10.10.12 
D - 10.10.10.13 

Ich will B, C und D erhalten (auf Port 8000) alle eingehenden Pakete auf Port 12345 von A. Idealerweise wollte ich, dass A das macht.

Ich kann mit dieser Regel auf A an einer Maschine weiter:

iptables -t nat -A PREROUTING -p tcp --dport 12345 -j REDIRECT --to 10.10.10.11:8000 

Ich kann das Paket auch klonen die T-Option:

iptables -t mangle -A PREROUTING -p tcp --dport 8000 -d 10.10.10.11 -j TEE --gateway 10.10.10.12 

Bisher alles in Ordnung ist. Das Problem ist, dass C das Paket mit der Ziel-IP von B und nicht von C empfängt. Außerdem weiß ich nicht, wie ich zu D und/oder anderen Zielen weiterleiten kann.

Wie kann ich A, mit Iptables-Regeln, alle eingehenden Pakete auf Port 12345 zu allen anderen Maschinen (B, C und D) zu Port 8000?

Antwort

0

Sie haben POSTROUTING- zu verwenden:

iptables -t nat -A POSTROUTING -p tcp --dports 8080 -j SNAT --to-source 10.10.10.12 

, aber Sie müssen einen Weg finden, zu unterscheiden, welches Paket für B oder C ist sonst werden sie alle mit der IP von C. ankommen sollte es mit getan werden die Schnittstelle, wenn Sie eine andere Schnittstelle haben; Ich nehme an, es ist der Fall, da Sie das Gateway so etwas wie ändern:

iptables -t nat -A POSTROUTING -o eth3 -p tcp --dports 8080 -j SNAT --to-source 10.10.10.12 

so nur auf die Schnittstelle eth3 abgehend die Pakete, die Abbildung, es ist der Routing-Pfad zu C, wird die Ziel-IP-Änderung C ip hat.