![是否可以使用 /etc/hosts 值,同时仍(快速)恢复到其 DNS 值?](https://linux22.com/image/1584084/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20%2Fetc%2Fhosts%20%E5%80%BC%EF%BC%8C%E5%90%8C%E6%97%B6%E4%BB%8D%EF%BC%88%E5%BF%AB%E9%80%9F%EF%BC%89%E6%81%A2%E5%A4%8D%E5%88%B0%E5%85%B6%20DNS%20%E5%80%BC%EF%BC%9F.png)
我的家庭网络上托管着一台服务器。通常,我会从其 DNS 值(例如example.com
)访问它。但是,我的 ISP 的设置很尴尬,我无法从网络内部访问家庭网络的外部 IP,因此当我在家时,我不得不更改我使用的值。这对某些事情来说很困难。
我可以设置一个/etc/hosts
指向我的本地 IP 的值example.com
,但如果它在访问设备时遇到哪怕是一点点麻烦,就让它立即回退,这样我在其他地方的工作就不会变慢吗?
答案1
解析(DNS 解析)的工作方式是应用程序向解析器请求与主机名对应的 IP 地址。解析器会尝试多种方法(可配置),其中包括/etc/hosts
,并将第一个成功来源的地址返回给应用程序。
通常不能要求解析器合并来自所有来源的信息;它使用找到的第一个结果,在这种情况下它始终仅返回来自 /etc/hosts 的信息。
此外,解析器无法控制实际的连接建立。应用程序本身决定在创建连接时使用哪个地址,以及在尝试下一个连接之前要等待多长时间(如果有的话)。
因此,不可以,您不能自动回退“如果应用程序在访问设备时遇到哪怕是一点点麻烦”,除非您专门对应用程序进行编程以使其以这种方式运行。
但是,您可以检测您是否在家庭网络中,并根据是否在家庭网络中使用不同的配置。
这需要在您的笔记本电脑上编写一些脚本,或者需要您控制的家庭网络中的 DNS(代理)服务器。