关于 /etc/hosts 和我的 DHCP 分配地址的问题

关于 /etc/hosts 和我的 DHCP 分配地址的问题

在阅读有关 Linux 的文章时,我了解到:

您只需输入不带参数的 hostname 即可查看系统的主机名。

anupam@JAZZ:~$ hostname
JAZZ

然后我发现了这个:

该特殊hostname localhost与 IP 地址相关联127.0.0.1,并描述您当前所在的机器(通常具有其他与网络相关的 IP 地址)。

我尝试过:

anupam@JAZZ:~$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   JAZZ

# 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

我很困惑,这里给出了但与之关联的 IP 不是 hostnameJAZZJAZZ不符合描述的第二部分。127.0.1.1127.0.0.1

另一个疑问:我可以使用我的动态 IP(由我的 wifi 连接中的 DHCP 配置)作为本地主机来托管我的 html 或 php 文件吗?

我猜localhosthostname在这里表示相同的意思。localhost也称为loopback address,它对应于 127.0.0.1 不是吗?

答案1

你问了两个问题,所以我必须把它们分开。


首先,关于你的前两行/etc/hosts

这里有几个部分我们需要考虑。首先,localhostJAZZ分别位于本地环回地址127.0.0.1127.0.1.1

IP 地址的“环回”范围是。所有这些都被视为“本地环回”,并且从技术上讲,这些地址中的任何一个都被视为“本地”。但是,将 127.0.0.1 及其自身或该命名空间内的其他地址127.0.0.0 - 127.255.255.255放在一起并没有什么坏处。localhost$HOSTNAME127.0.1.1

考虑到所有这些127.0.0.1 - 127.255.255.255都被视为本地环回,在引用您自己的主机名时,在该命名空间内本地分配哪个地址实际上并不重要。(话虽如此,在您的习惯中,将as/etc/hosts设置为,因为这通常是系统处理它的方式。理论上,您可以将它放在任何东西上,但这是默认值,通常是它所在的位置。)localhost127.0.0.1127.0.0.1

此外,你的消息来源还引用了以下内容:

特殊主机名localhost与 IP 地址 127.0.0.1 相关联,并描述您当前所在的机器(通常具有其他与网络相关的 IP 地址)。

它具体指的是localhost,而不是您的机器的主机名。


第二个问题与你的动态 IP 有关。

这应该是一个问题,但我认为我们需要重新定义你在问什么。你问的是:

另一个疑问:我可以使用我的动态 IP(由我的 wifi 连接中的 DHCP 配置)作为本地主机来托管我的 html 或 php 文件吗?

让我们换个方式问这个问题:

我可以将无线路由器分配的动态 IP 与其他系统一起使用来托管我的 HTML 或 PHP 文件吗?

我这样重新定义你的问题,因为你无法localhost在计算机之外使用。 127.0.0.1 - 127.255.255.255只能在那台计算机上工作。如果你要求使用你的动态192.168.x.x(或在你的 wifi 上配置的任何私有 IP 范围)地址来存储你的文件,那么你指的是你网络上其他地方的具有该 IP 的计算机,而不是本地主机。

为此,您的路由器需要能够解析HOSTNAME来自其他系统的查询并指向私有内部 DHCP 地址,或者每个其他系统都需要hosts编辑其文件以指向hostnameDHCP 地址。

现在,如果您想在网络外部托管文件,您将需要两样东西:(1)来自某个动态 DNS 提供商的动态 DNS 地址。(2)从路由器到内部计算机地址的端口转发。(不过,还有其他问题和答案,因此我在这里不详细介绍)

相关内容