ubuntu中有3个以上的DNS服务器



我需要在"etc/resolv.conf";。根据man的说法,它不受支持,所以我不得不重新编译glibc

最多可以列出MAXNS(目前有3个(名称服务器,每行一个。如果有多个服务器,
解析程序库将按列出的顺序查询它们。如果不存在名称服务器条目,则默认情况是使用本地计算机上的名称服务器。(所使用的算法是尝试名称服务器,如果查询超时,请尝试下一个,直到名称服务器用完,然后重复尝试所有名称服务器,直到执行最大重试次数。(

我更改了resolv/bits/types/res_state.h中的常量MAXNS,并编译如下:

mkdir glibc-build
cd glibc-build
../glibc-(version of glibc)/configure --prefix=/usr/local/lib/glibc-testing --with-tls --enable-add-ons=nptl
make
make install

我试着ping一些网站,在Wireshark的帮助下,我试着看看它在寻址哪些服务器。服务器仍然寻址前三个地址。

我还看到文件/usr/include/x86_64-linux-gnu/bits/types/res_state.h没有更改。

问题出在哪里?

--prefix=/usr/local/lib/glibc-testing构建glibc以安装到该目录层次结构中,因此它将与系统的其他部分隔离。这是一件好事,因为MAXNS的更改是一个相当剧烈的ABI中断,因此需要重建相当多的程序。make install通常在与--prefix=/usr进行到一半时崩溃,留下一个不再可用的系统。上游glibc也不支持Debian syle多拱形目录(除了/usr/include之外还有/usr/include/x86_64-linux-gnu(。

无论如何,为了以适合包含在上游glibc中的方式增加受支持的名称服务器的数量,需要以下步骤:

  • 停止在resolv/res_send.cstruct __res_state(nssocks数组(中使用按名称服务器文件描述符。存根解析程序只打开一个套接字,因此无论如何使用数组都没有意义
  • 增强内部struct resolv_conf以跟踪名称服务器以及搜索列表条目
  • 更新向后兼容性匹配代码以检查_res中的名称服务器更改(应用程序可以直接写入_res,在这种情况下应该使用这些名称服务器(。这与搜索列表代码类似
  • 调整resolv/res_send.c中的实际DNS客户端代码以使用所有名称服务器(而不仅仅是struct __res_state中的名称服务器(

这是一个不平凡的贡献,因此需要FSF版权转让。

相关内容

  • 没有找到相关文章

最新更新