创建DNS,用于解锁Netflix、Hulu、HBO Now等流媒体(netflix-proxy)(Dnsmasq + SNI proxy)

  • A+
所属分类:TOOL

最近看一个英剧综艺,发现可以在netflix上看,可惜ip不支持,就找了一下网上的资料。

假设能看奈飞的服务器是小鸡A,中转的服务器是小鸡B。我们需要在小鸡A上面搭建一个tcp反向代理,并能够劫持小鸡B的DNS解析到小鸡A上面。

大便和乌图系统;

apt-get -y install vim dnsutils curl sudo
curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io
mkdir -p ~/netflix-proxy
cd ~/netflix-proxy
curl -fsSL https://github.com/ab77/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1
./build.sh

 

  • 配置好小鸡A之后需要在小鸡B上面修改服务器DNS为小鸡A的ip,以便在小鸡A上解析DNS
  • 使用该代理观看Netflix的时候,小鸡A小鸡B同时消耗流量
  • 你要看奈飞->向b?发起请求->b?检测到你要请求奈飞->向a?请求->a?向奈飞请求数据并反代到b?->b?将数据回传->你看到奈飞

B:

可以看到生成了一个登陆网址用户名密码,用记事本保存。接着登录网页:

登陆之后点击「Add IP」,添加小鸡B的ip(ipv4/6均可),这样我们就完成了小鸡A的配置。

对于部署的docker容器的运行情况,我们可以使用docker ps -a来查看。

A:

修改/etc/resolv.conf文件,将nameserver改为小鸡A的ip。但是这个方法有弊端,用DHCP的服务器会不定期重置DNS,导致奈飞代理失效。下面给出几种解决的思路:

1、在服务器的其他地方保存resolv.conf文件的一个副本(假设放在/root),设置一个crontab定时命令cp /root/resolv.conf /etc/resolv.conf

2、添加写保护:chattr +i /etc/resolv.conf

3、修改生成resolv.conf的相关配置文件,具体可以谷歌。譬如centos7中需要修改/etc/NetworkManager/NetworkManager.conf

源码开源:https://github.com/ab77/netflix-proxy

旧版;新版遇到python3出问题换旧版。

apt-get update\
&& apt-get -y install vim dnsutils curl sudo\
&& curl -fsSL https://get.docker.com/ | sh || apt-get -y install docker.io\
&& mkdir -p ~/netflix-proxy\
&& cd ~/netflix-proxy\
&& curl -fsSL https://github.com/Newlearner365/netflix-proxy/archive/latest.tar.gz | gunzip - | tar x --strip-components=1\
&& ./build.sh

1

如何卸载恢复

  1. 首先停止所有Docker
    1
    2
    docker stop $(docker ps -aq)
    docker rm $(docker ps -aq)
  2. 恢复 iptables
    1
    2
    3
    4
    iptables -P INPUT ACCEPT
    iptables -P FORWARD ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -F

     

(Dnsmasq + SNI proxy)

二、自建DNS服务器

本文介绍的是一键脚本,直接配置好Dnsmasq + SNI proxy:

  • 原理简述:使用Dnsmasq的DNS将网站解析劫持到SNI proxy反向代理的页面上。
  • 用途:让无法观看流媒体的VPS可以观看(前提:VPS中要有一个是能观看流媒体的)。
  • 特性:脚本默认解锁Netflix Hulu HBO等,如需增删流媒体域名请编辑文件/etc/dnsmasq.d/custom_netflix.conf/etc/sniproxy.conf
  • 脚本支持系统:CentOS6+, Debian8+, Ubuntu16+

远程连接VPS1(能解锁Netlfix的VPS),执行下面的一键脚本开始安装:

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

安装好后提示如下,如果这里显示的IP不是你VPS1的IP,那么就需要手动修改文件/etc/sniproxy.conf中的IP地址:

远程连接VPS2(不能解锁Netflix的VPS),将DNS服务器修改成上面的IP地址。

直接修改配置文件即可:

vi /etc/resolv.conf

修改成你自己的DNS服务器

nameserver 154.17.*.* 

至此,你的VPS2也可以正常解锁Netflix了。

如果你不会修改DNS服务器,可以参考《Linux VPS修改DNS服务器配置教程

三、检查是否正常解锁Netflix

这时我们直接在VPS2上再次运行Netflix解锁检测小工具,可以看到已经能够正常解锁了:

当然你也可以用nslookup来查,首先安装nslookup:

Debian系统:

apt-get -y install dnsutils

Centos系统:

yum install -y bind-util

之后执行 nslookup netflix.com,看看返回的Address是不是VPS1的IP地址:

四、安全规则配置

为了防止DNS被其他人滥用,建议不要随意公布IP地址,我们也可以使用iptables限制访问VPS1(能解锁Netflix的VPS)的53端口(DNS服务器默认使用53端口)。

先限制所有IP访问53端口:

iptables -I INPUT -p tcp --dport 53 -j DROP

再允许VPS2(不能解锁Netflix的VPS)的IP访问:

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

五、问题排查

如果你没有成功安装DNS服务器,那么可以按照下面的步骤检查哪一步出了问题。

1、确认sniproxy有效运行

查看sni状态:

systemctl status sniproxy

如果sni不在运行,检查一下是否有其他服务占用80,443端口,以防端口冲突,先将其他服务更改一下监听端口,查看端口监听:netstat -tlunp|grep 443

2、确认防火墙放行80,443,53

可直接关闭防火墙

systemctl stop firewalld.service

阿里云/谷歌云/AWS等运营商安全组端口同样需要放行,可通过在线工具IP可用性检测工具检测对应端口。

 

 

 

 

weinxin
我的QQ群
这是我的QQ群扫一扫

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: