DNS解锁其实就是通过改用特定的 DNS 服务器,把目标网站(常见为 Netflix、Disney+ 等)的域名解析到位于可观看地区的「代理节点」上,从而绕过地理限制。
原理陈述
- 你把设备或路由器的 DNS 改成服务商提供的 Smart DNS 地址。
- 当系统查询被列入“解锁名单”的域名时,Smart DNS 返回代理节点 IP,而不是官方 IP。
- 客户端随后与该代理节点建立 TLS 连接;节点再用自己的区域 IP 把流量转发给目标网站(常见做法是 SNI Proxy)。
- 网站只看到代理节点的 IP,认为你处于允许地区,于是放行内容。其它域名的解析与流量不做任何改动。
实操
我参考的是这篇文章:
通过dnsmasq进行DNS解锁
大概过程解析
首先安装dnsmasq:
apt-get -y install dnsmasq编辑 `/etc/dnsmasq.conf,将解锁域名指向测试通过的 DNS 地址。例如:
# > DAZN
server=/dazn-api.com/22.22.22.22
server=/dazn.com/22.22.22.22
server=/dazndn.com/22.22.22.22
server=/indazn.com/22.22.22.22
server=/d151l6v8er5bdm.cloudfront.net/22.22.22.22
server=/d1sgwhnao7452x.cloudfront.net/22.22.22.22
server=/dcalivedazn.akamaized.net/22.22.22.22
server=/dcblivedazn.akamaized.net/22.22.22.22注意这里的22.22.22.22需要改成DNS解锁的服务器。完整的命令参考原始文章
接下来设置fallback DNS,创建一个文件/etc/resolv.dnsmasq.conf,其中写入:
nameserver 8.8.4.4
nameserver 1.1.1.1fallback DNS的作用是当其他的都失效了,那么就会访问到这个fallback DNS。相当于前面规则里面没有提到的,都直接走8.8.8.8。
然后把本系统 DNS 指向本 VPS:
chattr -i /etc/resolv.conf
echo -e "nameserver 127.0.0.1" > /etc/resolv.conf
chattr +i /etc/resolv.conf
/etc/init.d/dnsmasq restart修改本地(或路由) /etc/resolv.conf,使 nameserver 127.0.0.1,并锁定该文件,确保后续不会被 DHCP 或其他服务改写
最后重启dnsmasq服务:
/etc/init.d/dnsmasq restart