1

我有一个用 java 编写的 2 路 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 回答