如何正确配置搜索域?

mka*_*erg 36 network-manager networking dns 14.10

我最近在我的工作计算机上安装了 Ubuntu GNOME,替换了 Windows 7,因为我将做很多 Linux 开发工作。

我们的许多配置和开发脚本都使用公司网络服务器的缩短 URL。也就是说,他们使用http://server而不是http://server.location.company.com. 我在 Windows 中从未遇到过这些 URL 的问题,但我无法让它们在 Ubuntu 中正常工作。对我来说,简单地输入整个完全限定的 URL 是不可行的,因为在各种脚本中到处都使用了缩写形式,但我能够访问长形式的 URL。

当我使用Dell SonicWall NetExtender VPN 客户端连接到公司的 VPN 时,缩短的 URL 可以正常工作。

根据我迄今为止所做的研究,我认为我需要location.company.com在 Ubuntu 上将其配置为搜索域,但到目前为止我尝试这样做都失败了。这是我尝试过的:

  • 在“网络连接”应用中,编辑我的无线连接。在 IPv4 选项卡下,仅选择自动 (DHCP) 地址。然后输入location.company.com作为搜索域,并放入我们的 DNS 服务器。这没有明显的区别。
  • 按照此处所述修改 dhclient.conf 。
  • 运行dpkg-reconfigure resolvconf以确保它动态更新 resolv.conf。

我还担心此时我已经尝试了几种不同的方法,它们可能会相互干扰。我知道在过去几年中,Ubuntu 更改了此配置的某些部分,并且很难找到最新的信息。我并不完全清楚网络管理器、resolvconf、dhclient 和其他配置文件在最新版本的 Ubuntu 中如何协同工作。

所以,我的问题是:如何配置我的计算机以使短格式 URL 在 Ubuntu 14.10 中正常工作?

或者,我应该使用哪些网络配置程序来执行此操作,我应该如何配置它们,以及如何验证它们是否正常工作?

谢谢你的帮助!如果我可以提供任何其他信息,请告诉我。

编辑:这是 my /etc/resolv.conf,我相信它是由 resolvconf 生成的。

# Add Company Nameservers and Domain
nameserver 192.168.200.53
nameserver 192.168.200.65
search location.company.com
nameserver 127.0.1.1
search location.company.com
# 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
nameserver 127.0.1.1
search hsd1.co.comcast.net
Run Code Online (Sandbox Code Playgroud)

hee*_*ayl 37

搜索域是指当您仅使用特定主机或计算机的主机名时将自动附加的域。这基本上用于本地网络。

假设您有一个域名xyz.com(它可能在全球范围内可用,也可能仅在本地可用),并且您在 LAN 中有 100 台计算机。现在,您希望在仅通过计算机的主机名查找任何计算机时自动附加此域名。如果要附加的域名是,xyz.com则搜索域应如下所示:

dns-search xyz.com ##If you put this into /etc/network/interfaces
Run Code Online (Sandbox Code Playgroud)

或者

search xyz.com ##If you put this into /etc/resolvconf/resolv.conf.d/base|head|tail
Run Code Online (Sandbox Code Playgroud)

现在你如何检查它是否正常工作,只需使用ping或任何 DNS 解析程序,如host, nslookup, dig.

例如,如果主机test拥有 IP,192.168.1.5则使用host

host test
test.xyz.com has address 192.168.1.5
Run Code Online (Sandbox Code Playgroud)

现在dig默认情况下不使用搜索列表/域,您需要使用它dig +search test来启用附加搜索域。

使用nslookup

nslookup test
Server:     192.168.1.11
Address:    192.168.1.11#53

Name:   test.xyz.com
Address: 192.168.1.5
Run Code Online (Sandbox Code Playgroud)

192.168.1.11是您的本地 DNS 服务器,它具有主机的 IP 地址test.xyz.com(请注意完整的表格),即192.168.1.5. DNS 服务器会将主机名解析test.xyz.com为 IP,192.168.1.5但不会解析任何内容,test因为它没有像这样的任何条目。

因此,在我们的案例中,搜索域所做的是,当我们仅使用主机名查找计算机时,它会自动附加一个域名以使其成为 FQDN。

  • @mkasberg:您的最后一条消息中缺少某些部分……还要注意,在对 `resolvconf` 进行任何更改后,请运行 `sudo resolvconf -u`。 (3认同)

小智 29

我正在运行 Bionic Beaver,我resolv.conf说:

# This file is managed by man:systemd-resolved(8). Do not edit.
Run Code Online (Sandbox Code Playgroud)

所以我的解决方案是根据文档编辑/etc/systemd/resolved.conf, 选项 ,然后重新启动 systemd-resolved:Domains=

service systemd-resolved restart
Run Code Online (Sandbox Code Playgroud)

  • 不完全是@karateog,应该是“systemctl restart systemd-resolved”或“systemctl restart systemd-resolved.service”。 (3认同)

Ave*_*man 9

我正在为Ubuntu Focal 20.04寻找这个问题的解决方案,因为我的本地域没有附加到主机名。

在大多数类似 Unix 的操作系统(如 Solaris、Debian 等)上,解决方案是在现在使用的现代 Ubuntu 版本中添加带有 ' search domain.name'的行,所以我必须弄清楚该怎么做。/etc/resolv.confsystemd-resolved

值得庆幸的是,它仍然只有一行 -resolvectl现在只需使用命令而不是编辑文本文件:

# resolvectl domain <ifname> domain.name
Run Code Online (Sandbox Code Playgroud)

(您可以ifname通过调用ip addr或找到您的resolvectl status

注意:此更改不是永久性的,有关永久性解决方案,请参阅下面的更新

要验证它是否正常工作,请确保systemd-resolved通过调用列出域:

user@host:/$ resolvectl status | tail

DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 192.168.1.2
         DNS Servers: 192.168.1.2
                      192.168.1.3
          **DNS Domain: domain.name**
Run Code Online (Sandbox Code Playgroud)

并且它是/etc/resolv.conf通过调用自动生成的:

user@host:/$ tail /etc/resolv.conf

nameserver 127.0.0.53
options edns0
**search domain.name**
Run Code Online (Sandbox Code Playgroud)

并尝试sshhttp使用主机名而不是 FQDN 来查看配置的本地域是否自动解析。

我认为我的解决方案是最简单且最不容易混淆的选项 - 在探索其他答案中提出的解决方案之前,它可能至少值得先尝试以防万一它对您有用。

2020 年 2 月 20 日更新:

我注意到这种变化不是永久性的。根据这个问题DNS 设置为 systemd 的 127.0.0.53 - 如何永久更改?我了解到永久配置存储在/etc/systemd/resolved.conf- 只需取消注释Domains=并将您的域写入其中:

[Resolve]
#DNS=
#FallbackDNS=
Domains=domain.name
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=yes
#DNSStubListener=yes
#ReadEtcHosts=yes
Run Code Online (Sandbox Code Playgroud)


小智 9

从 16.04 开始,高级网络配置工具只能通过命令行访问:

sudo nm-connection-editor

可以在选项卡上配置搜索域IPvX Settings

在此输入图像描述

有关更多详细信息,请参阅Thomas Ward 的精彩回答