找回密码
 加入我们
搜索
      
查看: 5412|回复: 26

[网络] 调了一个十分神奇的DHCP协议/DNS"兼容性"问题(?)

[复制链接]
发表于 2023-12-17 19:35 | 显示全部楼层 |阅读模式
本帖最后由 BetaHT 于 2023-12-17 19:37 编辑

前导思考:
在我的理解里,DHCP会通告DNS地址
可是经常看到的DHCP设置里,DNS配置框都有一个以上,那么,设备是怎么使用多个DNS的呢?

问题表现:
一台三星手机,使用wifi时无法打开内网的群晖,奇怪啊,昨天还能打开的。
这台手机经常出这问题,不是一定发生的。每次出这问题都想把手机扔进炉子。
而且还有其他wifi下的问题,比如曾在版上问过,这手机wifi下经常刷不出JD APP的价格和商品详情。

内网网络结构
Screenshot 2023-12-17 191643.png

排查过程:
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的价格和商品详情和这问题有关吗?
发表于 2023-12-17 19:42 | 显示全部楼层
不同操作系统调用DNS的方法不一样,有的并行,有的轮询,有的只用第一个
发表于 2023-12-17 19:45 | 显示全部楼层
直接DHCP获取吧,,,否则要配置IP,子网掩码,网关和DNS。。。
发表于 2023-12-17 19:46 | 显示全部楼层
有些是只用第一个,有些是并行,不过抢答技术已经很成熟了,出现什么情况都有可能
发表于 2023-12-18 08:08 来自手机 | 显示全部楼层
楼主的科学上网结构太乱了,导致dns分流,ip分流各种问题。
直接用openwrt做主路由,pw做科学,省心省事
发表于 2023-12-18 08:18 | 显示全部楼层
做2个完全一样的MOSDNS 。。。然后。。自己抢去吧...
 楼主| 发表于 2023-12-18 08:51 | 显示全部楼层
tedaz 发表于 2023-12-18 08:08
楼主的科学上网结构太乱了,导致dns分流,ip分流各种问题。
直接用openwrt做主路由,pw做科学,省心省事 ...

没使用科学上网,使用单臂路由是因为已有的路由器太破了,这里也没有分流的问题。其实我是简单将dhcp  网关  dns作了分离。只是没想到原来对这一套的理解还是有些不完整。
发表于 2023-12-18 09:01 来自手机 | 显示全部楼层
BetaHT 发表于 2023-12-18 08:51
没使用科学上网,使用单臂路由是因为已有的路由器太破了,这里也没有分流的问题。其实我是简单将dhcp  网 ...

不是这么玩分离的。用一个路由器搞定一切,这些奇怪的问题就没有了。
单臂和旁路都是不得已的方案,不是正路
 楼主| 发表于 2023-12-18 09:23 | 显示全部楼层
tedaz 发表于 2023-12-18 09:01
不是这么玩分离的。用一个路由器搞定一切,这些奇怪的问题就没有了。
单臂和旁路都是不得已的方案,不是 ...

你这说的挺奇怪的。否定了一堆,又说不出道理。
发表于 2023-12-18 16:47 | 显示全部楼层
搭车问一下
能不能做到?
A网站调用B dns
C网站调用D dns

分别调用
发表于 2023-12-18 17:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2023-12-18 17:20 来自手机 | 显示全部楼层
我今天专门试了一下配置从dhcp下发两个dns的情况。结果就是,windows 10,11,server 2022,iphone 13/14,三星A5都是默认使用第一个dns。如果第一个dns不通,那么会回落使用第二个dns。此时如果第一个dns重新上线,则立刻使用第一个dns。因此,我想你的问题可能是由于网关设置有问题,导致三星手机无法一直跟第一个dns保持通信,从而回落到第二个dns,又或者三星手机系统可能会自己判断dns,先返回快的那一个dns。要想解决这个问题,我想还是内网中使用一个dns比较好
发表于 2023-12-18 17:21 来自手机 | 显示全部楼层
从地狱到天堂 发表于 2023-12-18 16:47
搭车问一下
能不能做到?
A网站调用B dns

smartdns可以做到。根据分流列表选择不同的dns
 楼主| 发表于 2023-12-18 17:24 | 显示全部楼层
