无法通过 LAN 解析主机名

Tho*_*son 5 networking hostname

有时,我们的 LAN 会停止解析主机名。我们不知道为什么会发生这种情况。我们如何诊断这些问题?

我们有两个路由器。一个连接到互联网(通过光纤调制解调器)。另一个设置为无线开关。即它通过第一个路由器提供互联网服务,但它位于不同的房间,用于与该房间中的计算机的以太网连接。

这个问题似乎源于第一个路由器(或其他东西)。我怀疑是交换机路由器,或者网络上的配置有任何问题。这是因为我们通常键入http://home以访问 Internet 连接路由器的路由器配置,但这不起作用。但是,我们可以输入 IP 地址并进入配置页面。无论我们连接到原始路由器还是交换机路由器,都会发生这种情况。

类似地,我们在局域网上有一个 Web 服务器,我们通常使用计算机的主机名来访问它,而我们不能通过网络进行访问(尽管 IP 地址仍然有效)。

类似地,ping 网络上的 IP 地址有效,但主机名无效。

我不知道我们如何解决这个问题,如果有的话。我们通常会重新启动路由器等,然后它们就会回来。这一次他们还没有,所以我正在寻找更多关于为什么会发生这种情况的见解。

小智 2

根据您提供的信息,您应该首先确定路由器的DNS服务是否正常工作。您应该能够通过查看路由器的配置来确定服务是否启动,但如果没有指示器可以帮助您,您可以诉诸端口扫描。


如果您的路由器告诉您 DNS 已启用,请跳过此部分:

使用nmap等工具。您可以为您的 Linux 服务器快速下载它,因为它包含在标准 Linux 发行版(Debian、Ubuntu、CentOS、Mint、Fedora、Redhat 等)的大多数默认软件包存储库中。根据您运行的是基于 Debian 还是基于 RPM 的发行版,您的命令语法可能会有所不同。

  • 对于 Debian:

    • 要搜索nmapsudo apt-cache search nmap
    • 安装nmapsudo apt-get install nmap
  • 对于 RPM(Fedora、Centos、RedHat 及类似版本):

    • dnf search nmap
    • dnf install nmap
  • (之前的旧版本dnf:)

    • yum search nmap
    • yum install nmap

扫描 DNS

假设您的路由器的 IP 是,您想要在端口 53 ( ) 上192.168.1.1执行服务 UDP 扫描 ( ) ,并采用主动解析 ( ) 来确定它是否正常运行:-sU-p53-A

nmap -sU -p53 -A 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

如果服务恢复为OPEN|UNFILTERED,那么您就成功了。如果它显示为“关闭”,请进一步查看配置,看看是否有选项允许您重新配置 DNS 或只是重新启动路由器,希望它能恢复正常。如果所有其他方法都无效,请致电制造商并大量投诉。这有时有效:)


配置Windows主机:

回到手头的任务:只要您确定 DNS 正在路由器上运行并正常工作,您就会想要尝试让 Windows 客户端工作,因为它更简单一些,并且您有一个可以信赖的 GUI。我建议在您的路由器上设置后备 DNS,以便在一台 DNS 服务器出现故障时可以查询多个 DNS 服务器。

我个人最喜欢的:

  • 8.8.8.8是谷歌1
  • 8.8.4.4是谷歌2
  • 208.67.220.220是 OpenDNS 1
  • 208.67.222.222是 OpenDNS 2

完成后,下一步应该是查看是否可以通过在 TCP/IPv4 网络设置中手动配置 Windows 系统来解析路由器上的 DNS。

  1. 右键单击任务栏右下部分的网络图标,然后转到Networking and Sharing Center.
  2. 单击您的网络接口(应为ethernet 1或类似)并转至properties
  3. 点击Internet Protocol Version 4 (TCP/IPv4)properties 再次点击,
  4. 单击User the following DNS server addresses径向按钮,
  5. 输入路由器/DNS服务器的IP作为首选DNS,
  6. 输入8.8.8.8(google 的公共 DNS)作为备用 DNS,以进行后备
  7. Validate Settings退出时检查
  8. 点击OK应用并等待网络接口进行故障排除/重新启动

此时您应该能够在 Windows 系统上解析 DNS 主机名。如果是的话,那么您就知道,无论出于何种原因,您的路由器的 DHCP 服务都没有广播正确的设置,您可能需要让制造商参与其中,或者您可以自行修补,希望它能让您到达某个地方。请始终参考文档。

另一方面,如果它不起作用,我会怀疑电缆本身或路由器硬件。此时除了开始更换物理设备之外,没有什么可做的了。


配置Linux服务器:

(如果您看到任何权限错误,您可能需要从root/用户运行这些命令。)sudo

如果您没有太多 Linux 经验,这对您来说可能是一次新的冒险,但不用担心。

首先使用以下命令检查/etc/resolv.conf文件:

cat /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

此文件是配置名称服务器、域名和搜索域的位置。通常您会看到:

# 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.0.1
Run Code Online (Sandbox Code Playgroud)

有两种可能性,具体取决于您的设置。一是您安装了 dnsmasq,并且您收到警告横幅,告诉您不要更改 resolv.conf。在这种情况下,它将具有环回(127.0.0.1 或 127.0.1.1),就像您在我的配置中看到的那样,表明它通过 dnsmasq 运行自己的 DNS 服务。如果您看到此内容,请运行以下命令:

/etc/init.d/dnsmasq status
Run Code Online (Sandbox Code Playgroud)

如果您看到No such file or directory则表示 dnsmasq 未安装,这不是问题。您可以不使用它继续,或者我们可以使用
apt-get install dnsmasq(或dnf install dnsmasq) 快速安装它。

如果您选择不安装/重新启动 dnsmasq,您可以简单地/etc/resolv.conf使用您最喜欢的文本编辑器(我更喜欢nano)编辑文件以包含以下行:

nameserver 192.168.1.1 8.8.8.8 8.8.4.4    # That's your router and two fallback DNS servers
Run Code Online (Sandbox Code Playgroud)

如果您看到 dnsmasq 状态为“活动/正在运行”,则说明它已安装并正确运行。如果 dnsmasq 处于非活动/死亡状态,那么您应该使用以下命令启动它:

/etc/init.d/dnsmasq start
Run Code Online (Sandbox Code Playgroud)

dnsmasq 通常通过动态更改文件来处理 DNS 解析/etc/resolv.conf。如果您的解析器未正确处理请求,或者 dnsmasq 未正确配置,我强烈建议您阅读其可爱的文档

但实际上您只需要确保两个设置就位/etc/dnsmasq.conf

server=/yourlocaldomain/192.168.1.1
local=/yourlocaldomain/
Run Code Online (Sandbox Code Playgroud)

这些将服务器设置为您的本地域名和 DNS 服务器的 IP,并且local=/yourlocaldomain/当在您尝试解析的主机的 FQDN 中找到您的域时,会阻止 dnsmasq 尝试解析上游名称服务器。

例如,如果您没有设置此设置,并且您尝试解析 emailserver.localdomain,dnsmasq将询问Google公共DNS在哪里emailserver.localdomain......它当然会回答“我不知道!”

设置此项将使 dnsmasq 运行:“ emailserver.**localdomain**……我应该问192.168.1.1这是哪里。” - 并且192.168.1.1,您的路由器可以通过正确的 DNS 响应和 的 IP 做出适当的响应emailserver.localdomain


我希望这个解释和冗长的解决方案对您有所帮助。我尝试考虑我能想到的每种情况,但如果我错过了任何内容或某些内容不起作用,请告诉我。