Linux (2.6.x) RPDB (Routing Policy DB) を使用して、以下に示すように、目的のソースの専用ルーティング テーブルを設定するソース アドレス ベースのルーティングを実装しています。
- 0: すべてのルックアップ ローカルから
- 32765: ソース IP アドレス ルックアップ テーブル ID から
- 32766: すべてのルックアップ メインから
- 32767: すべてのルックアップのデフォルトから
さらに、アプリケーションは raw ソケットを使用して ICMP エコー メッセージを生成します。問題は、'IP_HDRINCL' ソケット オプションが '1' に設定され、アプリケーションが送信元 IP アドレスと共に IP ヘッダー全体を構築すると、対応するルーティング テーブルがヒットせず、代わりにメイン ルーティング テーブルにヒットすることです。
ただし、IP_HDRINCL ソケット オプションを設定しないようにアプリケーションを変更し、raw ソケットに明示的にバインドしてソース アドレスを指定すると、目的のルーティング テーブルに正しくヒットします。
RPDB のソースベースのルーティング機能を利用できるようにするには、ソケットにバインドする必要があるようなものですか?
前もって感謝します!!