DNS 服务器得到的 IP 是客户端 IP 还是客户端 DNS 出口 IP?

2019-11-18 19:13:42 +08:00
 yitd
我感觉我瞎折腾了两天
Dnspod 告诉我:
什么是自定义解析?

自定义解析,就是可以自己定义某 IP 段去访问指定的主机服务器。
注:定义的是上网客户 DNS 的出口 IP,即后端 IP ;
后端 DNS 段的获取需要自己收集的;
单个 IP,必须定义上网 DNS 的出口 IP。


就是说 DNS 服务器是获取不到用户 IP 的吧
9766 次点击
所在节点    DNS
12 条回复
testver
2019-11-18 19:36:06 +08:00
dns 服务器取不到用户 ip 的话怎么把解析结果告诉用户呢?
GM
2019-11-18 19:40:25 +08:00
当然是出口 IP。
排除法就知道了,假设我客户端 IP 是 192.168.0.2,DNS 服务器怎么把解析结果发给我?
eastpiger
2019-11-18 19:50:31 +08:00
需要分类讨论,核心问题是你自己到 DNS 服务器之间的通路上是否支持 RFC2671 eDNS ( Extension Mechanisms for DNS )和 RFC7871 edns-client-subnet。

如果不支持上述协议,则 DNS 拿到的是直接沟通他的机器的 ip 地址,即你所说的出口 ip ;
如果均支持上述协议,则 DNS 拿到的是你的 ip ;
如果部分支持上述协议(一般内网内是无需支持的),则 DNS 拿到的是从他开始(一路支持这个协议回溯)的最早那台设备的前一个设备的 ip。

===========

RFC7871 edns-client-subnet 是扩展自 RFC2671 eDNS 的一个协议,允许在 DNS 扩展字段内传输源主机的客户端信息,包括 ip 信息。当一个主机支持 eDNS 时,他会将请求包内的扩展字段传递到下一个节点,当 edns-client-subnet 启用且上游没有相关信息时,该节点将上一个节点试作源,并打包形成客户端信息传递到下一节点。

目前大多数商业路由器均支持上述协议,至少国内联通电信大部分区域都可以用这种方法拿到源地址 ip,这也是为什么很多 DNS 解析服务支持私有线路指定解析,并且可以根据 ip 区分地区和运营商。但是这并不 100%普及,比如教育网内主干节点几乎全都不支持该协议。所以对教育网的定位基本上只能定位到运营商却定位不到地区。
eastpiger
2019-11-18 19:51:02 +08:00
另,前面的经验是我两年前查相关问题学习的,未必 100%准确。
eastpiger
2019-11-18 19:52:04 +08:00
再另,使用内网 ip 的路由器几乎都不会将内网 ip 作为源 ip 传出去,所以 dns 得到的一般至少是个公网 ip 才对。
lc7029
2019-11-18 19:54:58 +08:00
dna 服务器一般是拿到出口的 IP,因为现在的网络几乎都是经过 nat 出去的。
ipv6 拿到的是客户端的 IP
eastpiger
2019-11-18 19:56:44 +08:00
emmm 我觉得我还是要补充一下,前面说的这两个协议只需要主干网路由器支持就可以,不需要你的家用路由器支持,不需要内网的机器支持,一般企业的路由器也不需要支持。这里只需要公网内,你联网出口的上游路由器,传递你的公司 /家庭的出口 ip 即可。

这种效果在教育网很显著。教育网内的主干网都不支持该协议(也可能是某些节点不支持导致没传递好),所以 DNS 解析服务对教育网基本上只能拿到清华的教育网出口 ip 了(教育网出口之后进入商业骨干网接入,就正常多了)。对其内部很难追踪,当然最近几年有没有变化我就不知道了。
tomychen
2019-11-19 12:28:14 +08:00
协议的问题,看一下 RFC 不就很明了了吗
johnjiang85
2019-11-20 18:16:11 +08:00
一般来说权威 DNS 拿到的都是客户端设置的 DNS 的后端出口 IP,除非你使用的递归 DNS 支持 ECS,然而目前绝大部分递归 DNS 都是不支持(少数支持的有 Google 的 8.8.8.8,OpenDNS、我们的 119.29.29.29 等)。

使用以下命令可以获取 DNS 的后端出口 IP 地址

`for i in {1..20};do dig @119.29.29.29 $i.ip.dnspod.net txt +short;done`

如果结果只有一列,则表示指定 DNS 的后端出口 IP 地址;
如果结果有两列,则第一列表示 DNS 的后端出口 IP 地址,第二列表示递归 DNS 向权威 DNS 请求时携带的 ECS IP.
HalloCQ
2019-11-21 09:46:31 +08:00
@johnjiang85 按照你说的方法 发现 oneDNS 117.50.11.11 也是支持 ecs 的?
johnjiang85
2019-11-21 12:00:40 +08:00
@HalloCQ 不是的,oneDNS 是转发到我们的 119.29.29.29 了
HalloCQ
2019-11-22 09:30:39 +08:00
@johnjiang85 嗯,感觉 one 不是很准确,有些域名 020 电信解析到了联通 cdn

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/620785

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX