当我在我的 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 static
与123.456.789.1 nameOfMachine
线相连。
一般来说,您不会乱动文件/etc/hosts
。而且您绝对不会更改127.0.0.1 localhost
。123.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
。
回顾一下:
- 是的,您可以编辑它们。
- 不,您不应该编辑其中一些。