resolv.conf 限制为六个域,总共 256 个字符

resolv.conf 限制为六个域,总共 256 个字符

我有一台机器(Debian jessie)用于“跳转”到另一台具有不同域的机器......实际上有很多域。

正如man resolv.conf我们所知,主机名查找的搜索列表最多可包含 6 个域或 256 个字符。

如何增加域名查找的数量?

提前致谢。

答案1

自 20 世纪 90 年代以来,这个问题就断断续续地被问到。还是一样的答案。

正如 RedHat 的 Jakub Jelinek 10 年前所说,此限制已硬连接到 GNU libc 中包含的 BIND DNS 客户端库中。它在运行时不可配置,并且不太可能被操作系统发行商更改,因为这会破坏与使用 GNU libc 的这一部分的某些第三方程序的二进制兼容性。

当然,如果有能力,可以随时更改参数,并从源代码重新编译 GNU libc 和所有使用它的程序。然而,这需要大量工作才能完成

ssh 佩斯卡多
在 DNS 命名空间树中的 6 个以上位置中查找以查找名为 的计算机pescado。 ☺

进一步阅读

答案2

来自手册页对于resolv.conf

在 glibc 2.25 及更早版本中,搜索列表仅限于 6 个域,总共 256 个字符。从 glibc 2.26 开始,搜索列表是无限的。

因此,升级 glibc 应该可以解决这个问题。为了德安尼斯巴斯特及其之后,以及乌班图斯17.10及之后,glibc的软件包版本为2.26或以上,只需要更新apt。如有必要,可以手动升级。

RHEL8以 glibc 版本 2.28 为基准,因此不需要更新; (和不合理对于 RHEL7 及更早版本)。每发行观察,Fedora 27 是第一个实现 glibc 2.26 的。

答案3

您无法增加搜索域的数量。

但是,您可以:

  1. 添加包含/etc/hostsIP 地址、完整主机名和短别名的条目。注意:如果主机的 IP 地址发生变化,您将必须更新条目/etc/hosts,因此这 a) 违背了 DNS 的目的,并且 b) 从中长期来看可能是一个烦人的“解决方案”。

  2. 如果“跳转到其他机器”,您的意思ssh是它们,您可以在文件中添加主机的定义~/.ssh/config。然后,您可以使用完全限定域名或您在配置中指定的短名称通过 ssh 连接到这些主机。

例如

Host foo
   Hostname foo.example.com
   User cas

ssh foo将尝试使用远程用户名 cas ssh 到 foo.example.com。

答案4

根据 resolv.conf 的手册,域条目的最大限制确实是 6。

如果您想使用超过 6 个域名,那么您可以使用本地缓存名称服务器,例如 dnsmasq。

以下是如何执行此操作的分步指南:

 https://wiki.archlinux.org/index.php/Dnsmasq

相关内容