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
    • 最新
    • 标签
主页 / unix / 问题 / 421491
Accepted
MikiBelavista
MikiBelavista
Asked: 2018-02-03 09:52:50 +0800 CST2018-02-03 09:52:50 +0800 CST 2018-02-03 09:52:50 +0800 CST

/etc/hosts 的目的是什么?

  • 772

据我了解,该hosts文件是帮助解决计算机网络中的网络节点的几个系统工具之一。但是里面应该是什么?当我默认安装 Ubuntu 时

127.0.0.1 localhost 

将在那里。为什么?

  • /etc/hosts在像 Cassandra 这样的 JVM 系统中如何工作?
  • 什么时候是 DNS 替代方案,我猜不是在一台计算机上?
dns hosts
  • 3 3 个回答
  • 39513 Views

3 个回答

  • Voted
  1. Best Answer
    user232326
    2018-02-03T10:16:59+08:002018-02-03T10:16:59+08:00

    该文件/etc/hosts始于 DARPA 的旧时代,作为连接到 Internet 的所有主机的解析文件(在 DNS 存在之前)。它具有最高优先级,这意味着此文件优先于任何其他名称系统。1

    但是,作为单个文件,它不能很好地扩展:文件的大小很快就会变得太大。这就是开发 DNS 系统的原因,这是一个分层的分布式名称系统。它允许任何主机有效地找到其他主机的数字地址。

    很老的文件概念很/etc/hosts简单,就是一个地址和一个主机名:

    127.0.0.1      localhost
    

    对于每一行。这是地址主机对的简单列表。2

    它目前的主要用途是绕过 DNS 解析。在文件中找到的匹配项/etc/hosts将在任何 DNS 条目之前使用。事实上,如果localhost在文件中找到搜索的名称(如 ),则根本不会执行 DNS 解析。


    1嗯,名字解析的顺序其实是定义在里面的/etc/nsswitch.conf,里面一般都有这个入口:

    hosts:          files dns
    

    这意味着“尝试文件(/etc/hosts);如果失败,请尝试 DNS。”

    但这个顺序可以改变或扩大。


    2(现在)hosts 文件包含的文本行由第一个文本字段中的 IP 地址和一个或多个主机名组成。每个字段都由空格分隔 - 由于历史原因,通常首选制表符,但也使用空格。可能包括注释行;它们由位于此类行的第一个位置的八字形 (#) 表示。文件中的完全空白行将被忽略。例如,典型的 hosts 文件可能包含以下内容:

    127.0.0.1   localhost loopback
    ::1         localhost localhost6 ipv6-localhost ipv6-loopback mycomputer.local
    192.168.0.8 mycomputer.lan
    10.0.0.27   mycomputer.lan
    

    此示例包含系统环回地址及其主机名的条目,第一行是 hosts 文件的典型默认内容。第二行有几个额外的(可能只在本地系统中有效)名称。该示例说明一个 IP 地址可能有多个主机名(localhost 和 loopback),并且一个主机名可以映射到 IPv4 和 IPv6 IP 地址,分别如第一行和第二行所示。一个名称 ( mycomputer.lan) 可以解析为多个地址 ( 192.168.0.8 10.0.0.27)。但是,在这种情况下,使用哪一个取决于为计算机设置的路由(及其优先级)。

    一些较旧的操作系统无法报告给定名称的地址列表。

    • 64
  2. francois P
    2018-02-03T09:58:54+08:002018-02-03T09:58:54+08:00

    使用 /etc/hosts 文件为桌面环境中的本地系统提供人类可读的名称是完全合理的。hosts 文件非常适合在家庭网络甚至小型企业环境中使用。这不能像互联网寻址那样是公共方面——那么你需要 DNS。如果本地网络足够大,或者只是切入不同的子网,或者其他任何有用的原因,首选DNS。

    本地主机文件和 DNS 以不同的优先级进行管理,因此永远不会有任何冲突。

    • 5
  3. ron
    2018-02-03T10:43:36+08:002018-02-03T10:43:36+08:00

    127.0.0.1 localhost在 linux 中,我敢说文件中至少应该有 localhost/etc/hosts 的相应 IPv6 地址。

    它只是将主机名解析为数字 IPv4 或 IPv6 地址。当您尝试通过网络连接到 (a) unix.stackexchange.com地球上可能不在您附近的某个地方,或 (b)您家中局域网上的myotherpc时,它要么是/etc/hosts某个域名服务器 (DNS),要么是某个域名服务器 (DNS)正在执行主机解析,因此当您键入unix.stackexchage.com时,作为人类您所关心的,您不必为此记住185.53.179.7,这是计算机真正需要知道的。

    正如所指出的,在 linux 中/etc/nsswitch通常定义主机名解析顺序,这意味着在检查 NIS 之前先检查 DNS,然后最后检查文件,/etc/hosts否则找不到主机

    您如何管理订单检查以及管理 DNS 或 NIS 服务的内容/地点/谁取决于您,或者您可以通过修改/etc/nsswitch来覆盖所有内容,仅检查而不/etc/hosts检查 DNS 或 NIS 或...

    对于由几台计算机组成的简单家庭网络,比如 2 到 N,管理员只需/etc/hosts在每台计算机上进行编辑以使其正确,这比设置域名服务器或其他服务以拥有一个主位置或对 IP 地址进行主机名解析的权限。

    对于 linux 网络搜索背后的历史和原因localhost。linux 中的许多事情都依赖于名称 localhost 解析为 127.0.0.1,如果不发生这种情况会导致问题,并且此 localhost 定义将/应该发生在本地系统文件中,例如 /etc/hosts。

    /etc/hosts默认情况下,通常是 linux 操作系统在进行主机名解析时的最后决定权和最后一件事。在 Windows XP 和 7 中,相应的文件是C:\Windows\System32\drivers\etc\lmhosts 我不知道 Windows 8 或 10。

    • 3

相关问题

  • 什么是根域?[关闭]

  • 如何使用不同的 DNS 服务器将主机名解析为 ip?

  • /etc/hosts 没有阻止任何东西

  • bind9反向解决问题

  • 如何验证我使用 9.9.9.9 作为 DNS?

Sidebar

Stats

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

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve