有时我们的 LAN 会停止解析主机名。我们不知道为什么会发生这种情况。我们如何诊断这些问题?
我们有两个路由器。一个连接到互联网(通过光纤调制解调器)。另一个设置为无线交换机。即它通过第一个路由器为互联网提供服务,但它位于不同的房间,用于与该房间中的计算机建立以太网连接。
问题似乎源于第一个路由器(或其他东西)。我怀疑是交换机路由器,或者是网络配置方面的问题。这是因为我们通常键入http://home
以进入互联网连接路由器的路由器配置,但这不起作用。但是,我们可以输入 IP 地址并进入配置页面。无论我们连接到原始路由器还是交换机路由器,都会发生这种情况。
类似地,我们在局域网上有一个网络服务器,我们通常使用计算机的主机名来访问,但我们无法通过网络进行访问(不过 IP 地址也可以)。
类似地,在网络上 ping IP 地址可以工作,但主机名则不工作。
我不知道我们该如何解决这个问题。我们通常会重启路由器等,然后它们就会恢复。但这次却没有,所以我想多了解一下为什么会发生这种情况。
答案1
根据您提供的信息,您应该首先确定路由器的 DNS 服务是否正常工作。您应该能够通过查看路由器的配置来确定服务是否正常,但如果没有任何指标可以帮助您,您可以求助于端口扫描。
如果您的路由器告诉您 DNS 处于活动状态,请跳过此部分:
使用以下工具nmap。您可以快速将其下载到您的 Linux 服务器,因为它包含在大多数标准 Linux 发行版(Debian、Ubuntu、CentOS、Mint、Fedora、Redhat 等)的默认软件包存储库中。根据您运行的是基于 Debian 还是基于 RPM 的发行版,您的命令语法可能会有所不同。
对于 Debian:
- 搜索
nmap
:sudo apt-cache search nmap
- 安装
nmap
:sudo 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
只要服务恢复开放|未过滤,那么你就成功了。如果它显示为关闭然后仔细研究一下配置,看看是否有选项允许您重新配置 DNS 或简单地重新启动路由器,希望它能恢复正常。如果一切都失败了,请致电制造商并大肆抱怨。有时这种方法很有效 :)
配置Windows主机:
回到手头的任务:只要您确定 DNS 在路由器上正常运行,您就会想尝试让 Windows 客户端工作,因为它更简单,而且您有一个可以依赖的 GUI。我建议在路由器上设置备用 DNS,以便在一个 DNS 服务器发生故障时可以查询多个 DNS 服务器。
我个人最喜欢的:
8.8.8.8
是 Google 18.8.4.4
是 Google 2208.67.220.220
是 OpenDNS 1208.67.222.222
是 OpenDNS 2
完成后,下一步应该是查看是否可以通过在 TCP/IPv4 网络设置中手动配置 Windows 系统来解析路由器上的 DNS。
- 右键单击任务栏右下角的网络图标,然后前往
Networking and Sharing Center
。 - 单击您的网络接口(应该是
ethernet 1
或类似的)并转到properties
。 -
再次点击
Internet Protocol Version 4 (TCP/IPv4)
并点击,properties
- 点击
User the following DNS server addresses
圆形按钮, - 输入路由器/DNS服务器的IP作为首选DNS,
- 输入
8.8.8.8
(谷歌的公共 DNS)作为备用 DNS,用于回退 Validate Settings
退出时检查- 点击
OK
应用并等待网络接口排除故障/重新启动
此时您应该能够在 Windows 系统上解析 DNS 主机名。如果可以,那么您就知道,无论出于何种原因,您的路由器的 DHCP 服务都没有广播正确的设置,您可能需要让制造商参与进来,或者您可以自己动手,希望它能帮到您。请务必参考文档。
另一方面,如果它不起作用,我会怀疑电缆本身或路由器硬件。除了开始更换物理设备外,目前没有太多事情可做。
配置Linux服务器:
(如果您发现任何权限错误,则可能需要从root
/用户运行这些命令。)sudo
如果您对 Linux 没有太多经验,这对您来说可能将是一次新的冒险,但不用担心。
首先使用以下命令检查/etc/resolv.conf
文件:
cat /etc/resolv.conf
此文件用于配置名称服务器、域名和搜索域。通常,您会看到:
# 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
有两种可能,具体取决于您的设置。一种是您安装了 dnsmasq,并且您收到了警告横幅,告诉您不要更改 resolv.conf。在这种情况下,它将具有环回(127.0.0.1 或 127.0.1.1),就像您在我的配置中看到的那样,表明它通过 dnsmasq 运行自己的 DNS 服务。如果您看到此消息,请运行以下命令:
/etc/init.d/dnsmasq status
如果您看到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
如果您看到 dnsmasq 状态为 Active/Running,则表示它已正确安装并运行。如果 dnsmasq 处于非活动状态/已停止运行,则应使用以下命令启动它:
/etc/init.d/dnsmasq start
dnsmasq 通常通过动态更改文件来处理 DNS 解析/etc/resolv.conf
。如果您的解析器无法正确处理请求,或者 dnsmasq 配置不正确,我强烈建议您阅读其可爱的文档。
但实际上您只需确保您的设置到位/etc/dnsmasq.conf
:
server=/yourlocaldomain/192.168.1.1
local=/yourlocaldomain/
这些将服务器设置为您的本地域名和 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
。
我希望这个解释和冗长的解决方案能帮到你。我尝试解释我能想到的每一种情况,但如果我遗漏了什么或有什么问题,请告诉我。
答案2
如果 LAN 中没有太多计算机,并且/或者不依赖内部 DNS 路由,请将 pv4 配置中的 DNS 参数设置为:
8.8.8.8
和
8.8.4.4
这会将 DNS 解析工作交给 Google 的服务器。