Linux主机:在hosts文件中设置主机名/ FQDN的目的是什么?

我刚买了一个 Linode VPS主机方案,并按照这个 guide进行设置.在“设置主机名”部分和“更新/ etc / hosts”中
“部分,它说要在这里设置的FQDN /主机名不需要与我即将主持的网站相关联,这让我感到困惑.

我通过阅读大量文章进行了自己的研究,但我仍然不太确定主机名/ FQDN在我的网络托管业务中扮演的角色.以下是我设法找到的一些基本事实,如果有任何错误,请随时纠正我:

>如果是“xxx”,FQDN必须类似于xxx.somedomain.com.省略,那么它不是FQDN.
根据https://kb.iu.edu/d/aiuv,我认为可以被称为子域的xxx也可以称为“主机名”.
>在我的本地计算机中,通过将以下行添加到hosts文件中

63.117.14.58 www.yahoo.com无论如何

每个网络对“www.yahoo.com”或“其他”的请求都将被重定向到IP地址63.117.14.58(这是google.com的IP).这是一种阻止本地计算机中不需要的站点的方法.

现在,教程建议将此行添加到服务器中的“hosts”文件中

12.34.56.78(//my server's IP) myhostname.anything.com myhostname

它提到在上面的行中,域名可能是也可能不是我要托管的域名,但主机名应该是我在前面的步骤中已设置的域名.我的问题是:

1)根据事实#3,我认为这一行会将服务器上myhostname.anything.com或myhostname的任何请求重定向到我的IP地址,但这是什么意思?不应该从用户的计算机上对myhostname.anything.com的任何请求已经被转换为某个IP地址(无论是否是我的IP地址)?为什么我必须在我的服务器上重定向它?我对HTTP请求如何工作的理解是当用户在浏览器中键入域名时,浏览器将联系域服务器,域服务器将根据域的DNS记录将其指向DNS服务器,然后是DNS服务器将解析IP地址,然后浏览器从该IP地址获取数据.我理解的这个过程似乎与我服务器上的“hosts”文件无关.

2)
答:关于FQDN,为什么主机名必须与我在服务器上设置的主机名相同,而域名不是?

B.如果我在这里设置不同的主机名,会发生什么?

C.在这里设置或不设置我的域名作为FQDN的目的是什么?

D.如果我只设置FQDN而不是主机名,会发生什么?像这样

12.34.56.78(//my server's IP) myhostname.anything.com

很多问题,但我相信其中一些问题的答案是重叠的,总的来说,我认为最重要的问题是“设置主机名/编辑主机文件在我的虚拟主机业务中扮演什么角色?”

感谢您提前的时间.

解决方法

人们回答这个问题的原因很简单,因为它从一个更简单的前提开始,然后从那里走下深深的兔子洞.让我们从头开始.

主机文件与DNS

我认为这不需要太多解释,所以我会保持简短. hosts文件的目的是定义不依赖DNS的主机到IP地址映射.服务器中最重要的是设备自己的名称,因为DNS服务器的问题很难阻止您的设备通过名称引用自身.

只要我们只使用主机文件,我们根本不需要使用域. DNS没有涉及,所以谁在乎呢?不幸的是,随着我们网络的发展,让每台设备独立跟踪网络上所有设备的名称变得不那么可持续.这导致我们使用DNS,并引入了一些新的后勤障碍.

主机名与FQDN

如果您愿意,主机名是设备名称或节点名称.它是一个唯一识别名称,对设备所有者有意义,并不一定有意义,甚至暴露给消费设备上的服务的人.这就是Linode所说的名称不需要与您托管的服务有任何关系.

例如,假设您拥有一家名为Contoso的公司,并且您运营一个名为example.com的网站.该网站托管在六台机器上,名为dalek01至dalek06.所有外界都需要知道的是,如果他们将www.example.com插入他们的网络浏览器,他们就可以获得他们想要的网站.过度好奇的时间领主不需要关心他们对www.example.com的请求是由dalek03提供的.

就其本身而言,主机名根本不一定与DNS有任何关系.它只是设备的名称,它甚至不一定具有与之关联的域后缀.到目前为止它很简单!

现在我们让事情变得有点棘手.讲故事的时间!

>您的公司Contoso拥有许多通过专用网络与dalek集群通信的台式机.
>当其中一台服务器出现问题时,您需要登录具有该问题的特定设备.我们不能只连接到www.example.com,因为它由几台不同的机器托管.我们有一个问题的服务器具有唯一标识名称是一件好事!
>由于我们拥有庞大的设备网络,因此我们最常使用DNS进行管理.这意味着我们需要将主机名dalek01通过dalek06粘贴到某个地方的DNS域中.幸运的是,我们拥有contoso.com(以我们公司命名),与www.example.com完全分开,后者可能是我们的客户之一.
>因为互联网不需要知道我们的内部IP地址,我们维护一个名为corp.contoso.com的私有DNS域.我们所有的桌面计算机都配置了一个DNS搜索后缀corp.contoso.com.这意味着如果我们创建一个名为dalek01.corp.contoso.com的DNS条目,我们网络上的任何人都可以通过使用SSH客户端连接到dalek01来访问该计算机.方便!
> dalek01知道它被称为dalek01,因为我们把它放在hosts文件中.我们希望它知道它也被称为dalek01.corp.contoso.com,但我们不希望它依赖DNS知道它自己的名字.那太傻了.因此,我们在dalek01上的hosts文件中为dalek01.corp.contoso.com定义了一个别名,以便它知道它的所有名称.
>与此同时,人们继续使用www.example.com,不知道你有六台服务器通过dalek06命名为dalek01,事实上你的公司名为Contoso(你的客户放在一边),或者为了方便你的您通过dalek06.corp.contoso.com为dalek01创建DNS记录的员工.

把它们放在一起

>您的主机名对您和运行服务器的人员有意义,而不一定是使用其服务的人员.
>主机名不需要存储在DNS中(或者根本没有DNS域),除非您拥有共享专用网络的多个设备.
>服务器依靠DNS与自己交谈是愚蠢的.
>将您的主机名置于DNS中,还需要在主机文件中定义该FQDN,以便它不依赖DNS使用FQDN与自身通信. (如上所述,会很愚蠢)

希望这涵盖了所有的基础.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...