1.前言
实现内网穿透的过程是折腾NAS中最麻烦的一部分,这里单独拿出来作为一个记录。
首先,讲一下我的配置,猫盘刷黑群晖DS119j系统,由于猫盘是arm架构,所以无法使用docker,只能实现一些基础功能。
其次,想可以在外地也访问家中的猫盘黑群晖系统,有两种方案:
1.从运营商申请固定IP,直接与NAS映射。
2.购买云服务器,赠送公网IP,通过frp实现内网穿透。
方案1最为简单,但是运营商说由于转为公网IP,电信公司会监控家中网络,我听着有些犹豫,所以就放弃了。
方案2比较折腾,但我恰好有一个阿里云服务器,所以就来折腾这个。
2.具体实施
内网穿透有很多种方案,我这里使用的是常见的frp方案。我们首先大致了解一下他的原理:
frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。
用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
首先,下载frp的文件https://github.com/fatedier/frp/releases,现在最新的是0.44版本。这里一定要注意,由于frp的文件中包含服务器端和客户端,所以要根据自己的具体机器架构选择版本,云服务器是X86架构,装了ubuntu系统,所以选择下载frp_0.44_linux_amd64.tar.gz。而我的NAS机器是arm架构,并且似乎不支持64位,所以选择下载frp_0.44_linux_arm.tar.gz。
接下来进行配置,首先是对于服务器端。
3.服务器端
打开filezilla,在root下新建一个文件夹frp,并将frp_0.35.1_linux_amd64.tar.gz解压出来文件夹中的两个文件上传进该文件夹:
[common] # 配置服务端对外的ip地址 server_addr = 139.155.**.*** #服务器端口号 要与客户机对应的 bind_port = 7000 #外部访问端口 vhost_http_port = 88 #dashboard 用户名 dashboard_user = **** #dashboard 密码 dashboard_pwd = q******3 #dashboard 端口,启动成功后可通过浏览器访问如http://ip:7500 dashboard_port = 7500 #设置客户端token,对应客户端有页需要配置 token = q*******3 pool_count = 5
接着找到阿里云服务器防火墙配置,将7000和8000端口设置为开放,不然会无法访问。
保存,打开PUTTY连接到云服务器。然后将frps复制到/usr/bin/目录下,使得他可以被执行:
sudo cp frps /usr/bin/
接下来执行frps,并使其工作在后台,这样putty关闭后服务一样能启动:
cd frp/
nohup frpc -c frpc.ini &
万一要更新配置文件,可以杀死这个进程再启动:
ps -aux|grep frp| grep -v grep
kill -9 xxx #xxx是找到的进程号
此时服务器端已经配置完成。
4.客户端
登录黑群晖,打开File Station套件,在里面的共享目录下,新建一个文件夹,文件夹名称为frp。
打开解压出来的frp_0.35.1_linux_arm.tar.gz目录,准备将里面的frpc、frpc.ini两个文件上传到刚才创建的frp文件夹中。
上传之前修改frpc.ini的内容为:
[common] server_addr = ###.###.##.## #是公网服务器frps的IP;(这里防止被攻击我已#号代替); server_port = 15443 #服务器frps的服务端连接端口; token = admin123 #服务器frps连接的Token; [ssh] type = tcp #连接协议; local_ip = 192.168.0.12 #内网服务器ip; local_port = 22 #ssh默认端口号; remote_port = 122 #自定义外部访问内部ssh的转发端口号; [web] #frps控制台显示(可随意设置会显示在frps 网页控制台里,不可以重复); type = http #访问协议; local_ip = 192.168.0.12 #内网服务器ip; local_port = 80 #内网web服务的端口号; custom_domains = dd.1lia.com #所绑定的公网服务器域名,一级、二级域名、IP都可以;
然后进行上传。
接下来进入黑群晖,打开控制面板-任务计划,新增-触发的任务-用户定义的脚本,常规选项卡里的任务名称填写frp,事件选择开机,任务设置选项卡里的运行命令-用户定义的脚本框里输入:
/volume1/NASshare/frp/frpc -c /volume1/NASshare/frp/frpc.ini
请注意:/volume1/NASshare/frp/frpc这是我的frpc的路径,你要改成自己的,请用File Station进入找到这个文件,右键属性可以看到路径,并自己替换一下。
勾选刚才添加的frp计划任务,点菜单中的保存。然后右键frp计划任务-运行。
然后再点击这个任务,找到动作-运行结果。如果没有看到结束时间证明客户端在运行。
接着,访问https://xxx(xxx是你云服务器的公网IP),弹出来这个网页不被信任,选择继续访问,就可以访问到你的NAS了。
以上,我们就实现了外地访问家中NAS的功能了。
发表评论