2013-02-15 32 views
7

Próbuję przekazać wszystkie przychodzące pakiety TCP na wiele adresów IP.Klonowanie i przekazywanie pakietów na wiele adresów IP

Setup:

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

Chcę B, C i D, aby otrzymać (na porcie 8000) wszystkie pakiety przychodzące na porcie 12345 z . Idealnie chciałbym to zrobić.

mogę przesłać do jednej maszyny tej zasady na:

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

Mogę również sklonować paczkę używając opcji TEE:

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

Jak dotąd wszystko jest w porządku. Problem polega na tym, że C odbierze pakiet z docelowym IP B, a nie C. Co więcej, nie wiem, jak mogę przekazać do D i/lub innych miejsc docelowych.

W jaki sposób ustawić A, z regułami iptables, wysłać wszystkie przychodzące pakiety na porcie 12345 na wszystkie inne maszyny (B, C i D) do portu 8000?

Odpowiedz

0

Musisz użyć POSTROUTING:

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

ale trzeba znaleźć sposób, aby odróżnić, który pakiet jest dla B lub C, jeszcze będą one przybyć z IP C. powinien on być wykonany z interfejs, jeśli masz inny interfejs; Przypuszczam, że to przypadek, jak to zmienić bramę, coś takiego:

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

więc tylko pakietów wychodzących do eth3 interfejsu imaging to ścieżka routingu do C, będzie miał Destination IP zmianę C ip.