调了一个十分神奇的DHCP协议/DNS"兼容性"问题(?)
本帖最后由 BetaHT 于 2023-12-17 19:37 编辑前导思考:
在我的理解里,DHCP会通告DNS地址
可是经常看到的DHCP设置里,DNS配置框都有一个以上,那么,设备是怎么使用多个DNS的呢?
问题表现:
一台三星手机,使用wifi时无法打开内网的群晖,奇怪啊,昨天还能打开的。
这台手机经常出这问题,不是一定发生的。每次出这问题都想把手机扔进炉子。
而且还有其他wifi下的问题,比如曾在版上问过,这手机wifi下经常刷不出JD APP的价格和商品详情。
内网网络结构
排查过程:
1、检查确认服务没倒
2、掏出另一台手机,加入内网,是能打开群晖的。
3、用PC,静态IP,是能访问的,DHCP也能访问。
4、三星手机adb调试,ping内网域名,发现返回IP是外网地址。但我在dns上设置过内网地址重写
5、PC ping ip,确认重写是生效的。
6、三星手机静态IP设置,此时静态IP地址各设置会自动填写上,网关、dns1与dns2与我在router上dhcp处设置的一样
即dns1是内网,dns2设的223.5.5.5
7、用另一台手机查看,静态IP设置,发现dns1是同我在dhcp处设置的,但dns2是空的。。。。
猜测:难道三星手机里使用了第二个dns? 为什么dns1不生效?
验证:
1、router里将dns2清空,重启路由,重新连接,问题解除。
总结:
1、如果要用自己的DNS,不要在DHCP上配置多个DNS。不同设备使用多个DNS的方法可能不一样,这反而让问题变的更加令人困惑。如果需要多DNS,可以在你的DNS上配置多个上游DNS即可。
未结事项:
1、为什么三星手机使用了第二个dns? 为什么dns1不生效?为什么另一手机却不会这样?是不是只能理解为对不同设备对DNS使用的“具体实现”的差异?
2、这手机wifi下时常刷不出JD APP的价格和商品详情和这问题有关吗? 不同操作系统调用DNS的方法不一样,有的并行,有的轮询,有的只用第一个 直接DHCP获取吧,,,否则要配置IP,子网掩码,网关和DNS。。。 有些是只用第一个,有些是并行,不过抢答技术已经很成熟了,出现什么情况都有可能 楼主的科学上网结构太乱了,导致dns分流,ip分流各种问题。
直接用openwrt做主路由,pw做科学,省心省事 做2个完全一样的MOSDNS 。。。然后。。自己抢去吧... tedaz 发表于 2023-12-18 08:08
楼主的科学上网结构太乱了,导致dns分流,ip分流各种问题。
直接用openwrt做主路由,pw做科学,省心省事 ...
没使用科学上网,使用单臂路由是因为已有的路由器太破了,这里也没有分流的问题。其实我是简单将dhcp网关dns作了分离。只是没想到原来对这一套的理解还是有些不完整。 BetaHT 发表于 2023-12-18 08:51
没使用科学上网,使用单臂路由是因为已有的路由器太破了,这里也没有分流的问题。其实我是简单将dhcp网 ...
不是这么玩分离的。用一个路由器搞定一切,这些奇怪的问题就没有了。
单臂和旁路都是不得已的方案,不是正路 tedaz 发表于 2023-12-18 09:01
不是这么玩分离的。用一个路由器搞定一切,这些奇怪的问题就没有了。
单臂和旁路都是不得已的方案,不是 ...
你这说的挺奇怪的。否定了一堆,又说不出道理。 搭车问一下
能不能做到?
A网站调用B dns
C网站调用D dns
分别调用 我今天专门试了一下配置从dhcp下发两个dns的情况。结果就是,windows 10,11,server 2022,iphone 13/14,三星A5都是默认使用第一个dns。如果第一个dns不通,那么会回落使用第二个dns。此时如果第一个dns重新上线,则立刻使用第一个dns。因此,我想你的问题可能是由于网关设置有问题,导致三星手机无法一直跟第一个dns保持通信,从而回落到第二个dns,又或者三星手机系统可能会自己判断dns,先返回快的那一个dns。要想解决这个问题,我想还是内网中使用一个dns比较好 从地狱到天堂 发表于 2023-12-18 16:47
搭车问一下
能不能做到?
A网站调用B dns
smartdns可以做到。根据分流列表选择不同的dns summerq 发表于 2023-12-18 17:20
我今天专门试了一下配置从dhcp下发两个dns的情况。结果就是,windows 10,11,server 2022,iphone 13/14, ...
我网关设置没问题,因为我还试过手工在三星上设两个dns的情况,同样的结果。
我猜三星有缓存优先的设计。
但不论如何,对于自建的情况,最优做法是只设一个DNS,并在自己DNS里做其他处理。 jiangyang123 发表于 2023-12-18 17:18
应该是可以的装个adguard home试试
谢谢.我试试 summerq 发表于 2023-12-18 17:21
smartdns可以做到。根据分流列表选择不同的dns
好的.我试试.谢谢 ipv6的问题。你把v6关了包好。op始终解决不了ipv6。 zhao137314 发表于 2023-12-17 19:42
不同操作系统调用DNS的方法不一样,有的并行,有的轮询,有的只用第一个
[困惑]其实我一直困惑与ipv6的dns。
比如1.1.1.1能返回ipv6的IP。那究竟ipv6和v4一起开各种os是怎么操作dns的呢? 本帖最后由 冰湖小生 于 2024-1-22 13:35 编辑
你这个问题其实没那么复杂。内网环境内,DHCP不需要下发多个DNS服务器,如果是网关同时兼任DNS,那直接给一个网关IP就足够了。然后在网关上设置多个DNS互为备份,同时网关设置静态DNS,方便内网内域名访问。
这样的逻辑下,局域网内设备收到DHCP下发的DNS为网关,设备把域名发给网关DNS,然后再由网关负责解析给出实际IP,而且此时一个公网DNS有故障了,还会自动更换备份DNS。另外,预先设置的静态DNS优先级高于动态。
以上是一个例子,网关也可以是一台专门的DNS。 weizhen199 发表于 2024-1-22 13:11
其实我一直困惑与ipv6的dns。
比如1.1.1.1能返回ipv6的IP。那究竟ipv6和v4一起开各种os是怎么操作dns的呢 ...
dns是问答机制,dns server能回答什么和dns server部署在什么ip下没关系。
你可以问A记录(要求回答ipv4地址)也可以问AAAA记录(要求回答ipv6地址)也可以两个一起问。
dns server 就回答你问的问题,如果查到了就回答对应的ip。
对操作系统来说,只配了v4,在dns请求的时候就只会询问A记录,如果是双栈,就A记录和AAAA记录一起问,DNS回答什么就调用什么。 zmcity 发表于 2024-1-22 13:43
dns是问答机制,dns server能回答什么和dns server部署在什么ip下没关系。
你可以问A记录(要求回答ipv4 ...
那一起问的话,也是遵循抢答机制嘛? weizhen199 发表于 2024-1-23 13:28
那一起问的话,也是遵循抢答机制嘛?
在一个请求里问两个问题,那么服务端应该在一个回答里回答两个问题。
所以不存在抢答。 本帖最后由 weizhen199 于 2024-1-23 16:43 编辑
zmcity 发表于 2024-1-23 15:05
在一个请求里问两个问题,那么服务端应该在一个回答里回答两个问题。
所以不存在抢答。 ...
假设你启用了ipv4和v6,你访问了一个domain
你ipv4DNS回给了你A和AAAA
你ipv6的DNS也回答了你A和AAAA
究竟用啥呢? weizhen199 发表于 2024-1-23 16:41
假设你启用了ipv4和v6,你访问了一个domain
你ipv4DNS回给了你A和AAAA
你ipv6的DNS也回答了你A和AAAA
用先到的。 zmcity 发表于 2024-1-24 08:13
用先到的。
感谢回答,
还有,这[震惊]似乎不就是抢答嘛 weizhen199 发表于 2024-1-24 13:12
感谢回答,
还有,这似乎不就是抢答嘛
请求A DNS server,但是被中间人Z捕获,由Z返回一个DNS answer,这叫抢答。
并发访问A和B Dns server,A的Answer优先抵达,用A的Dns answer,这是正常的并发优化DNS交互。 zmcity 发表于 2024-1-24 13:29
请求A DNS server,但是被中间人Z捕获,由Z返回一个DNS answer,这叫抢答。
并发访问A和B Dns server,A ...
成,规范说了算
页:
[1]