1、docker设置
docker去套件中心点一下就可以安装。
首先点开docker,
- 选择注册表(docker的软件库),
- 搜索栏输入 chenhw 搜索,
- 双击 chenhw/frp 默认下载就可以了。
等待 chenhw/frp 下载时候可以设置下FRP服务端和客户端的配置文件。
准备工作:
1.一个域名,只要能够正常解析就行
2.xshell或其他ssh软件
3.一台云服务器,流量尽可能多,带宽能够尽量跑满自己家庭宽带的上行即可
4.基础linux知识(实在不会可以寻求百度自行琢磨
查看frp目前的版本:https://github.com/fatedier/frp/releases, 本教程以0.33版本作为例子
一、服务端:
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64
vi frps.ini
编辑frps.ini文件:
[common]
bind_addr = 0.0.0.0
bind_port = 7000 (数据传输端口,需要服务端客户端一致)
privilege_token = 2fd165jtyjsd0g5t4hdga16 (token,需要服务端客户端一致)
vhost_http_port = 5000 (服务端http端口)
vhost_https_port = 6000 (服务端https端口)
保存后启动服务端, 测试没问题后用nohup在后台运行就行了
nohup ./frps -c ./frps.ini &
上图为直接执行./frps -c ./frps.ini返回的成功启动语句,使用nohup启动不会显示
二、frpc群晖docker配置
1、点进file station 在docker文件夹下创建frp文件夹,然后把编辑好的frpc.ini上传上去
2、在docker映像里双击打开刚刚下载好的映像。
3、选择高级设置
4、高级设置自动启动打√,设置卷、网络、环境。和我设置的一样就可以
这样服务器端和客户端就都设置好了
三、frpc群晖群晖ssh配置
也可以通过登陆群晖ssh来设置客户端
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
cd frp_0.33.0_linux_amd64
vi frpc.ini
编辑frpc.ini文件:
[common]
server_addr = nas.com (这里填服务器端的IP或者域名)
server_port = 7000 (数据传输端口,需要服务端客户端一致)
auth_token = 2fd165jtyjsd0g5t4hdga16 (token,需要服务端客户端一致 )
pool_count = 1
[httpname]
type = http
local_port = 5000 (本地群晖的网页端口)
custom_domains = nas.com (服务器端的域名)
群晖上使用 nohup后台启动程序:
nohup ./frpc -c ./frpc.ini &
穿透后即可出门在外访问群晖网页
群晖客户端设置开机自启:
vi /usr/syno/etc.defaults/rc.sysv/frpc.sh
在文本中写入:
cd /root/frp_0.33.0_linux_amd64
nohup ./frpc -c ./frpc.ini &
设置脚本权限:
cd /usr/syno/etc.defaults/rc.sysv/
chmod +x frpc.sh
编辑启动文件:
vi /etc/rc
在倒数第二排添加:
/usr/syno/etc.defaults/rc.sysv/frpc.sh
然后可以重启群晖测试自启脚本了
四、端口映射
服务器的运营商经常将443,80等端口禁用,我们想从外网访问群晖的应用就需要进行端口映射
协议类型 | 代理名称(不能一样) | 域名配置(根据域名解析) | 内网主机地址(内网主机ip) | 内网端口 | 远程主机端口(HTTP和HTTPS端口和服务端一致) | 加密(是和否不影响连接) | 压缩 |
---|---|---|---|---|---|---|---|
tcp | nas1 | 192.168.1.100 | 5001 | 443 | 是 | 是 | |
tcp | drive | 192.168.1.100 | 6690 | 6690 | 是 | 是 | |
tcp | photo | 192.168.1.100 | 80 | 80 | 是 | 是 | |
tcp | note | 192.168.1.100 | 5000 | 5000 | 是 | 是 | |
tcp | download | 192.168.1.100 | 8000 | 8000 | 是 | 是 | |
tcp | audio | 192.168.1.100 | 8800 | 8800 | 是 | 是 | |
tcp | video | 192.168.1.100 | 9007 | 9007 | 是 | 是 | |
https | nas | nas.yourname.com | 192.168.1.100 | 5001 | 443 | 是 | 是 |
https | router | router.yourname.com | 192.168.1.1 | 8443 | 443 | 是 | 是 |
这里可以配置多个端口映射服务。我设置了三个,一个是软路由的ssh端口,一个是群晖5000端口,一个是jellyfin的8096端口。frpc.ini配置如下
[common]
server_addr = nat.vps.com #服务器域名或者公网ip,这里填的是我nat vps的外网域名
server_port = 23001 #与服务端bind_port一致
token = 123456 #与服务端密钥对应
[ssh]
type = tcp #连接协议
local_ip = 127.0.0.1 #表示本地主机
local_port = 22 #内部的ssh端口号
remote_port = 23002 #自定义外部端口
[DSM]
type = tcp #连接协议
local_ip = 192.168.1.2 #群晖的内网ip地址
local_port = 5000 #群晖的5000端口
remote_port = 23003 #自定义外部端口
[Jellyfin]
type = tcp #连接协议
local_ip = 192.168.1.2 #群晖的内网ip地址
local_port = 8096 #jellyfin的8096端口
remote_port = 23004 #自定义外部端口
————————————————
附
- 一个服务器 frps 可以对多个客户端来使用,服务器 HTTP 和 HTTPS 端口是固定的两个,所以多个客户端使用时就得使用不同的域名了。
- 群晖各服务的端口:https://www.synology.com/zh-cn/knowledgebase/DSM/tutorial/General/What_network_ports_are_used_by_Synology_services
- 通过群晖内置 DNS 服务器来自动识别同一域名的内外网访问:https://post.smzdm.com/p/674271/
注意服务器端和客户端的时间要一致,不然会不定时的断线
五、端口转发
如果