今天抓手机包,怎么都抓不到手机的一些 dns 包,排除了缓存问题,访问的都是新网址。。。 后来筛选发现有一些对 dns 服务器的 tcp 包,还是加密的 然后请教了大佬,说有基于 https 的 dns 解析。 学到老,学到老。。。。
1
foolnius 2021-12-02 11:36:40 +08:00
DoH DoT
|
2
xiadong1994 2021-12-02 11:39:02 +08:00 via iPhone
DoH ,DoT 。
cloudflare 之前还搞过 dns over sms…… |
3
xiadong1994 2021-12-02 11:39:26 +08:00 via iPhone
|
4
chairuosen 2021-12-02 11:40:24 +08:00
应该是 http 的写死 IP 的私有加密协议。https 是需要证书的,证书是针对域名的,域名就得解析,那用啥解析这个 HTTPS 的域名呢
|
5
kokutou 2021-12-02 11:40:56 +08:00
dns over https
dns over tls |
6
kokutou 2021-12-02 11:41:30 +08:00
还有直接访问 ip 的骚操作
360 就有 |
7
bipy 2021-12-02 11:50:47 +08:00 2
@chairuosen #4 那当然是 IP 证书—— https://1.1.1.1
|
8
krixaar 2021-12-02 11:54:35 +08:00
@chairuosen #4 用你当前设置好的 DNS 服务器啊,就跟用 IE 为了下载别的浏览器一样,用当前 DNS 去解析这个网址,返回错误 IP 你连不上,你就知道出问题了;只要能连上那就一定是正确结果,之后就只走 HTTPS 了呗。
|
9
chairuosen 2021-12-02 11:56:10 +08:00
@bipy #7 咦,还真有
|
10
v2000000001ex 2021-12-02 11:56:42 +08:00
我已经用上了 dot ,
coredns forward tls://8.8.8.8 |
11
chairuosen 2021-12-02 11:57:48 +08:00
@krixaar #8 这样做就违背了 HTTPDNS 的初衷了,还是会被污染
|
12
yin1999 2021-12-02 12:02:51 +08:00 via Android
@chairuosen 咋污染,后续请求走的是加密流量
|
13
ysc3839 2021-12-02 12:03:23 +08:00
@chairuosen #4 可以写死 IP 地址,不进行域名解析。证书里包含域名又不代表一定要进行 DNS 解析。
|
14
krixaar 2021-12-02 12:07:15 +08:00
@chairuosen #11 但这样做绕开了单一 IP 阻断,以及给了你便捷的确认是否被污染的手段。只要默认的 DNS 解析出了 cloudflare-dns.com 的其它地址,万一 1.1.1.1 被某个傻缺 wifi 登录页面劫持了呢。
|
15
2i2Re2PLMaDnghL 2021-12-02 12:20:19 +08:00
@chairuosen 这个就是 bootstrap 问题
一个是用 IP 证书 一个是预置的 hosts ,Firefox 有一个 network.trr.bootstrapAddress 设置 最后就是用常规 DNS 解析 DoH 服务器域名 你这里有个误解,常规 DNS 污染是可以被发现的(证书与地址不符),而 DoH 仍然是不会被污染的(通过 TLS 加密) 这里是个两层结构 (顺便,1.1.1.1 被深信服占了) |
16
Yadomin 2021-12-02 12:45:54 +08:00
@2i2Re2PLMaDnghL 可以 https://1.0.0.1
|
17
v2tudnew 2021-12-02 13:11:59 +08:00
@krixaar DOH\DOT 不影响 WIFI 登录页面,反正 IOS 没受到影响。别说公共 WIFI 了,傻缺运维把 1.1.1.1 设置成某网关地址了,能咋办?凉拌。又不是只有一个公共 DNS ,真要有傻缺阻断所有加密流量,这不是司马昭之心么,还不快跑?
|
18
ink19 2021-12-02 13:14:31 +08:00
@xiadong1994 dns over sms ,那不得上一个小时网,话费扣 50
|
19
fkdog 2021-12-02 13:21:31 +08:00
概念意义上来说,dns 是通过域名换取主机 ip 地址。实现上包括 DNS 报文协议和传输协议,但是概念上并没有规定 dns 的传输实现一定要基于 udp 。
只不过最开始搞 dns 服务实现的人采用了 udp ,然后这个东西推广开了默认成为了事实标准,只不过他没有想到如今的网络安全问题会这么严重。 |
20
2i2Re2PLMaDnghL 2021-12-02 13:49:41 +08:00
@fkdog 你这边可能混淆了 Name 到 IP 转换和现有的 DNS 协议体系 rfc 1034/1035
而且 rfc1035 可以用 tcp ,你也可以用 dig +tcp 实际使用。之前甚至可以用来避免污染(因为有三次握手,纯抢答没用),现在会被选择性 RST |
21
chairuosen 2021-12-02 15:41:43 +08:00
@2i2Re2PLMaDnghL #15 我想说的意思用『污染』表达不合适,我应该说是『被攻击』或者是『受运营商 DNS 波动影响』,之前在业务里用 HTTPDNS 是有可能小运营商的 DNS 服务不可靠,导致 web 服务解析失败中断,如果用了 DoH ,最开始还是要走普通 DNS ,那它断了,我的服务还是得断。我的意思是这个。
|
22
tulongtou 2021-12-02 15:44:17 +08:00
@chairuosen 证书可以给 IP 的,只是一般人申请不到
|
23
tsanie 2021-12-02 17:29:27 +08:00
还有个 https://223.5.5.5
|
24
2i2Re2PLMaDnghL 2021-12-02 18:18:30 +08:00
@chairuosen 那你这个也不是 DoH 设计上想要解决的问题,你说的这个问题范畴和 DNS over HTTPS 根本不同。
DoH 的目的是加密,而且几乎只是加密。 而且仅仅是可用性不足的话,可以手动指定 DNS 递归解析器的地址,连 http 也不需要。 |
25
v2tudnew 2021-12-02 18:31:56 +08:00
DOT\DOH 只是加密,要说可用性那就别硬编码 DNS 地址,用系统设置的,有问题用户自然会去查看 DNS 。
|
27
chairuosen 2021-12-02 19:49:53 +08:00
@2i2Re2PLMaDnghL #24 可能标准制定时没考虑到可用性问题,但是实际应用中是有这个目的的,可以看 https://cloud.tencent.com/product/httpdns "解决移动互联网服务中域名解析异常带来的困扰。" 我理解 app 层面无法改变操作系统的 DNS 地址来发请求,只能通过 HTTPDNS 请求回 IP 后直接向该 IP 发请求来代替 DNS 过程。
|
28
2i2Re2PLMaDnghL 2021-12-03 09:22:52 +08:00
@chairuosen 哪有这么复杂,不需要改变操作系统 DNS ,你直接构造符合 rfc 1035 的数据包然后用 UDP 发给公共的或你自建的服务器就行了。
但无论如何,你 1. 离题; 2. 在无知的情况下否认了 DoH 的存在。 你看下你链接里的文档,『基于容灾考虑,建议保留使用运营商 LocalDNS 解析域名的方式作为备选。』 顺便,你这个 HTTPDNS 我花几分钟写个 mitmproxy 插件就能随意污染。 |
29
unco020511 2021-12-03 09:48:37 +08:00
就是 httpDNS 吧,腾讯和阿里都有类似的服务
|
30
wanguorui123 2021-12-03 10:02:47 +08:00
DOH/DOT/DOQ
|
31
calvincc 2021-12-03 11:10:27 +08:00 via iPhone
好奇是啥手机,一般手机都不会默认用 DoH 吧?
|
32
chairuosen 2021-12-03 11:43:55 +08:00
@2i2Re2PLMaDnghL #28 好,你说的都是对的
|
33
jmk92 2021-12-03 13:16:18 +08:00
我这边的程序是默认 DoT 备选 DoH ,都失败后回退 HTTPDNS ,备选 udp53 ,最大程度避免解析生效慢、不及时、运营商不遵守 TTL 缓存,以及部分运营商劫持 53 端口的问题
|