java - 使用 java 获取 NAT 网关或代理后面的 SSL 客户端的主机名

标签 java nat

我有一个用 java 编写的 2 路 SSL 客户端和服务器。问题是我的服务器需要能够找到客户端的主机名,并且该客户端位于 NAT 网关或代理后面。我努力了: clientSocket.getRemoteSocketAddress(), clientSocket.getInetAddress().getCanonicalHostName(), clientSocket.getInetAddress().getHostAddress(),

其中 clientSocket 是 SSLSocket 类型,它们都不起作用,它们只是给了我一个公共(public) IP 地址。有没有办法让我获得连接到服务器的客户端的实际主机名?

最佳答案

不是来自套接字。如果远程主机位于 NAT 防火墙后面,那么根据定义,您将看不到其主机名和 IP 地址。您只能看到公共(public) IP 和主机名。

但是,您可以在远程端执行 hostname 命令,并通过 SSh 连接将输出传输回管道。您获取的数据仅与远程主机的配置一样好。无法保证您返回的内容与其内部 DNS 主机名或其他任何内容相匹配。

关于java - 使用 java 获取 NAT 网关或代理后面的 SSL 客户端的主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10796201/

相关文章:

java - 何时使用 gradle.properties 与 settings.gradle?

java - 使用 Angular js 显示图像

macos - Mac Sierra 上的 VMWare Fusion : vmnet1 and vmnet8 not showing up after install Fusion 8. x 或 10.x

linux - 何时使用 TCP 打洞技术以及为什么使用它?

java - 使用短信打开我的移动 Java 程序,收件箱中没有短信

java - 在 java 中添加对 windows 任务栏的贡献 - 类似于笔记本电脑电池小部件

java - Ice4j:测试 IcePseudoTcp - 需要 STUN 服务器吗?

corba - 如何在 NAT 后面实现 CORBA 客户端

java - 找不到 Maven Webjars