最近组了一台nas使用,但由于是黑群晖,外网是访问不了的(nas在家,人在外面),有时工作需要家里找文件就显得比较尴尬,所有外网访问家里的nas还是挺有必要的。
之前就有了解FRP,加上刚好续费了十年服务器,所以就尝试搭建FRP内网穿透,实现外网访问nas等设备。
顺便把过程记录下,可能以后重装系统重新搭建需要炒冷饭,也方便有同样需求的参考。
1.前期准备
一台云服务器(如阿里云服务器、腾讯云服务器等),并装有CentOS,我装的是CentOS 7.6 64位,Intel架构
2.服务端操作
找到需要的frp版本,获取下载链接
进入frp下载页面(https://github.com/fatedier/frp/releases) 找到需要下载的版本,右键复制下载链接。
譬如我服务器是64位的linux,cpu是intel的就选这个
然后ssh链接云服务器,可以使用putty来ssh(ssh意思可以简单理解为远程操作你的云服务器)
以root的身份登录,回车输入密码,注意的是这里输入密码不会显示也不会显示*,直接输入回车即可
登录成功后输入 wget+下载链接,这里我们的命令是:
wget https://github.com/fatedier/frp/releases/download/v0.34.3/frp_0.34.3_linux_amd64.tar.gz
回车,稍等会就会下载完毕。
解压下载的压缩文件
tar -zxvf frp_0.34.3_linux_amd64.tar.gz
输入后回车
可以查看下是否解压成功
ls
因为我服务器装了宝塔面板,同时对linux不太熟,所以直接登录宝塔面板继续操作了(宝塔面板在你购买服务器时有些服务商可以帮忙安装,不懂的登录官网跟教程走一遍也很简单,这里就不详述了):
在root文件夹下
将frp_0.34.3_linux_amd64 重命名为 frp
进入到frp目录,找到 frps.ini ,点击编辑
加入一个token行,我这里随机生成了一寸乱码,大家可以自行设置,这个是明文密码,建议不要设置为自己的常用密码。
简单说下这个token的作用:云服务器跟nas进行数据交换时,通过token作为“暗号”,“暗号”对上了才进行数据交换,否则掰掰~
搞掂后保存关闭
然后我们回到putty,进入到frp目录,分别运行下面命令
cd frp
./frps -c frps.ini
注意:
如果提示“-bash: ./frps: cannot execute binary file”错误,很可能是你的系统架构和安装环境的系统架构不匹配。这个时候只要去下载安装对应的系统架构的frp进行安装就可以解决。
有些服务器可能没有开放7000端口,这里可以单独开放一下,像我是用宝塔面板的,服务器和宝塔面板都需要开放
Ctrl + c 退出frps服务,然后输入以下命令
iptables -I INPUT -ptcp --dport 7000 -j ACCEPT
输入以下代码进行服务设置
vi /lib/systemd/system/frps.service
按 i 键进入编辑模式
黏贴下列命令
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.ini
[Install]
WantedBy=multi-user.target
按 esc 键 输入 :wq 回车(注意:含wq前的冒号)
启动frp服务
systemctl start frps
设置自动启动
systemctl enable frps
重启vps服务器看下frps服务是否可以开启自启
reboot
等待vps服务器开机,重新连接登录后输入:
ps auxw
查看后台运行的进程,可以找到frp已经运行了
至此服务端设置完毕
3.群晖docker端设置
登录群晖,打开套件中心,下载安装“docker”
打开安装后的docker
映像-新增 -(从url新增)输入这个地址 https://hub.docker.com/r/chenhw2/frp 点击新增
在自己的电脑端新建frpc配置文件(新建txt文档重命名为 frpc.ini)打开后输入以下命令:
[common]
server_addr = 47.xxx.xx.xxx
server_port = 7000
token = BQmIBalJ0GG7Qsgb
[DSM]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 6001
进入file station 在docker文件夹下新建frp文件夹 然后把编辑好的 frp.ini 上传上去
等待docker映像下载完毕后双击进行设置
高级设置-环境,
记得Args的值设为“frpc”
设置卷,新增文件,找到刚才上传的 frpc.ini(docker-frp-frpc.ini)
装载路径填:/frp/frpc.ini
网络选择与docker相同的网络
这样就设置完毕了,点击应用,下一步,应用,可以看到已经启动了
测试下外网是否可以打开:
浏览器输入 云服务器的公网ip:6001
可以看到已经可以正常打开我的dsm页面了,也就是说我们已经实现了外网的穿透。
最后提醒下,记得云服务器那里要放行对应端口。