了解 Linux 计算机上的 hosts 文件

了解 Linux 计算机上的 hosts 文件

当我在我的 Ubuntu 机器上阅读时/etc/hosts,前两行如下:

ipAddr1 localhost
ipAddr2 nameOfMachine

这些 IP 地址是我的计算机特有的还是与我所连接的网络有关?此外,可以编辑这些 IP 地址,但 IP 地址不是硬件写入的吗?

答案1

您的机器上的 IP 地址与硬件无关,您显示的前两行与您的机器连接到网络的方式有关。硬件中与网络相关的唯一项目是 MAC 地址,这是完全不同的东西。

通常,当您将网络接口连接到网络时,会根据系统设置分配 IP 地址。因此,当您这样说时:

ipAddr1 localhost
ipAddr2 nameOfMachine

但地址应该是这样的;举123.456.789.1个例子:

127.0.0.1   localhost
123.456.789.1 nameOfMachine

该地址127.0.0.1是环回地址的普遍接受标准localhost。这123.456.789.1是您的计算机在获得网络连接时分配给它的网络地址。在 Linux 计算机上,设置方式如下,/etc/network/interfaces您可以查看:

cat /etc/network/interfaces

该文件的相当标准和基本的设置interfaces如下:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 123.456.789.1
netmask 255.255.255.0

这与您在 中看到的内容直接相关/etc/hosts。与face lo inet loopback您在 线中看到的内容相连127.0.0.1 localhost, 也face eth0 inet static123.456.789.1 nameOfMachine线相连。

一般来说,您不会乱动文件/etc/hosts。而且您绝对不会更改127.0.0.1 localhost123.456.789.1 nameOfMachine当 Linux 首次安装在机器上时,可能会自行分配一些内容,并且应该保留在那里。这样您就可以在主机上nameOfMachine执行类似操作ping nameOfMachine而不会失败。

答案2

它们由 Ubuntu 安装程序根据您输入的系统主机名放置在那里。

/etc/hosts文件可能(默认情况下)被你的系统使用DNS 解析器每当应用程序需要进行 DNS 查找时。

在 DNS 出现之前,每台机器都有一个本地 hosts 文件,并会查阅它将域名转换为 IP 地址。

现在,通常会向 DNS 服务器发出请求,但 hosts 文件仍然存在,如果您的系统配置为使用该文件,它会在进行外部 DNS 查询之前查找此文件中的名称。

您的计算机的主机名出现127.0.0.1在此文件中,因为外部 DNS 服务器不会知道您的本地主机名,除非它以某种方式与 DHCP 合作(Microsoft AD/DHCP/DNS 服务器会这样做)。因此,这样做是为了使 DNS 查找“localhost”或您的计算机主机名将返回正确的结果。

@Giacomo1968 的回答启发我添加了这个:不要删除或更改 localhost 条目 - 除非你更改你的主机名!有些程序需要你的本地主机名才能正确解析(exim4其中之一)。

@Hennes 回答没错,IP地址在硬件中不存在,只有MAC存在。

答案3

首先,IP 地址不是写在硬件中的。MAC 地址才是。

是的,您可以编辑它们。您审查了实际 IP,但我怀疑其中至少有一个是127.0.0.1,您不应该更改。很多事情都取决于能否“通过网络”访问自己的计算机。

这些对计算机的调用可以实际是其他计算机的调用,也可以回送到计算机本身。出于效率原因,如果这些调用是发给自己的,而实际上不需要通过网络发送,那就太好了,所以我们使用回送接口。我们为这个回送接口分配了范围127.0.0.0/8,通常实现为127.0.0.1

回顾一下:

  • 是的,您可以编辑它们。
  • 不,您不应该编辑其中一些。

相关内容