2013-02-15 25 views
7

Sto provando a inoltrare tutti i pacchetti TCP in arrivo a più indirizzi IP.Clonazione e inoltro di pacchetti a più indirizzi IP

Setup:

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

voglio B, C e D di ricevere (sulla porta 8000) tutti i pacchetti in ingresso sulla porta 12345 di A. Idealmente volevo A per farlo.

mi possono inoltrare ad una macchina con questa regola su A:

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

Posso anche clonare il pacchetto utilizzando l'opzione TEE:

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

Finora tutto è a posto. Il problema è che C riceverà il pacchetto con l'IP di destinazione di B e non C. Inoltre, non so come posso inoltrare a D e/o altre destinazioni.

Come si può fare A, con le regole di iptables, inviare tutti i pacchetti in ingresso sulla porta 12345 a tutte le altre macchine (B, C e D) alla porta 8000?

risposta

0

devi usare POSTROUTING:

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

, ma è necessario trovare un modo per differenziare quale pacchetto è per B o C altrimenti saranno tutti arrivano con l'IP di C. Dovrebbe essere fatto con l'interfaccia se hai un'interfaccia diversa; Suppongo che sia il caso come si cambia il gateway in modo, qualcosa di simile:

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

in modo che solo i pacchetti in uscita al eth3 di interfaccia, l'imaging è il percorso di routing a C, avrà il cambiamento IP di destinazione a C ip.