Skip to content

查询域名真实 IP 的方法

当本地 DNS 被 Clash Verge 等代理软件劫持时,需要通过其他渠道获取域名的真实 IP。

方法 1:通过代理查询 Google DNS API(推荐)

Clash 代理会拦截本地 DNS 请求,但可以通过代理本身访问 Google DNS API 获取真实结果。

基本命令

bash
curl -s -x "http://127.0.0.1:7897" "https://dns.google/resolve?name=域名&type=A"

示例

bash
# 查询 smith.langchain.com
curl -s -x "http://127.0.0.1:7897" "https://dns.google/resolve?name=smith.langchain.com&type=A"

只提取 IP 地址

bash
curl -s -x "http://127.0.0.1:7897" "https://dns.google/resolve?name=smith.langchain.com&type=A" | python3 -c "import sys,json; [print(a['data']) for a in json.load(sys.stdin).get('Answer',[]) if a.get('type')==1]"

输出说明

返回结果中 Answer 数组的 data 字段就是 IP 地址:

json
{
  "Status": 0,
  "Answer": [
    {
      "name": "smith.langchain.com.",
      "type": 1,
      "TTL": 3600,
      "data": "34.8.121.39"
    }
  ]
}

注意

  • type: 1 表示 A 记录(IPv4 地址)
  • type: 5 表示 CNAME 记录(别名),需要继续查找对应的 A 记录

方法 2:在线 DNS 查询工具

通过浏览器访问以下网站查询:

方法 3:手机流量网络

如果电脑上所有 DNS 都被代理拦截:

  1. 手机关闭 WiFi,使用 4G/5G 流量
  2. 访问在线 DNS 工具查询
  3. 或用手机终端执行 nslookup 域名

常见问题

为什么本地 nslookup 返回 127.0.0.1?

Clash Verge 等代理软件使用 fake-ip 模式,会把域名解析为本地回环地址。需要通过不被代理拦截的渠道查询真实 DNS。

获取 IP 后如何解决访问问题?

在 Clash Verge 的配置中添加 hosts 映射:

yaml
hosts:
  "example.com": 1.2.3.4
  "api.example.com": 5.6.7.8

保存后重载配置即可。