dig 出来结果相同,但浏览器和 curl 在使用 DNS-Crypt 时都提示无法解析主机

2021-02-02 09:03:06 +08:00
 input2output

用了 DNS-Crypt,对于 www.bilibili.com 和 其它国内网站 例如 www.baidu.com 写了 forward1.2.4.8 的配置
使用 dig 出来的结果也一样

$ dig www.bilibili.com @127.0.0.1 +short
....

$ dig www.bilibili.com @1.2.4.8 +short
....

/etc/resolv.conf 里配置 nameserver 127.0.0.1 时提示无法解析主机,Firefox 和 Chrome 都是相同错误:

$ curl https://www.bilibili.com --proxy "" -v
* Uses proxy env variable no_proxy == 'localhost, 127.0.0.1'
* Could not resolve host: www.bilibili.com
* Closing connection 0
curl: (6) Could not resolve host: www.bilibili.com

但是可以访问 https://www.baidu.com

$ curl https://www.baidu.com --proxy "" -v
....

如果 /etc/resolv.conf 里配置 nameserver 1.2.4.8,都可以正常访问。


也 Google 过,可以使用

$ sudo dhclient

解决,但每次重启都要重来一次,很烦
还有就是感觉这个问题并没有被真正解决,明明 dig 出来了,浏览器和 curl 却说不能解析主机,感到很困惑


系统:openSUSE

提前祝各位新春快乐

882 次点击
所在节点    问与答
3 条回复
recall704
2021-02-02 11:04:20 +08:00
我没看懂楼主的用法,但从我自己的测试情况来看。

dig 执行的时候会对 /etc/resolv.conf 中的内容进行重试,即第一个 nameserver 失败会用第二个试试。

而 curl 不会,第一个失败就不重试了。

这个时候,就需要在 /etc/resolv.conf 中增加

```
options timeout:2 attempts:1 rotate
```
input2output
2021-02-02 11:07:11 +08:00
strace 出来的内容:
https://pastebin.pl/view/raw/e6ccc9f0
input2output
2021-02-02 11:09:19 +08:00
@recall704
我每次都是保证 /etc/resolv.conf 里只有一个 nameserver 的,
刚刚 strace 了一下,出来的结果好象是 dnscrypt-proxy 的 DNS 转发功能有问题

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

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

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

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

© 2021 V2EX