1

netfilter REDIRECT-Target をいじっているだけです。「--to-ports」(複数)を使用すると、宛先ポートがどのように変更されるのか疑問に思っています。

iptables -I PREROUTING -t nat -i test -p TCP --dport 2800 -j REDIRECT --to-ports 2900-2905

初戦・安打2800→2900?
2試合目/安打2800→2901?
3試合目/ヒット 2800 -> 2902 ?

私のテストでは、使用された唯一のポートは最初の 2900 でした。この場合、範囲引数「--to-ports」は私にとって混乱を招きます。元のポートは範囲から使用されているポートに影響しますか? 「--to-ports」で範囲を指定する場合、どのポートが使用されますか? 「--to-port」も機能しますが、man-page には記載されていません。

ありがとう。

4

1 に答える 1

1

netfilterポートのステータスを追跡できないため、ラウンドロビンを実装することはできません。

このパラメーターは、ポートの競合の問題を解決することを目的としています。たとえば、次のルールを確認してください。

iptables -t nat -A PREROUTING -p tcp --dport 1000:2000 -j REDIRECT --to-ports 2900

クライアントが 2 つの接続を確立したい場合

client:3000 <---> server:1000
client:3000 <---> server:1001

クライアントはそのポートを再利用できるため、これが可能です。サーバーが両方の接続をポート 2900 にリダイレクトすると問題が発生し、2 つの接続が同一になります。

したがって、この問題を回避するには、サーバーに複数の冗長ポートが必要です。ただし、クライアントがそのポートを再利用しない場合、これは発生しません。

于 2013-03-14T14:59:37.617 に答える