1

私はJavaで書かれた双方向SSLクライアントとサーバーを持っています。問題は、サーバーがクライアントのホスト名を検出できる必要があり、そのクライアントがNATゲートウェイまたはプロキシの背後にあることです。私が試したのは、clientSocket.getRemoteSocketAddress()、clientSocket.getInetAddress()。getCanonicalHostName()、clientSocket.getInetAddress()。getHostAddress()、

clientSocketのタイプはSSLSocketであり、いずれも機能しないため、パブリックIPアドレスが提供されるだけです。サーバーに接続しているクライアントの実際のホスト名を取得する方法はありますか?

4

1 に答える 1

1

ソケットからではありません。リモートホストがNATファイアウォールの背後にある場合、定義上、そのホスト名とIPアドレスは表示されません。表示されるのはパブリックIPとホスト名だけです。

ただし、リモート側でコマンドを実行しhostname、出力をSSh接続を介してパイプで戻すことはできます。返されるデータは、リモートホストの構成と同じくらい良いものになります。返されるものが内部DNSホスト名または他のものと一致するという保証はありません。

于 2012-05-29T09:20:45.790 に答える