Nas网络直通:打通大内网、安全可靠、教你外网轻松看电影
我之前其实一直使用ipv6的方式来观看远程看电影,体验还算满意,但是受限于网络环境,在没有ipv6的情况下就无法观看了。
最近又研究了一下Lucky的STUN穿透,但是穿透后ip和端口每次都会随机变化,我还要打开lucky、修改webdav地址为新的ip端口,很是麻烦。
包括听说最近的飞牛漏洞,大部分Nas都是裸跑在公网上,所以搭建了一套基于Lucky、clash服务端+客户端的一套类似内网穿透教程,避免被黑。
网络直连、无惧网络环境,仅需要2个服务接口更新配置信息,可使用云服务器、免费托管vps、静态网站托管等。
第一步:Nas服务器部署Lucky+Classh服务端
创建
config.yaml
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: direct # rule(规则模式)、global(全局模式)和 direct(直连模式)
log-level: info
external-controller: '0.0.0.0:9090'
secret: "xxxxxxxx" # 随意设置
authentication:
- "xxx:123456" #TODO 配置用户名和密码,下面会用到
dns:
enable: true
ipv6: false
default-nameserver: [223.5.5.5, 119.29.29.29, 114.114.114.114]
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
use-hosts: true
nameserver: ['https://doh.pub/dns-query', 'https://dns.alidns.com/dns-query']
rules:
- MATCH,DIRECT # 其他走代理
创建
docker-compose.yaml
version: '3'
services:
lucky:
image: docker.1panel.live/gdy666/lucky:2.24.0
container_name: lucky
network_mode: host
environment:
TZ: Asia/Shanghai
volumes:
- ./luckyconf:/app/conf
- /var/run/docker.sock:/var/run/docker.sock
restart: always
clash:
image: docker.1panel.live/dreamacro/clash
container_name: clash
restart: always
ports:
- "9090:9090"
- "7890:7890"
volumes:
- ./config.yaml:/root/.config/clash/config.yaml
- /etc/localtime:/etc/localtime
启动服务
docker-compose up -d
第二步:部署服务接口
我使用的是自己的云服务器,docker部署:
在
data目录下创建proxy.nas.yaml文件并设置您的配置:
“proxy.nas.server" proxy.nas.port 这段内容尽量不要修改,主要是为了占位做字符串替换
mixed-port: 7890
allow-lan: true
bind-address: '*'
mode: rule
log-level: info
external-controller: '127.0.0.1:9090'
proxies:
- { name: "Nas代理", type: http, server: proxy.nas.server, port: proxy.nas.port, username: xxxxx, password: xxxxx } #TODO 配置为nas里config.yaml中的用户名密码
proxy-groups:
- { name: Nas代理组, type: select, proxies: [DIRECT,Nas代理] }
rules:
- 'IP-CIDR,192.168.x.0/24,Nas代理组' #TODO 配置哪个网段走Nas代理,比如我的 192.168.7.0/24,也可以配置ip:192.168.7.9/32
- MATCH,DIRECT # 其他走代理
version: '3.8'
services:
electerm-sync:
image: jinuary/electerm-sync-server
ports:
- "7837:7837"
volumes:
- ./data:/app/data
environment:
- JWT_USERS=user1,user2
- JWT_SECRET=your-secret-key
- CLASH_TOKEN=your-clash-token #随机字符串,用于安全校验
restart: unless-stopped
docker-compose up -d启动服务接口
部署成功后,有2个服务接口:
更新接口:http://xxx.com/api/config/setClash?token=your-clash-token
获取接口:http://xxx.com/api/config/getClash?token=your-clash-token
第三步:配置穿透
打开Lucky,找到 STUN内网穿透,配置好穿透规则(请自行参考Lucky文档,这里忽略),关键配置见截图
说明:lucky穿透成功后,会主动调用webhook,通知接口服务进行配置更新。
1771054759306第四步:客户端使用
下载clash相关客户端,各个平台都有,百度自行搜索
添加订阅:输入
http://xxx.com/api/config/getClash?token=your-clash-token配置自动更新, 60分组
全部配置完成后,开启代理客户端(注意代理规则上,Nas代理组要选到代理上)。
1771055160854打开浏览器、App等配置nas的内网ip+相关服务端口,即可正常访问Nas服务器的资源。
比如我的lucky:http://192.168.7.9:16601/
webdav:http://192.168.7.9:7774/
额外注意事项:
windows客户端要使用TUN模式
安卓要关闭【绕过网络私有地址】
ios小火箭要手动改下规则:允许你的nasip可以走代理
原理说明
Lucky进行STUN内网穿透,生成一个公网的ip+端口,转发到nas部署的clash代理服务端口7890
Lucky调用webhook,通知服务接口修改为新的配置。
客户端和nas属于网络直连,服务接口相当于一个桥梁作用,动态修改内网穿透的地址
此方式可使用http、tcp、ssh、rdp等协议,但是不能ping
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
