You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何实现IP地址转换为对应域名(非主机名)

Java中IP地址转域名相关问题说明与解决方案

反向解析结果不符合预期的根本原因

调用InetAddress相关API拿到bom12s21-in-f14.1e100.net而非google.com,是DNS协议本身的设计决定的,和代码写法无关:

  • 正向解析是「域名→IP」的映射,同一个IP可以被无数个域名做正向解析指向,比如谷歌旗下各站点、同CDN节点承载的其他业务域名,都可能解析到142.251.42.78这个地址。
  • 反向解析是「IP→域名」的PTR记录查询,也就是getHostName()、getCanonicalHostName()的底层实现,一个IP通常只会配置1条PTR记录,指向服务方给节点分配的内部主机名,你拿到的1e100.net后缀域名就是谷歌给该CDN节点配置的合法PTR记录,不存在通用方法能通过IP反向查出所有正向指向它的公网域名。

接口请求报错的解决方案

遇到的两个请求错误分别对应不同原因,可按如下方式处理:

  • 8080端口连接超时:谷歌公开HTTP/HTTPS服务不会监听8080端口,该端口无服务响应,访问对应服务请使用80(HTTP)、443(HTTPS)端口。
  • 443端口SSL证书校验失败:HTTPS握手时会校验证书绑定的域名与请求地址是否匹配,直接用IP发起请求时,服务器返回的证书未将IP写入主题备用名称列表,必然校验失败。正确的做法是请求IP时携带Host请求头指定目标域名,测试阶段可临时关闭主机名校验,示例代码如下:
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.HttpClients;
import org.springframework.http.*;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

public class IpRequestTest {
    public static void main(String[] args) {
        // 测试用:关闭SSL主机名校验,生产环境请配置合规信任库,不要使用该配置
        HttpClient httpClient = HttpClients.custom()
                .setSSLHostnameVerifier(new NoopHostnameVerifier())
                .build();
        RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory(httpClient));

        HttpHeaders headers = new HttpHeaders();
        // 明确指定目标域名的Host头
        headers.set("Host", "google.com");
        HttpEntity<String> requestEntity = new HttpEntity<>(headers);

        try {
            ResponseEntity<String> response = restTemplate.exchange(
                    "https://142.251.42.78:443",
                    HttpMethod.GET,
                    requestEntity,
                    String.class
            );
            System.out.println("响应状态:" + response.getStatusCode());
        } catch (Exception e) {
            System.out.println("请求错误:" + e.getMessage());
        }
    }
}

生产环境直接使用目标域名发起请求即可,不需要手动解析IP再构造请求,能自然规避证书校验、Host匹配类问题。

关于“通过IP获取对应公网域名”的补充说明

DNS体系本身不存储所有正向指向某IP的域名列表,没有公开的通用接口可以实现该需求:

  • 如果是内部业务场景,可提前批量做正向解析,自行维护IP-域名的映射关系表,查询时做匹配即可。
  • 公网场景下只能通过被动DNS数据库查询历史上解析到该IP的所有域名,这类服务大多为商业付费服务,数据存在一定延迟。

内容的提问来源于stack exchange,提问作者Satya Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:30:05