侧边栏壁纸
博主头像
suringYu

走走停停

  • 累计撰写 49 篇文章
  • 累计创建 17 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

群晖使用frp和云服务器实现内网穿透

suringYu
2022-12-06 / 0 评论 / 0 点赞 / 895 阅读 / 1,757 字

在开始之前

你需要有的

  • 一台云服务器(拥有公网ip)
  • 一个已经装好的群晖/黑群晖,并且安装好了docker套件

可选

  • 一个域名
    • 这个域名需要绑定云服务器并备案,至少我使用的阿里云服务器是需要的
  • 服务端配置好的nginx

版本

  • 群晖版本
    • DS918+ DSM 7.0.1-42218
  • frp版本
    • frp_0.35.1_linux_amd64

关于安装方式

服务/客户端安装配置frp方式不固定,有其他一键脚本安装,但是我安装中出现了其他问题。这里仅介绍我所使用的安装方式

下载

  • 下载地址

https://github.com/fatedier/frp/releases

  • 下载之前需要查看自己服务器的架构,下载对应版本

输入arch,看服务器的架构

配置

这里统一使用frp_0.35.1_linux_amd64.tar.gz版本

服务端配置

  • 新建一个文件夹frp,并将frp_0.35.1_linux_amd64.tar.gz上传解压出来传进该文件夹

只要frps frps.ini这两个文件也行

  • 修改frps.ini
[common]
#[common] 是固定名称的段落,用于配置通用参数。
#服务端监听端口,要求和客户端一致
bind_port = 7000   
# 下面的照抄
vhost_http_port = 8000
vhost_https_port = 8001
authentication_method = token
authenticate_new_work_conns = true

# 这里密码需要之自己改变!!!不能有特殊符号!后面不能有空格!!!
token = 12345678
#鉴权使用的 token 值,客户端需要设置一样的值才能鉴权通过

#以下设置的是dashboard监控,可以在服务器的7500端口打开监控面板查看信息,user和pws是对应的登录面板账号和密码
dashboard_port = 7500
dashboard_user = xxxx
dashboard_pwd = xxxx
  • 服务器防火墙配置

    • 7000、8000端口设置为开放,不然会无法访问。
    • 7500端口可选,访问查看是否部署完成服务端的frps
    • 如果使用宝塔之类的管理工具,也需要在其对应的管理面板放开对应端口
  • 复制到/usr/bin/目录下,使得他可以被执行:

sudo cp frps /usr/bin/
  • 接下来执行frps,并使其工作在后台
    • 建议:为了让程序在后台运行并将日志输出到指定文件比如frps.log,可以用nohup启动
nohup ./frps -c frps.ini >> frps.log 2>&1 &
  • 万一要更新配置文件,可以杀死这个进程再启动:
ps -aux|grep frp| grep -v grep
kill xxx  #xxx是找到的进程号

此时服务器端已经配置完成。

  • 如果有打开7500管理面板端口的话,可以访问
    • http://ip:7500

客户端配置

  • 新建一个文件frp,将frp_0.35.1_linux_amd64.tar.gz解压到到此文件夹

只要frpc.ini这个文件也行,注意!这里的文件不是frps而是frpc

  • 配置frpc.ini
[common]
server_addr = 服务器ip
server_port = 7000
authentication_method = token
authenticate_new_work_conns = true
# 这里密码需要之自己改变!!!不能有特殊符号!后面不能有空格!!!
token = 12345678
#鉴权使用的 token 值,客户端需要设置一样的值才能鉴权通过

#连接名字,自定义
[nas]
# 类型                              
type = tcp
# 局域网内设备ip                         
local_ip = 内网ip,不知道就打开群晖管理面板-信息中心-网络查看
# 局域网内设备端口           
local_port = 5000
# 监听端口*可以修改为任意字母,等号后面的数字            
remote_port = 5002     

#连接名字,自定义
[ssh]
 # 类型  ssh类型为tcp                              
type = tcp
# 局域网内设备ip                       
local_ip = 内网ip,不知道就打开群晖管理面板-信息中心-网络查看
# 局域网内设备端口          
local_port = 22 
# 监听端口*可以修改为任意字母,等号后面的数字

这里的内网ip如果没有在群晖系统中设置固定,每次开关机后可能会发生变化,设置路径为:

  1. 控制面板
  2. 网络界面
  3. 局域网
  4. 点击编辑局域网
  5. ipv4下点击手动设置网络配置
  • 打开docker注册表,搜索stilleshan/frpc并安装运行

  • 勾选使用高级权限执行容器,点击高级设置

image-20221206144222502
  • 点击添加文件,选择刚刚上传配置的frpc.ini,注意装载路径和我的一致,然后点击应用。运行
image-20221206144518253

客户端启动frp方式不止一种,这里只介绍我使用的,如有需要自行百度

访问

  • http://ip:5002 群晖地址

配置完成就可以使用http://ip:5002访问了,不行的话先看服务器中的日志文件frps.log ,在你刚刚在服务器创建的用来存放frp的文件夹

  • token不一致
2022/12/05 20:38:55 [1;31m[E] [service.go:348] token in login doesn't match token from configuration[0m
2022/12/05 20:38:55 [1;33m[W] [service.go:132] login to server failed: token in login doesn't match token from configuration[0m
token in login doesn't match token from configuration

注意审题

# 这里密码需要之自己改变!!!不能有特殊符号!后面不能有空格!!!
token = 12345678

这一行密码的后续是不能有空格的!服务端和客户端都是一样的,非常重要!服务端和客户端密码需要保持一致!

  • 连接超时\连接不上

这个问题我也遇见了,因为没有开放服务端5002端口,其他教程是没有提到需要开放5002端口,目测是不同服务器规则不同(瞎说)。同理,如果需要ssh连接群晖则也需要打开37771端口。

还有就是,如果使用了宝塔类似的面板管理服务器,也需要到面板的设置中打开对应端口防火墙

拓展

域名访问

配置

   # frp服务配置(nas映射)
    location /nasService/ {
        proxy_pass http://127.0.0.1:5002/;
    }

如果原有nginx配置了别的路径,如博客等,需要将这个配置提前到最前面。整合后的配置

server {
    listen 80;
    listen [::]:80;
    #  xxx.xxx这里是域名
    server_name xxx.xxx;
    client_max_body_size 1024m;
    # frp服务配置(nas映射)
    location /nasService/ {
        proxy_pass http://127.0.0.1:5002/;
    }
    location / {
       # 其他你原有的配置
    }
    ......
}

访问路径是 xxx.xxx(你的域名)/nasService

域名是需要备案的,如果没有备案就没有配置这一说

群晖套件路径优化

  • 打开【控制面板】→【登陆门户】→【应用程序】【别名】中输入关键字。

image-20221206152250412

访问路径是 ip:端口/file

其他

参考链接

0

评论区