如何在 Linux 上使用 /etc/resolv.conf 解析多个域?

Som*_*ter 14 linux dns domain search nameserver

我正在运行 Ubuntu 12.04,我正在尝试 ping 以下系统:

  • system0.oldcompany.com
  • system1.fing.oldcompany.com
  • system2.newcompany.com
  • system3.thing.newcompany.com

我的resolv.conf

# internal dns servers
nameserver 1.1.1.151
nameserver 1.1.1.152
search oldcompany.com fing.oldcompany.com newcompany.com thing.newcompany.com
#domain thing.newcompany.com
domain oldcompany.com
#domain fing.oldcompany.com
#domain newcompany.com
#nameserver 8.8.8.8 #commented out due to other issues
Run Code Online (Sandbox Code Playgroud)

如果我不注释所有这些行,我将无法 ping system0 或 system1。如何设置它以便仅使用其域名就可以 ping 所有 4 个系统?在 Windows 中,它解析每个系统。

ping system0
ping: unknown host system0
ping system1
ping: unknown host system1
Run Code Online (Sandbox Code Playgroud)

我一直在尝试阅读resolv.conf 上的手册页,但在解决此问题时仍然遇到问题。不幸的是,我公司没有人使用 Linux,所以我只能靠自己。

编辑:更新了搜索,所以它只有 1 行,现在我可以 ping system0 但仍然无法 ping system1。但是,我可以 ping system1.fing 因为它在 oldcompany 域上。

Som*_*ter 10

在关注@webmarc 和@dan-hook 之后,直到我删除了domain我仍然不太明白的行之后,它才起作用。

根据这个答案domain成为第一个search字符串。我发现不使用domain字符串更容易。

脚步:

  1. 所有search域都放在一行上
  2. domain 行被删除
  3. 新公司域名放在旧公司名称之前

这是我的新产品/etc/resolv.conf,效果很好。

# internal dns servers
nameserver 1.1.1.151
nameserver 1.1.1.152
search newcompany.com thing.newcompany.com oldcompany.com fing.oldcompany.com
Run Code Online (Sandbox Code Playgroud)

此外,如果您/etc/resolv.conf将被覆盖,则修改/etc/network/interfaces

auto eth0
iface eth0 inet static
    address 10.59.2.50
    netmask 255.255.255.0
    gateway 10.59.2.1
    dns-nameservers 1.1.1.151 1.1.1.152
    dns-search newcompany.com thing.newcompany.com oldcompany.com fing.oldcompany.com
Run Code Online (Sandbox Code Playgroud)

如果新公司有新的 dns 服务器 IP,请确保该 IP 也位于旧公司的 IP 之前,以便首先查询新的 dns 服务器。


小智 5

您的文件存在一些问题:

  1. 应该只有一个搜索行,例如search domain.com domain2.com domain3.com最多 6 个域。
  2. 应该只有一个域行,并且指定了 1 个域。

解决这些问题后,看看您是否仍然有问题,如果有,请更新您的问题。

您可以在手册页中找到有关此文件所需格式的信息。