如何使用 DNS 服务器重定向到 HTTPS?

如何使用 DNS 服务器重定向到 HTTPS?

我使用 openDNS 服务器:208.67.222.123 / 208.67.220.123 作为我的电脑的 DNS 提供商。

当我访问不适当的 http://(成人内容)时,我被重定向到 https:// 开放 dns 站点。

我只是想知道 DNS 服务器如何将内容从 HTTP 重定向到 HTTPS?

(以及最终如何禁用它?)

答案1

OpenDNS DNS 系统在您请求不适当的网站时返回一个 IP 号码。您的浏览器连接到由 OpenDNS 运行的位于该 IP 的服务器。他们使用他们的代码从他们的服务器执行重定向。我怀疑你能改变这种行为。

答案2

当您的系统查找域名的 IP 地址(例如 example.com)时,您无法更改 OpenDNS 服务器返回的 IP 地址。如果 OpenDNS 服务器返回其自己的某个 Web 服务器的 IP 地址,则该 Web 服务器可以自动重定向到另一个 URL,例如从http://example.comhttps://example.com,如果 IP 地址通过返回HTTP 301状态代码以及重定向 URL 发送到您的浏览器。他们可以将您的浏览器重定向到https://example.com或者http://someothersite.com只要 example.com 解析为他们自己服务器的 IP 地址。

但是,您可以修改系统上的 hosts 文件,使其指向 example.com 的正确 IP。在 Microsoft Windows 系统上,该文件位于C:\Windows\System32\Drivers\etc\hosts。使用文本编辑器(如记事本)编辑该文件,但请确保记事本不会在文件名末尾添加 .txt,然后将以下行添加到文件中,替换真实 IP 地址和完全限定域名 (FQDN)

10.5.0.25 example.com

如果您可能使用 www.example.com 或 example.com,请将两者添加到主机文件中。例如:

10.5.0.25      example.com
10.5.0.25      www.example.com

注意:如果您的帐户不在系统的管理员组中,则需要右键单击记事本或您使用的任何编辑器,并选择“以管理员身份运行”,然后提供管理员帐户的用户 ID 和密码,以便保存您对 hosts 文件所做的任何修改。

您可以使用其他 DNS 服务器(例如 Google 提供的 8.8.8.8)通过在命令提示符下发出以下命令来查找 www.example.com 的正确 IP 地址:

nslookup example.com 8.8.8.8

或者,您可以使用在线 DNS 服务获取 example.com 的 IP 地址,例如DNS 查找

然后无论何时你把http://example.com在浏览器的地址栏中,系统应首先检查 hosts 文件中是否存在 FQDN 到 IP 地址的映射。如果在其中找到相关条目,则无需咨询 DNS 服务器即可获取 IP 地址。

由于您的系统配置为使用 OpenDNS 家长控制 DNS 服务器,例如,请参阅FamilyShield 路由器配置说明,而不是常规的 OpenDNS DNS 服务器,您将被重定向到 block.opendns.com 系统。也就是说,由于您的系统使用的是 208.67.222.123 和 208.67.220.123,而不是208.67.222.222 或 208.67.220.220因为后者对 sex.com 返回 206.125.164.82,Google 的 DNS 服务器 8.8.8.8 也是如此,而前者对 sex.com 返回 146.112.61.106 作为 IP 地址,所以您将被发送到 block.opendns.com,而不是该网站的网络服务器。

$ nslookup sex.com 208.67.222.222
Server:     208.67.222.222
Address:    208.67.222.222#53

Non-authoritative answer:
Name:   sex.com
Address: 206.125.164.82

$ nslookup sex.com 8.8.8.8
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   sex.com
Address: 206.125.164.82

$ nslookup sex.com 208.67.222.123
Server:     208.67.222.123
Address:    208.67.222.123#53

Non-authoritative answer:
Name:   sex.com
Address: 146.112.61.106

如果你通过以下方式连接到 146.112.61.106 的 80 端口远程登录并通过输入以下查询来模拟浏览器提交的查询,您可以看到该 IP 地址的网站的响应:

GET / HTTP/1.1
Host: sex.com

答复如下:

$ telnet 146.112.61.106 80
Trying 146.112.61.106...
Connected to 146.112.61.106.
Escape character is '^]'.
GET / HTTP/1.1
Host: sex.com

HTTP/1.1 403 Forbidden
Server: openresty/1.7.7.2
Date: Sun, 09 Aug 2015 18:05:01 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive

202
<html><head><script type="text/javascript">location.replace("https://block.opendns.com/?url=84708915688078&ablock&server=ash15&prefs=&tagging=&nref");</script></head></html> 

我现在不确定你到底想做什么。如果你想要像问题所建议的那样访问实际的网站,hosts 条目应该允许你这样做,只要你向其中添加以下条目:

206.125.164.82   sex.com
206.125.164.82   www.sex.com

但是,如果你希望将浏览器重定向到你控制的网站(如你的评论所建议的那样),那么你可能需要使用代理服务器,例如Fiddler并将其安全证书添加到系统上的受信任根证书列表中,这样它就可以成为中间人(MITM)这样您系统上的浏览器就不会意识到它们没有获得您使用 HTTPS 访问的网站的实际安全证书。一些恶意软件,例如天才盒子,使用 MITM 攻击来拦截和更改 HTTPS 流量。

相关内容