我的 Mac 上的 Python 认为我的完全限定域名是1.0.0.127.in-addr.arpa
。对于实际上没有真实域名的系统来说,这似乎是同义反复的反向 DNS 响应。但出于某种原因,该域名无法解析为其明确代表的 IP ( 127.0.0.1
):
$ python -i
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> socket.getfqdn()
'1.0.0.127.in-addr.arpa'
>>> socket.gethostbyname(socket.getfqdn())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
>>>
不仅仅是 Python;1.0.0.127.in-addr.arpa
由于 DNS 解析失败,我也无法 ping 通。
为什么in-addr.arpa
域名不能解析其代表的 IP?
答案1
127.in-addr.arpa. 尚未被 IANA 委托给任何公共名称服务器,因为它是环回地址的保留 IP 块。
[nevin-mac-mini:~] nevin% nslookup
> set type=SOA
> in-addr.arpa.
Server: 192.168.2.1
Address: 192.168.2.1#53
Non-authoritative answer:
in-addr.arpa
origin = b.in-addr-servers.arpa
mail addr = nstld.iana.org
serial = 2017043116
refresh = 1800
retry = 900
expire = 604800
minimum = 3600
Authoritative answers can be found from:
in-addr.arpa nameserver = a.in-addr-servers.arpa.
in-addr.arpa nameserver = b.in-addr-servers.arpa.
in-addr.arpa nameserver = c.in-addr-servers.arpa.
in-addr.arpa nameserver = d.in-addr-servers.arpa.
in-addr.arpa nameserver = e.in-addr-servers.arpa.
in-addr.arpa nameserver = f.in-addr-servers.arpa.
> server a.in-addr-servers.arpa.
Default server: a.in-addr-servers.arpa.
Address: 199.212.0.73#53
> 127.in-addr.arpa.
Server: a.in-addr-servers.arpa.
Address: 199.212.0.73#53
** server can't find 127.in-addr.arpa.: NXDOMAIN
>
这是权威的“没有这样的域名”的回应。
我想您可以输入一个主机条目:
1.0.0.127.in-addr.arpa. 127.0.0.1
或/etc/hosts
您的系统用于内部 DNS 解析器的任何本地资源。