去年因为nas的问题就尝试过frp搭建了,但是具体怎么操作的自己似乎也感觉云里雾里,这次因为某些功能决定再尝试一次,并且做好记录,希望下次遇到相同的问题不再全网乱翻教程了😂

准备工作

  1. 服务器(作为frps端,即提供frp服务的一段)
  2. 目标设备(作为frpc端,即需要参与服务的一端)
  3. 域名
  4. 相关软件及文档

服务端frps

  1. 登录服务器

  2. 下载frp

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #查看服务器版本
    cat /proc/version #x86_64/x64/AMD64本质上是一样的

    cd /etc

    #下载最新版的frps端(版本号需要自己更改一下,我直接下载的压缩包一直解压报错,所以最后选择了Xftp的方式)
    curl -O https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
    #解压下载的文件包
    tar -xvf frp_0.36.2_linux_amd64.tar.gz
    #重命名文件夹
    mv frp_0.36.2_linux_amd64 frp
  3. 配置frps.ini的内容

    1
    2
    #查看frps端的配置
    vim ./frps.ini

    由于我的最终目的是在qc不好用的时候,访问nas的个别功能,所以配置参考文档中的【通过自定义域名访问内网的 Web 服务】

    1
    2
    3
    4
    5
    6
    7
    8
    9
    [common]
    bind_port = 7000
    dashboard_port = 7500 # 仪表盘端口号
    token = 123456 # 服务器提供的token
    dashboard_user = admin
    dashboard_pwd = admin
    vhost_http_port = 80
    vhost_https_port = 443
    subdomain_host = frps.com # 添加解析域名,这个域名需要在dns服务商那里解析,之后访问其他服务必须要加端口号
  4. 运行frps

    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd /etc/frp
    chmod +x frps
    # 添加这一步是因为直接按照教程运行时报错-bash: ./frps: No such file or directory,参考了【柚见】博客的内容。chmod +x frps进行赋权,然后将压缩包中的 systemd/frps.server 传至/lib/systemd/system/ 文件夹中
    ./frps -c ./frps.ini # 运行,检查文件是否有问题
    nohup ./frps -c frps.ini & # 后台运行,这一条命令很重要,好几次都是没有输这个而出错

    # 如果配置需要调整,可以关闭frps
    ps -aux|grep frp| grep -v grep # 检查frps的端口号
    kill -9 端口号
  5. nginx反向代理

客户端frpc

为了方便管理,在nas上我选择了docker安装。nas系统版本是DSM7.0,这部分内容参考了Stille大神的文章。

  1. 选择docker镜像 stilleshan/frpc(之前使用的版本是chenhw2/frp,后来升级dsm版本后一直出问题,就直接卸载了。这次由于直接基于Stille大神的教程,所以镜像也选择了他做的)

    frp-1

  2. 新建frp文件夹并上传frpc.ini文件

    frp-2

  3. frpc.ini参考配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [common]
    server_addr = 0.0.0.0 #frp服务器或域名,如frps中subdomain_host后的内容
    server_port = 7000 # 服务器提供的端口号
    token = 123456 #token和frps端保持一致

    [test]
    type = http #透传协议
    local_ip = 127.0.0.1 #本地透传IP
    local_port = 5000 #本地透传端口
    remote_port = 7001 #指定frps服务端口
  4. 创建容器

    frp-3

    • 然后进入【高级设置】,逐个填写内容【卷】(frpc文件的存档路径)

    frp-4

    • 【网络】使用与docker host相同的网络

    frp-5

  5. 最后在【容器】栏目启动相应容器即可,如果遇到错误停止,应该是中间某一个步骤出现了问题,随时调试检查就可以了。

后记

最开始版本下载错误,K桑帮忙解决了这个问题;

然后自己调整防火墙出错,璐璐帮忙调整了frps.ini和frpc.ini;

调整具体配置的时候又报错;

在第n次部署失败以后,孤岛推荐了nps,已经转战。