通过 Nginx 代替 SNIProxy 并配合 Dndmasq 来部署流媒体解锁DNS
折腾前言
之前大家都在用的几个方案中的 SNIProxy 已经在23年年底处于不维护状态,再加上 Nginx 在1.24版中加入了对 IPv6 的支持,这使得拥有 ASN 的我在部署流媒体 DNS 解锁服务器上的方案变得更加灵活。
曾经的方案A,支持网页管理指定 IP 入站:
https://github.com/ab77/netflix-proxy
曾经的方案B,使用简单没用那么多要求限制:
https://github.com/myxuchangbin/dnsmasq_sniproxy_install
虽然说 SNIProxy 配置起来十分方便,但是使用 systemctl 重启的时候却是十分麻烦,于是有了本文的代替方案。
部署前言
流媒体 DNS 解锁服务需要一台解锁机,所以:
先测试一下所需的流媒体是否解锁:bash <(curl -L -s check.unlock.media)
测试无误后就可以开始部署环境了
安装与配置 Nginx
根据自己的系统这里选择安装:https://nginx.org/en/linux_packages.html
在安装之后,配置 Nginx:nano /etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log info;
events {
worker_connections 1024;
}
stream {
log_format main '[$time_local] remoteAddr: $remote_addr '
'serverAddr: $server_addr '
'$protocol status: $status sent: $bytes_sent recv: $bytes_received '
'session_time: $session_time '
'upstream_addr: $upstream_addr';
access_log /var/log/nginx/nginx-stream-access.log main;
map $ssl_preread_server_name $filtered_sni_name {
~^(.*|)netflix\.com$ $ssl_preread_server_name;
~^(.*|)netflix\.net$ $ssl_preread_server_name;
~^(.*|)nflximg\.com$ $ssl_preread_server_name;
~^(.*|)nflximg\.net$ $ssl_preread_server_name;
~^(.*|)nflxvideo\.net$ $ssl_preread_server_name;
~^(.*|)nflxext\.com$ $ssl_preread_server_name;
~^(.*|)nflxso\.net$ $ssl_preread_server_name;
~^(.*|)fast\.com$ $ssl_preread_server_name;
default "127.255.255.255";
}
server {
resolver 1.1.1.1 [2606:4700:4700::1111] ipv4=off; # 根据需求改DNS,如果需要IPv4 那么把 off 改为 on
listen 127.0.0.1:443; # 如果使用 IPv4 用这条,并把 127.0.0.1 替换为你的IP
listen [fe80::a]:443; # 如果使用 IPv6 用这条,并把 fe80::a 替换为你的IP
ssl_preread on;
proxy_pass $filtered_sni_name:443;
proxy_bind 你的IP; # 根据上方所使用的来修改 你的IP 为对应 IPv4 或 IPv6
}
}
接下来保存、退出,重载 systemctl restart nginx
即可
安装与配置 Dnsmasq
Debian 12 直接:apt install dnsmasq
在安装之后,配置 Dnsmasq:nano /etc/dnsmasq.conf
domain-needed
bogus-priv
no-resolv
no-poll
all-servers
server=8.8.8.8
server=8.8.4.4
cache-size=2048
local-ttl=60
interface=*
address=/netflix.com/1.2.3.4
address=/netflix.net/1.2.3.4
address=/nflxvideo.net/1.2.3.4
address=/nflxext.com/1.2.3.4
address=/nflximg.com/1.2.3.4
address=/nflximg.net/1.2.3.4
address=/nflxso.net/1.2.3.4
address=/fast.com/1.2.3.4
address=/netflix.com/fe80::a
address=/netflix.net/fe80::a
address=/nflxvideo.net/fe80::a
address=/nflxext.com/fe80::a
address=/nflximg.com/fe80::a
address=/nflximg.net/fe80::a
address=/nflxso.net/fe80::a
address=/fast.com/fe80::a
替换上方 1.2.3.4 为你的 IPv4,当使用IPv6请替换 fe80::a 为你的 IPv6,否则删掉这几行即可。
接下来保存、退出,重载 systemctl restart dnsmasq
即可
最后
当你需要看流媒体的话,只需要将 DNS 修改为上面解锁机的 IPv4 即可,如果使用IPv6也是可以使用 IPv4 的地址的(观看 netflix 节目时会自动走IPv6这样)。
当然,这样并不能防止被人白嫖,你可能还需要配置防火墙让443、53端口的流量指定为允许的IP通过。