2012-03-01 1 views
2

IPエイリアシングを使用すると、複数のIPアドレスを同じインターフェイスに関連付けることができます。私の質問は、どのようにバインドでき、したがって、インターフェイスに関連付けられているすべてのアドレスからデータを受け取ることができますか? INADDR_ANYのようなオプションがありますか?バインドとIPエイリアシング

+0

INADDR_ANYは、すべてのインターフェイスのすべてのIPアドレスにバインドします。いりません。 1つの特定のインターフェイスのすべてのIPアドレスにバインドしたいと思います。 1つのオプションは、インターフェイスに関連付けられたIPアドレスのリストを取得し、それぞれのバインドを個別に呼び出すことです。 – MARK

答えて

2

は常に(2)インターフェースに結合しないが、アドレスそのバインドを覚えています。

各ソケットは、0.0.0.0ポート0であっても、通常、1つのバインディングしか格納しません。着信要求をチェックするときに0.0.0.0、::とポート0がワイルドカードとして扱われます。そのため、非ワイルドカードアドレス用に1つのソケットが必要になります。

実際にインターフェイスバインディングが必要な場合はsetsockopt SO_BINDTODEVICEを参照してください。しかし、これは一般的に、たとえばインターフェイス以外のプログラムでは適切ではありません。受信が許可されていても、異なるインタフェースを介して接触することを禁止するので、tcpdump。たとえば、自分のホストがプライベートLAN上のアドレスとして192.168.0.1を持っている場合、eth1にバインドすると.0.1自体からloに192.168.0.1に接続できなくなります。したがって、デバイス結合は通常望ましくない。

1

setsockoptとSO_BINDTODEVICEを使用して、インターフェイスにバインドしてみます。

関連する問題