![可以访问 IP 但不能访问主机名(尽管可以进行主机解析)](https://linux22.com/image/1545123/%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE%20IP%20%E4%BD%86%E4%B8%8D%E8%83%BD%E8%AE%BF%E9%97%AE%E4%B8%BB%E6%9C%BA%E5%90%8D%EF%BC%88%E5%B0%BD%E7%AE%A1%E5%8F%AF%E4%BB%A5%E8%BF%9B%E8%A1%8C%E4%B8%BB%E6%9C%BA%E8%A7%A3%E6%9E%90%EF%BC%89.png)
当 ping 特定 ip(内网)时
ping 10.14.5.10
PING 10.14.5.10 (10.14.0.21) 56(84) bytes of data.
64 bytes from 10.14.5.10: icmp_seq=1 ttl=62 time=0.858 ms
64 bytes from 10.14.5.10: icmp_seq=2 ttl=62 time=0.671 ms
^C
测试正向和反向 DNS 解析作品!
host 10.14.5.10
10.14.5.10.in-addr.arpa domain name pointer some.intranet.url.
$ host some.intranet.url
some.intranet.url. has address 10.14.5.10
$ ping some.intranet.url
ping: unknown host some.intranet.url
然而:
ping some.intranet.url
ping unknown host some.intranet.url
为什么解决了,但是无法访问?
Ubuntu 16.04.01
在VM 上工作ESXI 6.0
配置
/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Loopback
auto lo
iface lo inet loopback
# Primary network interface
allow-hotplug ens160
iface ens160 inet static
address 10.111.3.3
netmask 255.255.255.0
gateway 10.111.3.1
dns-nameservers 10.111.3.1
# dns-zone my.zone.local
/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 10.111.3.1
/etc/nsswitch.conf 文件
# /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
group: compat
shadow: compat
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
答案1
此.local
TLD 为 mDNS 保留。请勿将其用于其他用途。
那么为什么它不起作用呢?在 中nsswitch.conf
,您有以下行:
hosts: files mdns4_minimal [NOTFOUND=return] dns
这意味着,要解析主机名,它将首先查询/etc/hosts
,然后查询 mDNS,最后才查询 DNS。
关键是[NOTFOUND=return]
。该mdns4_minimal
服务将忽略任何但 .local
名称,因为无论如何它都无法解析它们。但是,如果它无法解析名称.local
( NOTFOUND
),则整个查找过程将立即终止 ( return
)。
您也可以删除[NOTFOUND=return]
,它将恢复使用 DNS。但是,请不要使用.local
。
另外,不要使用任何其他东西(.lan
,.companyname
或其他),而是使用您实际拥有的域名。将来一切都注定会失败。该域名不需要任何公开可见的 DNS 记录。