summerq 发表于 2023-12-18 17:20
我今天专门试了一下配置从dhcp下发两个dns的情况。结果就是,windows 10,11,server 2022,iphone 13/14, ...

我网关设置没问题,因为我还试过手工在三星上设两个dns的情况,同样的结果。
我猜三星有缓存优先的设计。
但不论如何,对于自建的情况,最优做法是只设一个DNS,并在自己DNS里做其他处理。
发表于 2023-12-18 19:32 | 显示全部楼层
jiangyang123 发表于 2023-12-18 17:18
应该是可以的  装个  adguard home试试

谢谢.我试试
发表于 2023-12-18 19:33 | 显示全部楼层
summerq 发表于 2023-12-18 17:21
smartdns可以做到。根据分流列表选择不同的dns

好的.我试试.谢谢
发表于 2024-1-22 11:45 | 显示全部楼层
ipv6的问题。你把v6关了包好。op始终解决不了ipv6。
发表于 2024-1-22 13:11 | 显示全部楼层
zhao137314 发表于 2023-12-17 19:42
不同操作系统调用DNS的方法不一样,有的并行,有的轮询,有的只用第一个

其实我一直困惑与ipv6的dns。
比如1.1.1.1能返回ipv6的IP。那究竟ipv6和v4一起开各种os是怎么操作dns的呢?
发表于 2024-1-22 13:33 | 显示全部楼层
本帖最后由 冰湖小生 于 2024-1-22 13:35 编辑

你这个问题其实没那么复杂。内网环境内,DHCP不需要下发多个DNS服务器,如果是网关同时兼任DNS,那直接给一个网关IP就足够了。然后在网关上设置多个DNS互为备份,同时网关设置静态DNS,方便内网内域名访问。

这样的逻辑下,局域网内设备收到DHCP下发的DNS为网关,设备把域名发给网关DNS,然后再由网关负责解析给出实际IP,而且此时一个公网DNS有故障了,还会自动更换备份DNS。另外,预先设置的静态DNS优先级高于动态。

以上是一个例子,网关也可以是一台专门的DNS。
发表于 2024-1-22 13:43 | 显示全部楼层
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回答什么就调用什么。
发表于 2024-1-23 13:28 | 显示全部楼层
zmcity 发表于 2024-1-22 13:43
dns是问答机制,dns server能回答什么和dns server部署在什么ip下没关系。
你可以问A记录(要求回答ipv4 ...

那一起问的话,也是遵循抢答机制嘛?
发表于 2024-1-23 15:05 | 显示全部楼层
weizhen199 发表于 2024-1-23 13:28
那一起问的话,也是遵循抢答机制嘛?

在一个请求里问两个问题,那么服务端应该在一个回答里回答两个问题。
所以不存在抢答。
发表于 2024-1-23 16:41 | 显示全部楼层
本帖最后由 weizhen199 于 2024-1-23 16:43 编辑
zmcity 发表于 2024-1-23 15:05
在一个请求里问两个问题,那么服务端应该在一个回答里回答两个问题。
所以不存在抢答。 ...


假设你启用了ipv4和v6,你访问了一个domain
你ipv4DNS回给了你A和AAAA
你ipv6的DNS也回答了你A和AAAA

究竟用啥呢?
发表于 2024-1-24 08:13 | 显示全部楼层
weizhen199 发表于 2024-1-23 16:41
假设你启用了ipv4和v6,你访问了一个domain
你ipv4DNS回给了你A和AAAA
你ipv6的DNS也回答了你A和AAAA

用先到的。
发表于 2024-1-24 13:12 | 显示全部楼层

感谢回答,
还有,这似乎不就是抢答嘛
发表于 2024-1-24 13:29 | 显示全部楼层
weizhen199 发表于 2024-1-24 13:12
感谢回答,
还有,这似乎不就是抢答嘛

请求A DNS server,但是被中间人Z捕获,由Z返回一个DNS answer,这叫抢答。
并发访问A和B Dns server,A的Answer优先抵达,用A的Dns answer,这是正常的并发优化DNS交互。
发表于 2024-1-24 15:25 | 显示全部楼层
zmcity 发表于 2024-1-24 13:29
请求A DNS server,但是被中间人Z捕获,由Z返回一个DNS answer,这叫抢答。
并发访问A和B Dns server,A ...

成,规范说了算
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-4-26 13:50 , Processed in 0.013835 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表