我已经配置了一台计算机作为我的 LAN 的 DNS 服务器(大致如下本指南)。我的主要动机是能够使用 URL 而不是 IP 访问我的计算机和设备。
它工作正常并且转发正常,因为我能够正确解析我自己的名字:
➜ ~ nslookup router.casa 192.168.1.5
Server: 192.168.1.5
Address: 192.168.1.5#53
Name: router.casa
Address: 192.168.1.1
和外部的:
➜ ~ nslookup google.com 192.168.1.5
Server: 192.168.1.5
Address: 192.168.1.5#53
Non-authoritative answer:
Name: google.com
Address: 172.217.28.174
(192.168.1.5
您可能已经发现, 是 DNS 服务器地址)
然后,我设置了 DHCP 服务器(Linksys 路由器)192.168.1.5
作为主要 DNS 地址,然后是 Google 地址。这是因为我希望我的设备即使在本地 DNS 服务器关闭的情况下也能够解析名称。这似乎也有效,或者至少在我这样做时在任何电脑上都能正确反映
➜ ~ nmcli dev show | grep DNS
IP4.DNS[1]: 192.168.1.5
IP4.DNS[2]: 8.8.8.8
IP4.DNS[3]: 8.8.4.4
但是,普通nslookup
查询(没有显式 DNS 地址)不起作用:
➜ ~ nslookup router.casa
Server: 127.0.1.1
Address: 127.0.1.1#53
** server can't find router.casa: NXDOMAIN
在阅读了许多 SuperUser、Unix & Linux 和 AskUbuntu 问题后,我现在知道这个127.0.1.1
地址类似于默认情况下设置的本地 DNS 缓存resolvconf
,它在我的发行版 (Mint) 中已预先配置。有效地:
➜ ~ 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.1.1
我读过许多(已接受的)解决方案,推荐一些手动补丁(或者编辑 resolv.conf 基本文件,完全删除resolvconf, ETC。)。但是,我希望任何来宾设备都能够使用本地名称,并且我真的不想编辑整个 LAN 设置(某些设备不是我的)。
有没有办法配置 DNS 服务器和/或 DHCP,这样我就不必手动编辑所有 PC 和设备的设置?
另外,作为一个附带问题,为什么这个 127.0.1.1 服务器忽略第一个 DNS 地址?nslookup
即使我从 DNS 服务器使用它也会失败:
➜ ~ nslookup router.casa 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: router.casa
Address: 192.168.1.1
➜ ~ nslookup router.casa 127.0.1.1
Server: 127.0.1.1
Address: 127.0.1.1#53
** server can't find router.casa: NXDOMAIN
更有用的输出:
➜ ~ sudo netstat -tulpn | grep 127.0.1.1
tcp 0 0 127.0.1.1:53 0.0.0.0:* ESCUCHAR 1489/dnsmasq
udp 0 0 127.0.1.1:53 0.0.0.0:* 1489/dnsmasq
答案1
该127.0.1.1
条目很可能放置在那里,dnsmasq
它是一个本地守护进程,用于提供(最重要的是缓存)dns 和 dhcp。可以将 NetworkManager 配置为不运行 dnsmasq,如下所示:编辑文件并通过在行开头放置 来/etc/NetworkManager/NetworkManager.conf
注释掉该行。dns=dnsmasq
#
sudo nano /etc/NetworkManager/NetworkManager.conf
现在重新启动网络管理器:
sudo service network-manager restart
接下来检查该127.0.1.1
条目是否已从路由器中消失/etc/resolv.conf
并替换为从路由器获取的条目。