Music
原理
其实DNS流媒体解锁的原理说白了就是DNS劫持+反向代理。假设你有2台VPS,一台VPS1能解锁Netflix(或其他流媒体),另一台VPS2不能解锁Netflix。
DNS流媒体的原理就是:
- 将VPS2的DNS指向到VPS1的DNS服务器上
- VPS1收到一般的域名请求会正常返回结果,但是收到Netflix、HBO、HULU等流媒体域名的请求时就会直接返回VPS1的IP,VPS2收到这个IP后便会误以为VPS1就是Netflix的服务器并与它建立连接,这时VPS1会将VPS2的流量代理到真正的Netflix的服务器,从而实现VPS2的Netflix解锁。
所以,如果你使用DNS解锁流媒体,那么观看Netflix时会同时消耗VPS1和VPS2的流量。
安装
安装注意事项:确认防火墙放行80,443,53
wget --no-check-certificate -O dnsmasq_sniproxy.sh https://raw.githubusercontent.com/myxuchangbin/dnsmasq_sniproxy_install/master/dnsmasq_sniproxy.sh && bash dnsmasq_sniproxy.sh -f
卸载
wget --no-check-certificate -O dnsmasq_sniproxy.sh https://raw.githubusercontent.com/myxuchangbin/dnsmasq_sniproxy_install/master/dnsmasq_sniproxy.sh && bash dnsmasq_sniproxy.sh -u
安装完成后,将代理VPS(即不能观看流媒体的vps)的DNS地址修改为这个主机的IP就可以了,如果不能用,记得只保留一个DNS地址试一下。
我这个美国vps不能解锁奈飞,那么这时候我将这台vps的dns设置为上面刚搭建好的dns解锁的IP,我们再试一下,我们使用以下命令修改(Debian/ubuntu)
echo -e "nameserver 4.4.4.4" > /etc/resolv.conf #将4.4.4.4修改为dns解锁IP
chattr +i /etc/resolv.conf
移除操作
chattr -i /etc/resolv.conf
echo -e "nameserver 8.8.8.8" > /etc/resolv.conf
更改完之后,我的美国vps成功解锁了奈飞。
调试排错
确认sniproxy有效运行
systemctl status sniproxy #查看sni状态
service sniproxy stop #停止sni服务
service sniproxy start #启动sni服务
如果sni不在运行,检查一下是否有其他服务占用80,443端口,以防端口冲突,先将其他服务更改一下监听端口,查看端口监听:netstat -tlunp|grep 443
ip白名单
考虑到有小伙伴担心ip泄露导致dns解锁会被滥用,这边教大家用防火墙做一个限制
apt install -y ufw
ufw enable
ufw allow 22/tcp
ufw allow from 你VPS的IP to any port 53
ufw allow from 你VPS的IP to any port 80
ufw allow from 你VPS的IP to any port 443
ufw default deny #此条命令一定要最后运行
apt install -y ufw
: 安装 ufw 工具。ufw enable
: 启用防火墙。ufw allow 22/tcp
: 允许来自任何地址的 TCP 流量访问本机的 22 端口,这通常是 SSH 服务的默认端口,用于远程登录。ufw allow from
你VPS的IP to any port 53: 允许来自指定 VPS IP 地址的流量访问本机的 53 端口,这通常是用于 DNS 服务的端口。ufw allow from
你VPS的IP to any port 80: 允许来自指定 VPS IP 地址的流量访问本机的 80 端口,这通常是用于 HTTP 服务的端口。ufw allow from
你VPS的IP to any port 443: 允许来自指定 VPS IP 地址的流量访问本机的 443 端口,这通常是用于 HTTPS 安全通信的端口。ufw default deny
: 设置默认的入站和出站规则为拒绝。这意味着除了明确允许的规则外,所有的入站和出站连接都将被阻止。
如果你想允许某个端口接受来自所有地址、所有端口的流量,可以使用以下命令:
ufw allow <端口号>/tcp
ufw allow <端口号>/udp
这将允许来自所有地址的 TCP\UDP 流量访问指定的端口。请替换 <端口号> 为实际的端口号。
例如,如果你想允许所有地址访问端口 1234,可以运行以下命令:
ufw allow 1234/tcp
ufw allow 1234/udp
这将在防火墙规则中添加一条允许 TCP\UDP 流量访问端口 1234 的规则。
ufw reload
重载ufw配置
ufw status
查看所有规则
ufw status verbose
查看详细信息
ufw status numbered
按规则号查看详细信息
按规则的规范性删除规则:
ufw delete <规范性>
替换 <规范性> 为规则的规范性,这通常是规则的序号。例如:
ufw delete 3
这将删除规则编号为3的规则。