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 / 问题 / 498500
Accepted
user784637
user784637
Asked: 2013-04-12 10:13:45 +0800 CST2013-04-12 10:13:45 +0800 CST 2013-04-12 10:13:45 +0800 CST

为什么主机命令不解析 /etc/hosts 中的条目?

  • 772

/etc/hosts我在 ubuntu 12.04 机器上有以下文件

127.0.0.1 localhost
10.248.27.66 ec2-50-112-220-110.us-west-2.compute.amazonaws.com puppetmaster

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

但是 host 命令不能puppetmaster正确解析名称,而 telnet 命令可以

root@ip-10-248-34-162:/home/ubuntu# host puppetmaster
Host puppetmaster not found: 3(NXDOMAIN)

root@ip-10-248-34-162:/home/ubuntu# telnet puppetmaster 8140
Trying 10.248.27.66...
Connected to ec2-50-112-220-110.us-west-2.compute.amazonaws.com.
Escape character is '^]'.

为什么主机命令不解析 /etc/hosts 中的条目?

linux
  • 4 4 个回答
  • 83762 Views

4 个回答

  • Voted
  1. Best Answer
    Kvisle
    2013-04-12T10:25:29+08:002013-04-12T10:25:29+08:00

    该host程序用于libresolv直接执行 DNS 查询,即不使用gethostbyname.

    大多数程序在尝试连接到另一台主机时会调用gethostbyname系统调用或类似函数。该函数服从 的配置/etc/nsswitch.conf。该文件有一行在 Ubuntu 12.04 中默认为以下内容:

    hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
    

    这意味着它将首先使用/etc/hosts,然后回退到 DNS 查询。

    如果您想以这种方式执行主机查找,您可以使用getent hosts. 例如:

    $ getent hosts serverfault.com
    198.252.206.16  serverfault.com
    

    我希望这有帮助。

    • 63
  2. Matthew Ife
    2013-04-12T10:27:35+08:002013-04-12T10:27:35+08:00

    因为该host实用程序是专门的 DNS 查找实用程序。

    大多数应用程序使用库调用getaddrinfo或gethostbyname. 这些库询问一个名为的文件/etc/nsswitch.conf以确定查找优先级和如何执行不同查找的策略。

    通常/etc/nsswitch.conf包含行

    hosts:        files dns
    

    它告诉程序先查询/etc/hosts,如果不成功再查询 DNS。

    由于主机只执行 DNS 查找,因此它不会窥视/etc/hosts以进行查找。

    • 12
  3. Ladadadada
    2013-04-12T10:32:57+08:002013-04-12T10:32:57+08:00

    您会发现它dig的nslookup行为方式与host.

    这是因为所有这些命令的目的都是进行 DNS 查找,而不是查找文件。

    大多数其他程序使用操作系统的名称解析器进行咨询/etc/nsswitch.conf,然后(如果需要)/etc/resolv.conf决定如何解析您请求的主机名。(这是一个简化,还有其他选项。)nsswitch.conf文件通常优先于本地文件而不是 DNS。

    • 4
  4. MelBurslan
    2013-04-12T10:26:43+08:002013-04-12T10:26:43+08:00

    检查文件 /etc/nsswitch.conf 并查找以单词“hosts”开头的行?你在这一行看到“文件”这个词了吗?如果是,它是在“dns”这个词之前还是之后?

    在一个正常的系统上,这一行应该是这样的

    hosts      files dns
    

    如果您的不存在或顺序不同,那可能是您的问题。

    • -1

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 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