Linux 上的本地主机解析度不佳

Linux 上的本地主机解析度不佳
$ dig @127.0.0.1 localhost  
$ dig @127.0.0.1 localhost.

;localhost.         IN  A
;; ANSWER SECTION:
localhost.      604800  IN  A   127.0.0.1
;; AUTHORITY SECTION:
localhost.      604800  IN  NS  localhost.
;; ADDITIONAL SECTION:
localhost.      604800  IN  AAAA    ::1
ping localhost.

$ ping localhost.
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.058 ms

和:

$ ping localhost 
PING localhost.pl (46.105.234.97) 56(84) bytes of data.

$ whois localhost
No whois server is known for this kind of object.

$ whois localhost.pl

DOMAIN NAME:           localhost.pl
registrant type:       organization
nameservers:           ns1.goo.pl. [178.33.152.98]
                       ns2.goo.pl. [94.23.111.174]

$ cat /etc/hosts
127.0.0.1   localhost

$ 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.0.1


$ cat /etc/host.conf 
# The "order" line is only used by old versions of the C library.
order bind,hosts
multi on

为什么我的内部网络将本地主机解析为公共 IP???

编辑:

$ cat  /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

#hosts: dns files
#networks: files

hosts: files dns
networks: files dns

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

为什么在文件上设置 dns 会产生这种差异,尤其是当我设置本地主机区域并解析为环回(127.0.0.1)时?

$ ping localhost   # hosts: files dns 
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.075 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.149 ms

我怎样才能摆脱使用 /etc/hosts?并仅使用命名服务?或者它的存在与服务器功能密切相关???

  • BIND 9.10.3-P2-Ubuntu
  • Ubuntu 服务器 15.10

为了帮助我们理解为什么您的问题首先存在,您能否解释一下不使用本地文件进行本地主机解析的动机? - SmallLoanOf1M

背景:

我在 nginx 上设置了一个主机“host.domain.tld”,它是众多主机之一,但其中一个充当“webmin”的代理,定义如下

    location / { 
        proxy_redirect http://host.domain.tld:10000/ https://host.domain.tld/; 
        proxy_pass http://localhost:10000/;
        proxy_set_header Host $host;
    }

webmin 绑定到 127.0.0.1:10000

有一天我访问了该页面,然后我得到了504- 网关超时所以我开始挖掘日志出了什么问题为什么我看不到我的页面:D

在日志中我看到上游连接“一些奇怪的公共 IP” - 这看起来像是中间人攻击 :D

更多的测试确实表明 ping 指向这个公共 ip“localhost”.pl,所以我在搜索我的服务器是如何以及为什么欺骗我的:D

答案1

从我上面读到的内容来看,您似乎想在尝试在此服务器上进行 localhost 解析时完全忽略 /etc/hosts 文件。一般来说,localhost 应该只解析为该机器localhost,静态位于 127.0.0.0/8 网络中。考虑到这一点,任何使用 DNS 解析 localhost 的动机在技术上都是可行的,但最终毫无意义。您只会冒着通过转发 DNS 指向实际上不是 127.0.0.1 的 localhost 的风险。

也许您正试图将 localhost 指向 DNS 框本身上的名称服务器,以便进行自己的解析?如果在 /etc/hosts 中定义了 localhost,那么这仍然是可能的,因为命名服务可以简单地在 localhost 上侦听查询(这与 localhost 本身的解析方式无关)。

虽然这似乎回答了基本问题,但我有点怀疑它在这种情况下是否令人满意。为了帮助我们理解您的问题首先存在的原因,您能否解释一下不使用本地文件进行本地主机解析的动机?

相关内容