飞牛nas目前我知道的有如下几种远程访问的方式:
1、公网ip和动态公网ip v4v6下的直连
2、通过中转服务器实现的异地虚拟组网,大部分软件兼具打洞功能
3、通过中转服务器实现的内网穿透代理
4、通过串流服务器打洞实现的p2p直连
简介
本篇介绍第3种的软件实现方式:作用是内网穿透,本质就是通过中转服务器代理访问,所有数据经过中转服务器,中转服务器是有成本的,所以肯定会限速或者收费,飞牛nas的远程访问我不知道他有没有设置打洞,但他至少有内网穿透的代理功能
实现方式的相关软件:1、贝瑞花生壳 2、路由侠 3、飞牛nas的远程访问FNID 4、节点小宝 5、自建代理服务器。排序不分先后,软件其实应该还很多,但是内网穿透稍微了解一下就行,知道1-2个就行,端口代理没有虚拟局域网那么方便。反而是第5项自建代理的方法有兴趣的同学可以看看。
单纯内网穿透的软件,都可以同时安装存在,一般不会互相影响
1、贝瑞花生壳
无需依赖公网IP、无需配置路由器,花生壳支持在客户端上
添加端口映射,快速将内网服务发布到外网
windows版官网下载:https://hsk.oray.com/download/
控制台添加映射:https://console.hsk.oray.com/home
线路只有2条,每月流量限制1gb,带宽限速125kb/s
访问协议可以是http、https、tcp,http可以是固定80端口,tcp的外网端口只能是动态的
小结:聊胜于无,最后我发现官方网页没有docker版的,windows版可以用,有个可能是非官方版的容器部署失败,放弃,有兴趣的同学可以自己试试,映像是bygc612/hsk_ddns。类似的软件比如nat123、金万维快解析、natapp等有很多。
2、路由侠
路由侠有windows版的:https://www.luyouxia.com/download/
这里主要将部署nas用的docker版:
windows版安装好后,在设备中心中添加设备
获得安装码:***********
services:
luyouxia:
network_mode: host
container_name: luyouxia
privileged: true
restart: always
environment:
- code= ****** #需填写安装码
image: luyouxia/lyx
容器运行日志显示设备创建成功
windows端设备中心也显示出了nas
在内网映射里添加ip和端口,和花生壳差不多
应用场景如下:有自定义端口、网站80 443端口,和sock5代理服务
免费模式是按流量计费,每月可用1gb,带宽的都是收费的
这里我映射了下飞牛nas的页面,实测访问成功
优点:每个场景都会给你一个固定公网三级域名,端口不限制,场景较丰富
缺点:映射只有2条,流量只有1gb
小结:有流量小的需求可以试试,毕竟固定域名还是方便点
3、飞牛nas的远程访问FNID
这个原理上是内网穿透,但是又固定端口了,就一笔带过
飞牛nas开启了FN connect服务后,飞牛nas就可以通过FNID.fnox.net或者fnox.net/FNID穿透访问
4、节点小宝
节点小宝除了虚拟组网,也自带了内网穿透,而且穿透代理可以自定义二级域名,这个我感觉挺方便的,之前的虚拟组网篇章已经讲了,有需要的同学可以自己试试那些功能
5、自建代理服务器的内网穿透
方案原理:
这个方式主要途径是在有固定公网ip的云服务器上,自建代理服务,就能满足内网穿透需求,目前可以使用frp、nps、 Ngrok、SPP,4种方案,这里ngrok不讲,我没官网账号没有授权key
对于有公网ip的同学,也可以在软路由器上搭设代理服务,比公网ip直连可以安全一点
方案流程:
方案的流程是,在云服务器上运行服务端程序,在nas端运行客户端程序,建立服务器程序和客户端程序之间的隧道,我们的计算机就能通过访问云服务器上的公网ip地址来达到反向代理访问nas的目的
也可以在有公网ip的电脑上搭设代理服务器
因为我有一个公网ip的云轻量服务器(内置了宝塔),所以这些在我宝塔下演示下
1、frp框架搭设
frp的官方开源页:https://github.com/fatedier/frp
中文文档:https://gofrp.org/zh-cn/docs/
别人打包的dockerhub页:https://hub.docker.com/r/snowdreamtech/frps
云服务器上我们只搭建服务端程序,宝塔上我也采用docker compose安装,但我觉得宝塔的compose有点麻烦,多了个模板的操作。注意云服务器上防火墙关闭或者端口放行
services:
frps:
restart: always
network_mode: host
privileged: true # 拥有容器内命令执行的高权限
volumes:
- /etc/frp/:/etc/frp/
container_name: frps
image: snowdreamtech/frps
然后再宝塔的文件管理里/etc/frp/目录下上传配置文件(下面代码在txt文件编辑后修改名称为frps.toml,下同)
[common]
# 监听端口
bind_port = 6868
# 面板端口
dashboard_port = 7878
# 登录面板账号设置
dashboard_user = admin
dashboard_pwd = 12345678
# 身份验证
token = hswz
然后就可以访问公网IP:7878的frp后台面板了,然后再nas端搭建客户端程序
nas端的客户端程序frpc的dockercompose代码:
services:
frpc:
restart: always
network_mode: host
volumes:
- ./:/etc/frp/
container_name: frpc
image: snowdreamtech/frpc
下面是frpc.toml配置文件代码,自己把云服务器公网ip填下server_addr,(下面代码在txt文件编辑后修改名称为frpc.toml,上传到nas端的docker的frpc项目文件夹下):
[common]
server_addr = *****
#server_addr为FRPS服务器IP地址,即公网服务器的ip
server_port = 6868
#server_port为服务端监听端口,bind_port,与frps.toml中保存一致
token = hswz
#身份验证,与frps.toml中保存一致
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
#这里是nas本地管理页面用户名
admin_pwd = 12345678
#这里是nas本地管理页面密码
[admin_ui]
type = tcp
local_port = 7400
#这里是nas本地管理端口
remote_port = 5556
#这里是nas本地管理端口对应的云服务器管理端口
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 8000
#这里是飞牛的本地访问端口
remote_port = 5000
#这里的你云服务器访问local_port的端口
这是通过云服务器IP:5000端口成功访问nas
这是通过云服务器IP:5556端口成功访问nas的客户端管理页面
云服务器服务端也显示出了frpc配置文件上配置的隧道2个
云服务器一般不用考虑重启问题,nas端客户端如果经常重启可以考虑下
frpc的自动启动设置,可以参考官方文档,写的很细了,这里直接贴链接:
你搭建的服务器带宽决定了你的上传带宽,如果你家庭宽带是公网ip,把frps搭建在自己的软路由器上,那你的代理服务就跑满
类似的采用frp框架的网站有樱花frp、***Frp百度有很多,他们的免费通道也够用。可以不用像我一样在自己云服务器上搭建
2、nps搭建
开源代码页:https://github.com/ehang-io/
文档页:https://ehang-io.github.io/nps/
云服务器端:
services:
nps:
container_name: nps
network_mode: host
volumes:
- /etc/nps/:/conf
image: ffdfgdfg/nps
appname = nps
#Boot mode(dev|pro)
runmode = dev
#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=10080
#这个默认是80,修改是会和宝塔冲突
https_proxy_port=10443
#这个默认是443,修改是会和宝塔冲突
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key
##bridge
bridge_type=tcp
bridge_port=8024
bridge_ip=0.0.0.0
# Public password, which clients can use to connect to the server
# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
public_vkey=12345678
#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1
# log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
#log_path=nps.log
#Whether to restrict IP access, true or false or ignore
#ip_limit=true
#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000
#web
web_host=a.o.com
web_username=admin
web_password=12345678
web_port = 8080
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps
#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
auth_crypt_key =1234567812345678
#allow_ports=9001-9009,10001,11000-12000
#Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false
#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false
#cache
http_cache=false
http_cache_length=100
#get origin ip
http_add_origin_header=false
#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999
#client disconnect timeout
disconnect_timeout=60
配置文件的说明:
左边菜单客户端,新增 basic用户名和认证密码可以填一下,用与和nps-client客户端通信认证用的
生成了一个id2的客户端,这个唯一验证密钥记住,后面连接npc-client要用
这里设置一个tcp代理,因为飞牛nas的不是80端口,客户端就写刚才的id2,服务端口设置9999,这个9999是通过云服务器ip:9999来代理访问nas端客户端对应绑定端口的。目标(ip端口)写127.0.0.1:8000
客户端这里展开id2的详情,后面会用到
nas端docker compose部署代码:
services:
npc:
container_name: npc
network_mode: host
volumes:
- ./conf:/conf
image: ffdfgdfg/npc
command: -config=/conf/npc.conf
nas端的文件./conf/npc.conf文件配置如下:
[common]
server_addr=******:8024
conn_type=tcp
vkey=mfda0fl4znox9409
username=
password=
compress=true
crypt=true
rate_limit=10000
flow_limit=100
remark=test
max_conn=10
#pprof_addr=0.0.0.0:9999
#[http]
#mode=httpProxy
#server_port=9999
#[socks5]
#mode=socks5
#server_port=9004
#multi_account=multi_account.conf
[tcp]
mode=tcp
target_addr=127.0.0.1:8000
server_port=9999
我这配置只贴了常见的,还需要其他配置的看官方说明
客户端代理文件配置说明:https://ehang-io.github.io/nps/#/use?id=%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e6%a8%a1%e5%bc%8f
容器日志显示运行成功
云服务器服务端页面的客户端id2也显示在线了
3、spp框架搭设
dockerhub源码页:https://hub.docker.com/r/esrrhs/spp
云服务器端docker compose部署:开启后服务器端程序监听7777端口
services:
spp:
container_name: spp
restart: always
network_mode: host
image: esrrhs/spp
command: ./spp -type server -proto tcp -listen :7777
nas端客户端docker compose部署:
services:
spp:
container_name: spp-client
restart: always
network_mode: host
image: esrrhs/spp
command: ./spp -name "test" -type reverse_proxy_client -server ***:7777 -fromaddr :9000 -toaddr :8000 -proxyproto tcp
#这里填下云服务器ip就可以,fromaddr是服务器端口,toaddr是nas端口
这里spp的代理协议区分的比较清楚,这里是使用的反向代理类型reverse_proxy_client访问的nas端管理页面
我这只讲了个粗略部署,有兴趣的同学可以看看hub代码页的说明或者这篇文章也很详细:
4、Ngrok框架搭设
官网:https://ngrok.com/
这里类似的网站有**ngrok,像cpolar的代理方法我感觉也和ngrok类似
如果文章对您有帮助,
欢迎点赞、关注、分享
文章评论