![HTTPS 请求期间 DNS 和 /etc/hosts 在名称解析方面的差异](https://linux22.com/image/1407671/HTTPS%20%E8%AF%B7%E6%B1%82%E6%9C%9F%E9%97%B4%20DNS%20%E5%92%8C%20%2Fetc%2Fhosts%20%E5%9C%A8%E5%90%8D%E7%A7%B0%E8%A7%A3%E6%9E%90%E6%96%B9%E9%9D%A2%E7%9A%84%E5%B7%AE%E5%BC%82.png)
我的问题是:在 HTTPS 连接期间,DNS 和基于 /etc/hosts 的静态解析方法在名称解析方面有什么区别?为了使用 https 连接到站点,第一个操作是向 DNS 询问所请求服务器的 IP(如果 /etc/hosts 中没有该域的记录)。
我试图弄清楚为什么我只能使用 /etc/hosts 文件中的正确 IP(而不是使用 DNS)才能连接到服务器。
服务器的 URL 是“https://www.ovh.it/managerv3/login.pl“如果 /etc/hosts 中没有记录“94.23.64.34 www.ovh.it”,我就无法连接到它。还有另一个我无法解释的事实:当我连接到我的 ADSL 时,我必须使用这个技巧,但是当我通过手机使用网络共享时,一切都正常(也无需更改 /etc/hosts)。
如果我 ping 域名 www.ovh.it,两个连接的结果相同:
PING www.ovh.it (198.27.92.4): 56 data bytes (ADSL)
PING www.ovh.it (198.27.92.4): 56 data bytes (TETHERING)
如果我 ping 域 ovh.it,两个连接上的结果是相同的:
PING ovh.it (94.23.64.34): 56 data bytes (ADSL)
PING ovh.it (94.23.64.34): 56 data bytes (TETHERING)
使用 ping(ICMP 协议)时,两个连接上的名称解析结果相同。为什么使用浏览器和 HTTPS 连接时我无法使用 ADSL 连接到服务器,而我的 SMATPHONE 的 TETHERING 却没有问题?为什么在 /etc/hosts 中手动插入 ovh.it 上的 ip 后,它也能连接到我的 ADSL?
附加信息:我尝试使用 Safari、Chrome 和 Firefox,结果相同。我尝试重新启动笔记本电脑和 wifi 路由器(ADSL 路由器)。我也尝试使用另一台笔记本电脑。
答案1
我想您可能知道问题的答案。区别在于 /etc/hosts 是静态的,而 DNS 是动态的。DNS 查找在指定的时间段内有效,之后客户端将重新查询。DNS 服务器还可以智能地返回结果 - 例如充当简单的负载分散器或故障转移到备份服务器。
就您而言,显然客户端 PC(某种 Linux?您没有说)或 ADSL 路由器的配置似乎有误。
首先,检查您是否没有在 PC 的网卡上设置某种固定配置。其次,检查路由器的配置,确保它提供了有效的 DNS 服务器。如果 PC 设置为使用来自路由器的 DHCP,请检查路由器是否将自己报告为 DNS 服务器(对于消费级路由器来说非常常见)。如果是,请更改 DHCP 配置以向客户端 PC 提供正确的 DNS 服务器,例如您的 ISP、Google 或最好的 OpenDNS。
我能想到的另一种可能性是,您在通过 ADSL 连接时使用了 ISP 的 DNS,但 DNS 已损坏。这种情况并不罕见。更改为使用 OpenDNS 或 Google DNS,看看是否能解决问题。
尽管使用该hosts
文件似乎有效,但您正在修复 IP 地址,而像 OVH 这样的服务可能会使用几组您无法访问的地址。