2011-07-12 8 views
0

今、Linuxシステムで公開されている単一の開発者に多くのipsをエイリアスする状況があります。このデベロッパーはethXと言うことができます。1つのethデベロッパーで多くのipsを使用している場合、ポートは1つのethまたは1つのipで共有できますか?

今ethXでは、サブネットから多くのipsを追加します。

問題:

それはポート範囲がethxと上のすべてのIPSのために共有されていることが表示されます。その意味: を私は 5552 ethxとのIP x.y.a.bを追加し、使用ポートを使用する場合、今私はethxとのIP y.x.b.aを追加し、5552を使用するようにしてください - >これは

を行うことができない、誰もがこれを確認することはできますか?

添加がIP2のutilsの使用して行う(腹腔ADDR XXXXのDEVのXXXXを追加)される等

答えて

0

TCP接続は、タプル(インタフェース、送信元アドレス、送信元ポート、宛先アドレス、DESTポート)によって識別されるので、無、ポートは共有されません。

useはどういう意味ですか? bind()を意味しますか?あなたは異なるアドレスの同じポートにbind()することができるはずですが、SO_REUSEADDRを使用する必要があるかもしれませんが、詳細は覚えていません。

+0

私の場合を見てください:私は2つのnicsを持つ1つのPCを使用しています。それぞれeth1とeth1というeth0とeth1として排除されています。だから、私はエイリアスips {x.y.0.1/16からx.y.255.254/16}に変わったのですか?これらは〜64kアドレスです。今すぐリモートサーバー(rIP:rPort)に接続しようとすると、〜28kのconnect()がエラーをスローした後、ncを使用して手動で接続すると、アドレスにバインドできないというメッセージが表示されます。予想される動作は、すべて64kが同じrIP:rportサーバーアドレスに接続しているはずです。しかし、それは起こっていない、私は好奇心がなぜですか? 1つのポイントは、このPC上のepehemeralポート範囲です〜28k – nikhilelite

+0

_preferred srcアドレス_として知られているものがあります。 'netstat -tan'を実行します。すべての接続が同じソースIPを使用していますか?その場合は、 'connect()'を実行する前に、手動で 'bind()'して空のIP:portにする必要があります。 – ninjalj

+0

私は既に接続する前にそのバインドを行います。エイリアスが完了した後、私はその新しいIPをデバイスにバインドしてから接続します。私はそれがip_local_port_rangeであることが私を制限していることをかなり確信しています。なぜなら私はそれを増やしてから今は50kまで増やすことができるからです。しかし、私はまだ何を作るのか分かりません... – nikhilelite

関連する問題