我正在运行 mint Mate 17.2。
当我使用dig时,对于某个特定域名,解析的IP“答案”是错误的,答案服务器是127.0.0.1
.
尝试通过 ssh、网络浏览器等从我的本地计算机访问此域也会解析到错误的 IP。
使用在线工具或其他计算机的 DNS 查找工作正常。
本地计算机上的某些东西正在拦截请求并返回错误的缓存结果。我查看了各种缓存程序,但我认为我没有安装或配置任何程序。
返回的 IP 地址是旧 IP,并且主 DNS 记录在一年前已更改。
如何确定哪个程序在本地拦截 DNS 并禁用它,以便我可以在我的计算机上正确解析该域?
/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.1.1
答案1
Resolvconf 将其指向在本地计算机的端口 53 中运行的本地软件。
要找出哪一个:
sudo netstat -anlp | grep :53
正如我们所发现的,它是 avahi 守护进程。
要跟踪 DNS 解析,以下命令也很有用:
dig +trace www.cnn.com
如果你想自己控制你的 DNS 设置,特别是在服务器情况下(我注意到你说的是 Mint),我建议不要使用 resolvconf
您可以使用以下命令卸载它:
dpkg --purge resolvconf
然后,如果您通过 DHCP 获得 IP,请保持原样,否则在 /etc/resolv.conf 中填写您的 DNS 服务器。
如果您对 mDNS 解析或企业网络不感兴趣,我建议卸载 avahi。
在桌面设置中,建议重新启动或重新启动所有服务。我至少会重新启动网络service networking restart
。
Avahi mDNS/DNS-SD 守护程序实现了 Apple 的 Zeroconf 架构(也称为“Rendezvous”或“Bonjour”)。该守护进程使用 mDNS/DNS-SD 注册本地 IP 地址和静态服务,并为本地程序提供两个 IPC API,以利用 avahi-daemon 维护的 mDNS 记录缓存。
在工作环境中,如果确实有必要的话,在网络级服务器/工作站上跟踪公布 mDNS 记录可能也很有趣。我敢打赌一些丢失的主机文件或一些旧的服务器设置正在通过 mDNS 传播您的旧 IP 地址。
您还可以使用以下命令监听本地网络 mDNS 数据包:
sudo tcpdump -n udp port 5353
多播域名系统 (mDNS) 将不包含本地名称服务器的小型网络中的主机名解析为 IP 地址。它是一种零配置服务,使用与单播域名系统 (DNS) 基本相同的编程接口、数据包格式和操作语义。尽管 Stuart Cheshire 将 mDNS 设计为具有独立功能,但它可以与单播 DNS 服务器协同工作。