一些服务,例如代理DNS,提供了一种访问受区域限制的网站(如 Hulu)的方法。我相信这类服务是基于 HTTP 代理的,当我们访问 hulu.com 时,HTTP 代理会将数据从我的计算机代理到 hulu.com。
但是,他们怎么能仅仅通过修改我的本地 DNS 到他们的服务器来做到这一点呢?
答案1
正向和反向代理
HTTP 代理有两种:正向代理和反向代理。
正向代理是您在浏览器设置中配置的代理(通常在大学和公司内进行)。这是用户更熟悉的一类代理。
另一方面,反向代理对于用户是透明的(用户不知道它的存在)并且通常位于实际 Web 服务器的“前面”。
下面的 SO 答案对这些内容的解释比我曾经写的更详细。 https://stackoverflow.com/questions/224664/difference-between-proxy-server-and-reverse-proxy-server https://stackoverflow.com/questions/220907/reverse-proxy
因此
有了这样的背景知识,ProxyDNS 等服务的作用就更容易理解了。由于您的 DNS 查询被路由到由他们控制的服务器,因此他们会使用备用 IP 回复 hulu.com 等服务的 DNS 查询。这个备用 IP 现在是他们运行的反向代理,而且这个反向代理很可能托管在美国。现在,hulu.com 本身就会看到来自美国地址的请求。
hulu网站
来自 ProxyDNS
$ nslookup hulu.com 74.207.242.213
Server: 74.207.242.213
Address: 74.207.242.213#53
Name: hulu.com
Address: 50.116.28.138
Name: hulu.com
Address: 23.92.31.241
来自我的提供商的 DNS
$ nslookup hulu.com
Server: 172.17.70.47
Address: 172.17.70.47#53
Non-authoritative answer:
Name: hulu.com
Address: 23.63.99.145
Name: hulu.com
Address: 23.63.99.184
维基百科
来自 ProxyDNS
$ nslookup en.wikipedia.org 74.207.242.213
Server: 74.207.242.213
Address: 74.207.242.213#53
Non-authoritative answer:
en.wikipedia.org canonical name = wikipedia-lb.wikimedia.org.
wikipedia-lb.wikimedia.org canonical name = text-lb.eqiad.wikimedia.org.
Name: text-lb.eqiad.wikimedia.org
Address: 208.80.154.224
来自我的提供商的 DNS
$ nslookup en.wikipedia.org
Server: 172.17.70.47
Address: 172.17.70.47#53
Non-authoritative answer:
en.wikipedia.org canonical name = wikipedia-lb.wikimedia.org.
wikipedia-lb.wikimedia.org canonical name = text-lb.eqiad.wikimedia.org.
Name: text-lb.eqiad.wikimedia.org
Address: 208.80.154.224