如何正确配置搜索域?

如何正确配置搜索域?

我最近在我的办公电脑上安装了 Ubuntu GNOME,取代 Windows 7,因为我将要做很多 Linux 开发工作。

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

当我使用Dell SonicWall NetExtender VPN 客户端,缩短的 URL 确实可以正常工作。

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

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

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

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

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

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

编辑:这是我的/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

答案1

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

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

dns-search xyz.com ##If you put this into /etc/network/interfaces

或者

search xyz.com ##If you put this into /etc/resolvconf/resolv.conf.d/base|head|tail

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

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

host test
test.xyz.com has address 192.168.1.5

现在,由于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

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

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

答案2

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

# This file is managed by man:systemd-resolved(8). Do not edit.

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

systemctl restart systemd-resolved

答案3

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

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

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

# resolvectl domain <ifname> domain.name

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**

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

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

nameserver 127.0.0.53
options edns0
**search domain.name**

并尝试ssh使用http主机名而不是 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

答案4

就我而言,在 /etc/resolvconf/resolv.conf.d/tail 下添加搜索域并重新启动网络管理器并重新启动我的 VPN 即可。

我面临的问题是,我的组织提供了无法访问的自定义 DNS。

解决方案:

search my.orgdomain.com 在 /etc/resolvconf/resolv.conf.d/tail添加

保存运行后 sudo service network-manager restart

重启VPN

相关内容