8

すべての着信 TCP パケットを複数の IP アドレスに転送しようとしています。

設定:

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

B、C、および D が (ポート 8000 で) A のポート 12345 ですべての着信パケットを受信するようにします。理想的には、Aにこれをやってもらいたかったのです。

A で次のルールを使用して、1 台のマシンに転送できます。

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

TEE オプションを使用してパケットのクローンを作成することもできます。

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

これまでのところ、すべて問題ありません。問題は、C が C ではなく B の宛先 IP を持つパケットを受信することです。さらに、D やその他の宛先に転送する方法がわかりません。

iptables ルールを使用して、ポート 12345 のすべての着信パケットを他のすべてのマシン (B、C、および D) のポート 8000 に送信するにはどうすればよいですか?

4

1 に答える 1

0

POSTROUTING を使用する必要があります:

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

しかし、どのパケットが B 向けか C 向けかを区別する方法を見つける必要があります。それ以外の場合、それらはすべて C の IP で到着します。異なるインターフェイスがある場合は、インターフェイスで行う必要があります。ゲートウェイを変更すると、次のようになると思います。

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

そのため、インターフェイス eth3 に送信されるパケットのみが、C へのルーティング パスであると見なされ、宛先 IP が C ip に変更されます。

于 2014-12-10T09:14:15.800 に答える