今天将以群晖系统为例,通过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端口】
二、环境准备
检查需要提前准备的材料:
根据访问需求,我们需要用到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版本,客户端我也使用相同版本。
因为这个映像是在国外,如果国内网络不好可以使用下面的方法解决
接下来我们启动容器
双击映像,进行对应的设置,然后点击高级
下面我们点击添加文件,添加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不加端口的方式进行访问~
例如我的路由器~
相关文章:
- CentOS 7 ETCD集群配置大全
- Kubernetes 1.14 二进制集群安装
- 利用FRP和Openvpn实现内网穿透外网访问
- Kuerbernetes 1.11 集群二进制安装