![Google 公共 DNS 上的 EDNS 客户端子网出现意外结果](https://linux22.com/image/729288/Google%20%E5%85%AC%E5%85%B1%20DNS%20%E4%B8%8A%E7%9A%84%20EDNS%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%AD%90%E7%BD%91%E5%87%BA%E7%8E%B0%E6%84%8F%E5%A4%96%E7%BB%93%E6%9E%9C.png)
我一直在尝试对 EDNS 进行测试。只是为了检查使用 EDNS 扩展时返回的 IP 是否最接近。
但是,如果我使用来自中国的 IP 进行查询,则会返回一个位于美国的 IP。如下所示。
有什么想法吗?
curl -s http://ip-api.com/json/59.155.255.200 | jq
{
"as": "",
"city": "Xinzhuang (Minhang Qu)",
"country": "China",
"countryCode": "CN",
"isp": "zhuyuan road, Shanghai, China",
"lat": 31.0704,
"lon": 121.518,
"org": "zhuyuan road, Shanghai, China",
"query": "59.155.255.200",
"region": "",
"regionName": "Shanghai",
"status": "success",
"timezone": "Asia/Shanghai",
"zip": ""
}
./bin/dig/dig @8.8.8.8 www.google.com +client=59.155.255.200 +short
216.58.208.164
curl -s http://ip-api.com/json/216.58.208.164 | jq
{
"as": "AS15169 Google LLC",
"city": "Mountain View",
"country": "United States",
"countryCode": "US",
"isp": "Google",
"lat": 37.4192,
"lon": -122.0574,
"org": "Google",
"query": "216.58.208.164",
"region": "CA",
"regionName": "California",
"status": "success",
"timezone": "America/Los_Angeles",
"zip": "94043"
}
或者如果有更好的方法来测试从测试 EDNS 返回的 IP 位置,请告诉我。
谢谢,
答案1
EDNS 是一种支持多种不同 DNS 协议扩展的方法。您的问题具体涉及客户端子网选项,而这只是 EDNS 的众多用途之一。
客户端子网选项旨在让递归 DNS 服务器将客户端 IP 地址传达给权威 DNS 服务器,以便权威 DNS 服务器能够使用与客户端往返时间较短的 IP 地址进行响应。
Google 既运营递归 DNS 服务器,也运营权威 DNS 服务器。Google 运营的递归 DNS 服务器被称为 Google 公共 DNS。
Google 在 Google 公共 DNS 和权威服务器上都支持客户端子网选项。因此,当客户端向 Google 公共 DNS 发送查询时,www.google.com
从 Google 公共 DNS 发送到 Google 权威 DNS 服务器的请求将包含客户端子网选项,其中包含客户端的 IP 地址(可能被截断)。
您所做的是将客户端子网选项发送到 Google 公共 DNS。这没有意义,因为这是客户端向递归 DNS 发出的请求,而客户端子网选项并非为此而设。该选项用于从递归 DNS 到权威 DNS 的通信。
如果您将该请求发送到 Google 的权威 DNS 服务器之一,您将得到不同的结果,如下例所示:
$ dig +short +norecurse www.google.com @ns3.google.com
216.58.206.68
$ dig +short +norecurse +subnet=59.155.255.200 www.google.com @ns3.google.com
172.217.25.196
请注意,查询权威服务器时,该选项确实有所不同。(请注意,当引入该选项时,它被+client
短暂地命名,然后被重命名为+subnet
)
如果我们查找该 IP 地址,ip-api.com
我们会发现它被列为日本,我想这更接近您期望看到的。
$ curl http://ip-api.com/json/172.217.161.68
{"as":"AS15169 Google LLC","city":"Chiyoda","country":"Japan","countryCode":"JP","isp":"Google","lat":35.694,"lon":139.754,"org":"Google","query":"172.217.161.68","region":"","regionName":"Tokyo","status":"success","timezone":"Asia/Tokyo","zip":"100-0001"}
因此我们可以推断,ip-api.com
一定有其他数据源,而不仅仅是whois
因为当我使用时whois 172.217.161.68
我得到了这个:
OrgName: Google LLC
OrgId: GOGL
Address: 1600 Amphitheatre Parkway
City: Mountain View
StateProv: CA
PostalCode: 94043
Country: US