最近看一个英剧综艺,发现可以在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出问题换旧版。
1
如何卸载恢复
- 首先停止所有Docker
|
1
2
|
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
|
- 恢复 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可用性检测工具检测对应端口。