如你看到的这里(并且在 中man resolv.conf
),有一个名为的选项use-vc
,用于resolv.conf
强制 Ubuntu 使用 TCP 而不是 UDP 进行 DNS 查询。
use-vc(自 glibc 2.14 起)
在 _res.options 中设置 RES_USEVC。此选项强制使用 TCP 进行 DNS 解析。
这个选项对我不起作用。
我的Ubuntu:
ebrahim@ebrahim:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.10
Release: 16.10
Codename: yakkety
ebrahim@ebrahim:~$ uname -a
Linux ebrahim 4.8.0-58-generic #63-Ubuntu SMP Mon Jun 26 17:08:21 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
ebrahim@ebrahim:~$ ldd --version
ldd (Ubuntu GLIBC 2.24-3ubuntu2.2) 2.24
正如您上面看到的,我的glibc
版本比 resolv.conf 手册页中要求的版本更新。
这是我的配置文件:
ebrahim@ebrahim:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
options use-vc
nameserver 8.8.8.8
为什么?
(请注意,我已在 6 个不同的 Ubuntu 操作系统上尝试过此选项,其中 3 个可以,3 个不起作用!)