AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1065513
Accepted
Greg
Greg
Asked: 2021-06-03 20:09:07 +0800 CST2021-06-03 20:09:07 +0800 CST 2021-06-03 20:09:07 +0800 CST

当 /etc/hosts 或 dns 服务器中不存在 `test.localhost` 时,linux 如何解析通配符 locahost 子域(例如:`ping test.localhost`)?

  • 772

例如在/etc/hosts文件为空的 ubuntu 20.04 LTS 中:

>>> cat /etc/hosts
127.0.0.1       localhost

ping仍然适用于本地主机的任何子域:

>>> ping test.localhost
PING test.localhost(ip6-localhost (::1)) 56 data bytes
64 bytes from ip6-localhost (::1): icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from ip6-localhost (::1): icmp_seq=2 ttl=64 time=0.049 ms
^C
--- test.localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1028ms
rtt min/avg/max/mdev = 0.049/0.053/0.058/0.004 ms

或者:

>>> ping test2.localhost
PING test2.localhost(ip6-localhost (::1)) 56 data bytes
64 bytes from ip6-localhost (::1): icmp_seq=1 ttl=64 time=0.042 ms
64 bytes from ip6-localhost (::1): icmp_seq=2 ttl=64 time=0.063 ms
^C
--- test2.localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1004ms
rtt min/avg/max/mdev = 0.042/0.052/0.063/0.010 ms

这个答案暗示涉及系统解析器,但它实际上是如何发生的?

如果localhostin/etc/hosts被替换为另一个值,则子域不再起作用:

>>> cat /etc/hosts
127.0.0.1       testname


>>> ping testname
PING testname (127.0.0.1) 56(84) bytes of data.
64 bytes from testname (127.0.0.1): icmp_seq=1 ttl=64 time=0.071 ms
64 bytes from testname (127.0.0.1): icmp_seq=2 ttl=64 time=0.080 ms
^C
--- testname ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1011ms
rtt min/avg/max/mdev = 0.071/0.075/0.080/0.004 ms

>>> ping new.testname
ping: new.testname: Name or service not known

为什么它适用于 localhost 而没有其他主机名,它是如何实现的?

domain-name-system subdomain networking hosts localhost
  • 1 1 个回答
  • 384 Views

1 个回答

  • Voted
  1. Best Answer
    Patrick Mevzek
    2021-06-03T20:22:41+08:002021-06-03T20:22:41+08:00

    在 Linux 系统上,分辨率由/etc/nsswitch.conf主机名和其他内容定义的要查阅的数据源控制。

    一个典型的配置有:

    hosts: files dns myhostname
    

    如果您删除myhostname,您的测试将不起作用:(我也必须删除dns,因为我的本地递归名称服务器有一个区域localhost,因此会回复)

    # grep hosts: /etc/nsswitch.conf
    hosts: files
    # getent hosts foobar42.localhost
    
    (no output)
    
    # grep hosts: /etc/nsswitch.conf
    hosts: files dns myhostname
    # getent hosts foobar42.localhost
    ::1 localhost
    

    这也表明您不需要ping并且实际上ping几乎总是用于故障排除的错误工具。getent是一个面向用户的工具,用于检查中定义的任何内容的分辨率/etc/nsswitch.conf (并且作为奖励,getent使用通常的设置支持 IPv6 而不是 IPv4 /etc/gai.conf,但您可以强制使用 IPv4getent ahostsv4 ...

    “myhostname插件”记录在https://www.freedesktop.org/software/systemd/man/nss-myhostname.html

    它说:

    此模块解析的精确主机名是:

    [..]

    • 主机名“localhost”和“localhost.localdomain”(以及任何以“.localhost”或“.localhost.localdomain”结尾的主机名)被解析为 IP 地址 127.0.0.1 和 ::1。

    谜团解决了:- /etc/hosts)(实际上这里的内容无关紧要)

    • 3

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve