什么都不做, 即可以获得最好的网络体验
需要明确, 这里网络质量和网络体验是两个不同的概念. 通信是一个过程, 涉及多个设备, 我们可以称单个设备的上下行表现为网络质量, 而整个端到端的通信表现, 我们可以称为网络体验.
衡量网络质量通常涉及多个指标和方法。以下是一些常见的衡量网络质量的方法和指标:
综合利用这些指标和方法,可以全面地评估网络质量,确定网络性能的优势和改进的空间。 但这些是运营商关注的指标, 对于普通用户, 只需要购买价格合适的路由器即可, 现代路由器都有自动调整网络质量的功能.
首先是可访问性, 能访问是最重要的基础. 因此, 域名解析服务需要满足基础的能力:
其次是 DNS 解析结果的 IP 所能提供服务的网络质量.
互联网服务所能提供的网络质量, 通常强依赖地域, 服务器和客户端在地域上越接近, 则服务质量越好.
许多付费 DNS 解析服务商都支持按地域解析不同 IP, 例如这是阿里云能提供的一部分服务:
( 1 )运营商线路:支持按联通、电信、移动、教育网、鹏博士、广电网智能解析,细分到省份;
( 2 )海外地区线路:支持,细分到大洲、国家;
( 3 )阿里云线路:支持,细分到各个地区;
( 4 )自定义线路:支持自定义 IP 地址范围智能解析;
按区域解析不同 IP 的机制, 意味着不同地域的用户访问同一个域名时, 会得到不同的解析结果, 自然而然的, 优先解析到距离用户更近的服务器, 将会有更好的网络体验.
而优化用户网络体验这件事, 一般都是服务提供商根据用户的真实 IP 地址来做优化. 也就是对多数用户来说, 什么都不做, 即可以获得最好的网络体验.
中文互联网你搜索到的所有资料都会推荐你选择权威 DNS 服务商, 例如阿里云, 腾讯云, Cloudflare, 谷歌等. 这些 DNS 可以满足网络服务的的可访问性, 因为它们全面/正确/及时, 但是, 它们未必会给你解析到最近的服务器 IP.
互联网上大量的资料推荐大企业的 DNS 服务有其历史原因.
曾经我国的 ISP 运营商, 仅靠 DNS 劫持加上 HTTP 的中间人攻击, 就能够实现对用户的流量劫持, 从而实现广告推送. 现如今随着 https 的普及, 这种劫持方式已较为少见, 但部分地区的小区宽带仍然可能存在这种问题. 针对 DNS 劫持问题, 实际上改 DNS IP 无济于事, 因为劫持可以针对 53 端口, 而绝大多数 DNS 请求都是未加密的.
此外, 一些特殊用户希望访问特殊网站, 而部分 DNS 服务商存在 IP 污染问题, 会将特殊网站的域名解析到错误的 IP 地址, 导致无法访问. 而权威 DNS 服务商则较少出现这样问题.
因此, 这里存在三个问题需要考虑:
权威 DNS 服务商可以解决问题 1 , 加密协议(DoT/DoH/QUIC)可以解决问题 2.
想要解决问题 3, 你需要使用回宽带运营商的默认 DNS 服务., 正如本文开头所说, 什么都不做, 即可以获得最好的网络体验.
但如果你是一个有追求的人, 或者特殊用户, 下文将介绍如何配置 AdguardHome 及 Clash 两种工具的配置, 以同时解决这三个问题.
AdguardHome, 以下简称ADG 是一个网络广告拦截与隐私保护软件, 也是一个 DNS 服务. 它支持自定义上游 DNS 服务, 以及自定义 DNS 规则.
ADG 默认的向上游请求 DNS 的方式是负载均衡, 用户可以设置多个上游, ADG将根据历史 DNS 查询加权权重选择其中 DNS 响应最快的上游. 简单说, ADG 会以更高的概率选择更快的 DNS 上游来解析域名, 以较低的概率选择非最优的 DNS 上游.
我们可以选择第三个选项: 最快的 IP 地址.
该选项带来的好处, ADG自行测试上游 DNS 的 IP 解析结果, 将其中延迟最低的 IP 返回给下游客户端. 以下是bilibili的常规解析结果.
你可以看到 IP 非常多, 如果ADG不测试 IP 解析结果, 而将所有 IP 返回给客户端, 那么客户端会做什么?
有的客户端会选择第一个 IP, 有的客户端会选择最后一个 IP, 有的客户端会随机选择一个 IP. 不管是哪种, 都未必是最优的选择.
开启最快的 IP 地址选项后, 以下是bilibili的优选解析结果, 这一步将会带来网络体验的提升.
最快的 IP 地址为什么不是默认选择? 这个功能这么实用, 为什么不默认开启?
因为它的代价是等待所有上游 DNS 的 IP 解析结果, 当你的上游同时有多个 DNS 服务商时, 向上游的查询时间以其中最慢的为准. 例如, 你的上游有平均服务时长50ms的阿里和平均服务时长500ms谷歌, ADG的上游查询时间将是500ms+.
因此用户在配置此选项时, 需要权衡上游 DNS 的服务质量和数量, 不要贪多.
这里我推荐设置两个上游, 一个权威( https://dns.alidns.com/dns-query), 加上一个运营商 DNS.
运营商的 DNS IP 各地都不相同, 可以点击这里查看自己所在地区的运营商 DNS.
或者, 你可以在路由器的管理界面上查看运营商推荐的 DNS :
特殊需求用户看重 DNS 劫持和 IP 污染问题, 但又不想放弃最优服务体验, 可以使用Clash的dns模块.
其中nameserver-policy可以指定不同的域名使用不同的 DNS 服务商, 以下是一个示例配置:
dns:
default-nameserver:
- tls://223.5.5.5:853
- tls://1.12.12.12:853
nameserver:
- https://dns.alidns.com/dns-query
- https://one.one.one.one/dns-query
- https://dns.google/dns-query
nameserver-policy:
"geosite:cn,private,apple":
- 202.103.24.68 # 自己所在地的运营商 DNS
- https://dns.alidns.com/dns-query
"geosite:geolocation-!cn":
- https://one.one.one.one/dns-query
- https://dns.google/dns-query
它的含义是:
如果本文对您有所帮助, 还请点个赞. 也非常欢迎留言讨论.
1
hiyoi 194 天前 via Android 1
推荐一个方案,adguard+mosdns+clash
dns 国内外分流,国内用运营商 dns ,用 clash fakeip 解决污染,外国统一远程服务器解析,加上 adguard 的缓存,做到极致的体验 https://songchenwen.com/tproxy-split-by-dns |
2
frankilla 194 天前
|
3
a707782628 194 天前 via iPhone
有没有什么工具可以直观的对比当前网络不同的 DNS 的数析速度
|
5
frankilla 194 天前
@a707782628 #3 DNSBench
|
6
emma3 193 天前
我 Docker 自建递归 DNS ,平常 DNS 访问没什么响应能比内网有 DNS 快了吧。
|
7
showgood163 193 天前
在分流处理好了的前提下
国内 dns 请求部分,在保证可用性情况下最好考虑隐私需求 用 DOH/DOT/DOQ 来减少泄露,用小众可信 DNS 服务防止数据被无故“取用”,如果一个 DNS 足够那就只设置一个 DNS 流向运营商和大厂的 DNS 请求默认会被泄露,我尽量不考虑 国外 dns 部分需要优先保证可用性,反正我这里 google 和 cf 的 dns 走 DOH 都不通,DOT 只有特定 IP 在特定时段可以通,该留冗余就留冗余 |
9
jqknono OP @showgood163 电信的 ipv6 dot 是通的
|
10
showgood163 193 天前 via Android
@jqknono 我这 DOT v4v6 都在用。从 mosdns 的 log 来看,向不同 server ip 请求都有失败的记录。只能说我这联通的服务质量有些一言难尽。
|
11
emma3 193 天前
@jqknono 暂时没有遇到过这种情况,如果是国内的 IP ,速度差异不会很大,即使好像 CF 那样,解释到一堆的 103 开头的 IP ,速度基本也是一样的,不筛选也一样用,况且软路由有分流,国外 IP 基本上走梯子,体验更依赖于梯子的延时,没有筛选感知也不会很强。
最重要的,不存在 DNS 泄露。 |
13
mohumohu 193 天前
@emma3 确实,我一直觉得对 DNS 结果测速“选最快 IP”没有什么意义,复制别的楼的评论:
怎么定义"访问体验"? - 域名解析最快的不一定 ping 最快 - ping 最快的不一定 connect 最快 - 延迟低的不一定带宽大 - 网页只有一个 dns, 但后边调用的 dns 无数 更不用说下载的时候多个 IP 可以负载均衡,对于企业环境多个解析结果实现 Round-robin DNS 还可以负载均衡一下提升体验。 |
14
jqknono OP |