3

gethostbyaddr() に 192.168.0.4 などの NAT で生成された IP アドレスを検索するように依頼した場合、それが機能すると期待できますか?

背景: ネットワーク環境向けの制御コードを自宅でテストしています。時々、このコードは gethostbyaddr() 呼び出しを実行して、メッセージを送信したマシンの詳細を取得します。アドレスはローカル マシンのアドレスであることが多く、現在のマシン自体のアドレスである場合もあります。通常、これで問題は発生しません。しかし、古い Netcomm ADSL ルーターを Netgear ルーターに置き換えたところ、ローカル NAT 環境内のマシンに対する gethostbyaddr() 呼び出しが、a) 30 秒後にタイムアウトになり、b) エラーを示すために NULL が返されることがわかりました。実験的に古いルーターに戻ってみると、同じ呼び出しも失敗して NULL が返されることがわかりましたが、すぐに失敗します。コードはエラー リターンを処理できます (これが、私がこれまで気付かなかった理由です) が、新しい 30 秒のタイムアウトは非常に厄介です。明らかに、この問題を回避するコーディング方法は多数ありますが、ほとんどの場合、アドレスが 192.168 アドレスであるケースをトラップし、gethostbyaddr() 呼び出しを回避する必要があります。私の質問は、gethostbyaddr() 呼び出しは NAT 環境で常に失敗するのか、それとも機能する場合があるのか​​ということです。(その場合、それらを避けたくありません。)または、ルーターを適切にセットアップしていないだけですか?ちなみに、私はこれを OS X で実行していますが、Snow Leopard と Lion の両方で同じ動作が見られます。) それとも、ルーターを正しく設定していないだけですか? ちなみに、私はこれを OS X で実行していますが、Snow Leopard と Lion の両方で同じ動作が見られます。) それとも、ルーターを正しく設定していないだけですか? ちなみに、私はこれを OS X で実行していますが、Snow Leopard と Lion の両方で同じ動作が見られます。

4

1 に答える 1

1

プライベート DNS をセットアップするか、ホスト ファイルに追加しない限り、それらは機能しません。Sendmail は、これに関する優れたドキュメントを提供しています。

http://www.sendmail.com/sm/open_source/tips/private_dns/

ルート ネーム サーバーに到達する呼び出しはブラックホール化されます。

一部のルーターは、すでに逆引き DNS を提供している場合があります。そこにすべてのホストを配置する必要はありません。リクエストが転送されないように、アドレス空間に対して権限を持っているだけです。

于 2013-04-24T03:57:46.230 に答える