URLを使用するサーバに対応するIPアドレスを取得するには、getaddrinfo()を使用します。これは基本的にDNSクエリをDNSサーバに送信します。特定の発信インターフェイスからそのクエリを送信できるようにしたい。基本的には、私はDNSクエリを送信することができる複数のインターフェイスを持っています。現在、getaddrinfo()は、DNSクエリを送信するためにどのインタフェースを使用すべきかを指示する方法を持っていません。 getaddrinfo()ルーチンを変更する唯一のオプションはありますか?誰もがこれを達成するための他の方法を知っていますか?getaddrinfoを特定のインタフェース(送信元IP)にバインド
答えて
特定のIPアドレスにアクセスするために選択されたインターフェイスは、ルーティングテーブルによって指示されます。
おそらくDNSサーバーのIPを持っているので、どのアプリケーションが要求を送信しているかにかかわらず、ルーティングテーブルがそのIPアドレス用に使用するインターフェイスによってアクセスされます。
ルーティングテーブルを変更して、特定のインターフェイスでトラフィックを強制する必要があります。固定インターフェイスを使用するのがDNSサーバーだけの場合、必要なインターフェイスのルーティングテーブルにその特定のIPのルートを追加します。
Linuxでは、ip route
コマンドラインツールを使用してルーティングテーブルを変更できます。
ありがとうございました。はい、私の場合は、複数のインターフェース(主に2つ以上)にわたるマルチパスのデフォルトルートがあります。これらのインターフェイスのそれぞれからDNSクエリを送信したいのですが、インターフェイスAとインターフェイスNを使用しているクエリを制御する必要があります。したがって、getaddrinfo()を呼び出すときにどのソースインターフェイスを選択するかを制御する必要があります。私はヒントの引数をチェックしましたが、オプションがあるようには思われません – caliuser
この問題の根本的な問題は、getaddrinfo
がDNSのみで動作し、そのDNSルックアップの詳細を微調整できると思われることです。しかし、これはそうではありません。システム上のすべての名前解決機能を使用します。通常は、hosts
ファイルルックアップを行い、他のものはnsswitch.conf
(通常はDNS)です。これらのDNS以外のルックアップの中には、送信元アドレスのバインディングが意味をなさない可能性があるため、最小公約数分母インターフェイスの一部ではありません。
特定の目的のために、DNS以外の場所からの名前検索の応答を必要としないことが分かっている場合は、代わりにDNS固有の関数を使用できます。 -チューニング。
gethostbyname dual network interfaces, select which one to use
- 1. Poco :: Net :: HTTPSClientSessionを使用して特定の送信元IPアドレスをバインドする方法
- 2. haproxy 1.5特定の送信元IPアドレスshow <NOSRV> 503 SC in haproxy log
- 3. ないIPアドレスの送信元アドレスは
- 4. Google Compute Engineで静的な送信/送信元IPアドレスを設定する
- 5. サイトの特定のIPアドレスにPHPスクリプトを送信する
- 6. 特定のIPとポートにデータを送信する
- 7. Aviネットワーク - コントローラのポートと送信元のIP設定
- 8. Azureロードバランサ - 送信元IPアドレスが悪い
- 9. Cソケットプログラミング:getaddrinfo()とバインドしてデバイスIPサーバーを取得する
- 10. vxWorksの特定のインタフェースにソケットをバインドする方法
- 11. UDPデータを受信する特定のIPアドレスとポートにバインドする
- 12. node.jsでUDPメッセージを送信するときの送信元IPアドレスの変更
- 13. Python proxy - > dansguardian:元のソースIPを送信するには?
- 14. java udp特定のIPアドレスから送信
- 15. azureとTerraformの特定のIPにフォールトドメインをバインドする
- 16. 特定のIPアドレスから電子メールを送信するには?
- 17. 特定のIPアドレスにTServerSocketをバインドする方法
- 18. エンドポイント(特定のIP)をMSXMLリクエストにバインドしますか?
- 19. Glassfishを特定のIPにバインドしますか?
- 20. (#5)Heroku Railsの不正な送信元IPアドレスのエラーAPP
- 21. boost :: asio :: ip :: tcp :: socket - 特定のローカルポートにバインドする方法
- 22. バインド送信ソケット
- 23. SSEを特定のクライアントに送信
- 24. 特定のスレッドにデータを送信
- 25. freeDiameter送信元ポートを指定
- 26. 送信元IPアドレスがブロックされないAWS S3バケットポリシー
- 27. Nagios - インタフェースIPチェックスクリプト
- 28. フラスコsocketio特定のユーザーに送信
- 29. myObjectをTCP/IPで送信
- 30. ソケットの送受信(TCP/IP)
これに記載されているDNS Cライブラリのいくつかの例がありますが、あなたのプログラムコードに扱うべきである何よりもネームリゾルバとネットワークスタック(ルーティング)のより問題のようです。なぜそれは最初の問題でさえ問題になるのですか? –