今天将以群晖系统为例,通过Frp,实现Nas各大服务(包括但不限于ssh服务、DSM服务、移动端DS file)的远程访问。
一、梳理需要映射端口
首先梳理出公网想要访问的服务,自定义清楚访问端口:
【ssh】(本地默认端口:22)
自定义访问端口:2222
【DSM服务】(本地默认端口:5000-http 5001-https)
自定义访问端口:443
【DS file】(本地默认端口:5000-http 5001-https)
自定义访问端口:5001
【WebDAV Server】(本地默认端口:5005-http 5006-https)
自定义访问端口:5007【https】
自定义访问端口:5005【http】
#用https的5007访问WebDAV Server的https的5006端口;用https的5005访问WebDAV Server的http的5005端口
【emby】(本地默认端口:80096-http 不支持-https)
自定义访问端口:80096【https双重反代以访问http】
【举一反三:http项目】(本地默认端口:x)
自定义访问端口:x【通过https的x端口访问http的x端口】
二、环境准备
检查需要提前准备的材料:
- 一台公网服务器(作为FRPS,实现内网穿透);
- Nas一台(作为FRP客户端)
- 域名解析至公网服务器
- 为域名申请证书,并上传至Nas
根据访问需求,我们需要用到443端口即https服务,因此域名需要申请到https证书。这里以腾讯云为例,我们申请一个免费ssl证书。
三、穿透配置
3.1 公网服务器配置
防火墙开放相应端口,或者开通所有端口限制
3.2 frps配置
安装frps客户需要尽可能和客户端都保证相同版本 (这里我使用最新的软件包进行安装)
#下载软件包
wget https://d.frps.cn/file/frp/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
#解压
tar xf frp_0.37.0_linux_amd64.tar.gz
#修改配置文件
cd frp_0.37.0_linux_amd64
vim frps.ini
#修改下面的内容
[common]
bind_port = 7000 # 客户端与服务端进行通信的端口,即frp服务端口,需与客户端server_port一致
dashboard_port = 7500 # 控制台端口 通过 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示 通过 http://[server_addr]:7500 访问 Dashboard 界面,用户名密码默认都为 admin。
如果不会使用vim编辑器可以通过ftp将文件下载到本地,修改后上传
实际上Server端(frps.ini)需要添加的项目比较少,只需要监听端口,还可以添加token。接下来我们来启动frp
目前启动方式常用的有2种
#第一种,直接命令后台启动
nohup ./frps -c frps.ini &
#第二种,使用system管理
cd frp_0.37.0_linux_amd64/systemd/
#修改frps启动路径
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini #需要修改对应的目录
cp frps.service /lib/systemd/system/
systemctl enable frps
systemctl start frps
启动成功后
3.2 内网群晖客户端配置
映射关系我们需要在nas上安装frpc客户端
首先在nas上安装docker
点击-->套件中心
--> 搜索docker
--->安装docker
打开docker
搜索frp
点击下载映像
版本我们这里选择和frps服务端对应的版本即可
我这里安装的是frps-0.37.0版本,客户端我也使用相同版本。
因为这个映像是在国外,如果国内网络不好可以使用下面的方法解决
- 复制https://d.frps.cn/file/images/frpc/frpc_0.37.0.tar 到浏览器,下载我提供的包
- 点击映像-->新增-->文件新增-->上传 (将frpc_0.37.0.tar包上传上去)
接下来我们启动容器
双击映像,进行对应的设置,然后点击高级
下面我们点击添加文件,添加frpc.ini
(frpc客户端配置文件)
接下来我们打开File Station
进入docker目录,在进入到我们刚刚创建的frpc目录
我们将配置文件保存到桌面,然后上传到刚刚创建的目录
后面中文注释建议删除掉
完整配置文件如下
[common]
server_addr = nas.frps.cn #server 填写我们的公网IP,或者对应的域名也可以
server_port = 7000
[ssh]
type = tcp
local_ip = 192.168.31.103 #必须填内网地址,不能填127.0.0.1
local_port = 22 #内网映射地址的端口
remote_port = 2222 #外网的端口
[dsm]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5000
remote_port = 5443
[ds_file]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5001
remote_port = 5001
[https_webdav]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5006
remote_port = 5007
[http_webdav]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 5004
remote_port = 5005
[emby]
type = tcp
local_ip = 192.168.31.103(内网地址)
local_port = 8097
remote_port = 8096
把中文配置删除!!!(包含括号)
把中文配置删除!!!(包含括号)
把中文配置删除!!!(包含括号)
上传完成截图
在点回我们的容器,选择文件
添加对应的容器路径
/etc/frp/frpc.ini
下面我们点击应用
在启动容器即可
如果我们启动了之后是下面的图这样可以点击右边在手动启动,如果还报错可以右击查看容器信息
点击详细信息
如果出现下面的日志信息,代表frps 服务端没启动成功
正确效果图如下
四、映射配置
接下来我们实际上就可以通过外网访问了
4.1 ssh远程访问
我们将群辉的ssh映射到公网进行远程访问
1.首先开启群辉ssh端口 (控制面板
-->终端机和 SNMP
-->开启SSH
)
2.访问测试
通过公网(frps)ip+2222端口,管理员用户身份
ssh登陆,sudo -i
提权至root
我这里管理员写的是frps,所以我就使用frps登录,默认管理员用户名为admin
如果公网连接不上请检查防火墙,以及检查内网是否可以正常连接
4.2 DSM远程访问
对应frpc.ini配置文件
[dsm]
type = tcp
local_ip = 192.168.31.103
local_port = 5001
remote_port = 5443
由于现在是域名加端口的方式访问,比较不是很不太方便,接下来我们配置域名证书,使用https://dsm.frps.cn 访问群辉
我们通过宝塔上的Nginx代理,来进行映射
(宝塔安装不过多介绍了)
我们点击网站-->添加域名-->配置请跟我一致-->点击提交
接下来我们添加nginx反向代理
添加代理的名称-->地址http://127.0.0.1:5443
这里的5443就是我们映射公网的一个端口(当然也可以修改其他)
添加完成后我们就可以访问
接下来我们把https添加进去
我们把下载好的证书添加进去,如果没有可以点击Let's Encrypt
生成新的证书
接下来就可以愉快的访问了
4.3 手机DS file远程访问
对应frpc文档中:
[ds_file]
type = tcp
local_ip = 192.168.31.103
local_port = 5001
remote_port = 5001
当然我们也可以用之前的nginx反向代理,使用443端口进行访问。效果如下图
五、说明
其它服务都是可以使用nginx反向代理,实现通过https不加端口的方式进行访问~
例如我的路由器~
有一点想问下,宝塔上的Nginx代理,来进行映射这一步是在frps服务端安装弄,还是在frpc客户端弄
代理肯定要在frps服务端配置,客户端只是配置一个端口映射,那么映射到frps服务器上了,修改frps服务器的nginx就可以
[…] https://frps.cn/41.html […]