编辑
2025-01-21
技术
00

目录

使用DNS解锁流媒体的指南
前言
方法概述
搭建DNS解锁
快速安装(推荐)
普通安装
卸载
查看sni状态命令
查看端口监听命令
配置VPS A和VPS B
检测命令
限制所有IP访问53端口
允许VPS B的IP访问53端口
删除规则
修改系统DNS

使用DNS解锁流媒体的指南

前言

使用过Netflix、Hulu等流媒体的朋友应该都知道,要能正常播放这些流媒体的内容,需要特定的IP来解锁这些流媒体。然而,实际情况中会存在一个矛盾:不能解锁Netflix等流媒体的VPS流量很少,或者速度不理想;而流量多或速度好的VPS却不能解锁Netflix等流媒体。因此,使用DNS解锁流媒体成了最理想的方法。

方法概述

本方法出自GitHub,适用于CentOS6/7/8、Debian8/9/10、Ubuntu16/18。其原理是使用Dnsmasq的DNS将网站解析劫持到SNI proxy反向代理的页面上。我们可以简单理解为使用能解锁Netflix等流媒体的VPS的IP当作不能解锁Netflix等流媒体的VPS的DNS。

搭建DNS解锁

首先,我们需要有一台能正常解锁Netflix的VPS,然后使用SSH登录这台VPS,接着执行以下命令安装Dnsmasq和SNIproxy。Dnsmasq和SNIproxy需要用到53、80、443端口,因此需要放行这些端口。

快速安装(推荐)

bash
sudo apt install net-tools sudo apt update 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

普通安装

bash
wget --no-check-certificate -O dnsmasq_sniproxy.sh https://raw.githubusercontent.com/myxuchangbin/dnsmasq_sniproxy_install/master/dnsmasq_sniproxy.sh && bash dnsmasq_sniproxy.sh -i

卸载

bash
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

安装完成后,如果脚本最后显示的IP和实际公网IP不相符,请修改/etc/sniproxy.conf文件中的IP地址。

我们也可以使用命令来确认sniproxy是否有效运行,返还active(exited)即表示正在运行。

查看sni状态命令

bash
systemctl status sniproxy

如果未运行,请确认防火墙放行53、80、443端口,且确保其他服务没有占用80、443端口,以防端口冲突。

查看端口监听命令

bash
netstat -tlunp|grep 443

最后,把不能解锁Netflix的VPS的DNS修改为能解锁Netflix的VPS的IP即可。

配置VPS A和VPS B

简单来说,我们称能解锁Netflix的VPS为VPS A,不能解锁Netflix的VPS为VPS B。在VPS A上安装好Dnsmasq和SNIproxy后,把VPS B的DNS改为VPS A的IP地址即可。

完成以上操作后,可以用nslookup命令查看VPS B解析Netflix是否为VPS A的IP地址。

检测命令

bash
nslookup Netflix.com

如果命令不存在,则安装:

bash
apt-get -y install dnsutils yum install -y bind-utils

为了防止DNS被其他人滥用,需要使用iptables限制访问VPS A(能解锁Netflix的VPS)的53端口。

限制所有IP访问53端口

bash
apt-get update apt-get install iptables iptables -I INPUT -p udp --dport 53 -j DROP

允许VPS B的IP访问53端口

bash
iptables -I INPUT -s x.x.x.x -p udp --dport 53 -j ACCEPT

删除规则

bash
iptables -L -n --line-numbers sudo iptables -D INPUT <行号>

修改系统DNS

使用SSH工具以root身份登录需要修改的VPS,然后执行以下命令:

bash
vi /etc/resolv.conf

nameserver项修改为目标值,修改完毕后,按键盘ESC键,输入:wq保存即可。

为了让VPS重启后还是保持修改的DNS,可以选择锁定DNS文件,防止被自动更改。

bash
chattr +i /etc/resolv.conf

本文作者:misakv

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!