由于我的路由器无法解析 LAN 设备的主机名,因此我使用 DNSMASQ 将服务器设置为充当 DNS。
DNS Server Specs
----------------
OS: Ubuntu Server
LAN IP: 192.168.1.4
我有第二台用于网络上流媒体的服务器,它运行 kodi 和 apache2,这样我就可以通过我编写的 Web 界面控制机器。
Media Server Specs
------------------
LAN IP: 192.168.1.10
HOSTNAME: media.lan
我的路由器已配置为使用本地 DNS 服务器进行 DNS 查找。我还在 DNS 服务器上的 /etc/hosts 中添加了媒体服务器的条目。
如果我dig media.lan
在网络上的任何机器上运行,我会得到以下信息:
; <<>> DiG 9.10.6 <<>> media.lan
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41974
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;media.lan. IN A
;; ANSWER SECTION:
media.lan. 0 IN A 192.168.1.10
;; Query time: 2 msec
;; SERVER: 192.168.1.4#53(192.168.1.4)
;; WHEN: Tue Dec 17 16:06:24 CET 2019
;; MSG SIZE rcvd: 54
这给人的印象是一切都运转良好。正在联系正确的 DNS 服务器并返回 media.lan 的正确 IP 地址。但是,如果我尝试ping media.lan
在任何机器上执行此操作,则会收到以下错误:
ping: cannot resolve media.lan: Unknown host
Firefox 也找不到服务器。如果我 ping media.lan 的 IP,我会得到响应。我的设置在 30 分钟前运行得很好,我没有更新任何内容。 Ping google.com 工作正常,没有任何问题。这到底是怎么回事?为什么 dig 得到了正确的响应,但本地主机名的所有其他 DNS 查找似乎都失败了?
/etc/nsswitch.conf(DNS 服务器的)的内容:
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat systemd
group: compat systemd
shadow: compat
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
/etc/resolv.conf
nameserver 127.0.0.53
options edns0
search home
答案1
好的,所以得到这个:在自动配置的 DNS 服务器列表中(我的 Mac 一定是从调制解调器收到的),我在 192.168.1.4 条目下面发现了一个 IPv6 地址。然后,我在路由器上禁用了 IPv6 DHCP 服务器,果然,我的主机名解析突然开始工作,而且我在 Mac 上看不到更多 IPv6 DNS 服务器地址。这可能是一个错误,还是只是一个奇怪的巧合?