FRP 食用指南。

常用命令

  1. 启动
systemctl start frps.service
  1. 停止
systemctl stop frps.service
  1. 重载配置
systemctl reload frps.service
  1. 重新启动
systemctl restart frps.service
  1. 开启开机自启
systemctl enable frps.service
  1. 关闭开机自启
systemctl disenable frps.service
  1. 查看运行状态
systemctl status frps.service

服务端安装和配置

Frps服务端一键配置脚本

  1. wget脚本到服务器上,赋予对应的权限,./install-frps.sh install 执行,根据提示操作即可。这种方法就很方便,还直接设置好了对应服务,方便启动和管理。
    Server management(服务管理器)
Usage: /etc/init.d/frps {start|stop|restart|status|config|version}

手动安装

  1. 首先去官方开源 Github 下载执行程序,下载自己机器对应的版本。
    下载
  2. 上传到机器目录,解压。
tar -xzvf 文件名

大致得到这样的目录文件,其中frps开头的都是服务端需要的,其他的可以按需进行删除。
目录文件
3. 配置文件
示例

[common]
bind_addr = 0.0.0.0
# frp通讯端口
bind_port = 7000
# UDP端口
bind_udp_port = 7001
# kcp端口,一般和通讯同一个
kcp_bind_port = 7000

# 对外http端口
vhost_http_port = 88
# 对外https端口
vhost_https_port = 4433

# Frp的服务器指示面板配置
admin_addr = 可IP可域名
# 管理面包的端口
dashboard_port = 7500
# 管理员账号和密码
dashboard_user = admin
dashboard_pwd = admin

# 日志配置项
log_file = /root/frp/frps.log

# 日志等级 trace, debug, info, warn, error
log_level = info
# 日志多储存最大时间
log_max_days = 3

# auth token 可自主生成一些字符串
token = xxxxxx

tcp_mux = true
max_pool_count = 100

# 用户自定义域名(自定义域名记得在域名提供商设置对应解析)
subdomain_host = 域名
  1. 设置对应 Systemd 服务
    Systemd 配置文件在 /lib/systemd/system/ 目录下,不同类型的文件使用不同的后缀,如: .service .socket .timer
    创建 /lib/systemd/system/frpc.service 文件,配置如下:
[Unit]
Description=frps server daemon
Documentation=https://github.com/fatedier/frp
After=network-online.target

[Service]
ExecStart=/usr/local/bin/frps -c /usr/local/etc/frps.ini
Type=simple
User=nobody
Group=nogroup
WorkingDirectory=/tmp
Restart=on-failure
RestartSec=60s

[Install]
WantedBy=multi-user.target
  • Unit
    • After 在网络就绪后启动服务,关于网络就绪 NetworkTarget
  • Service
    • ExecStart 启动时执行的命令(注意修改自己服务器frps对应的位置)
    • Type simple 执行 ExecStart 指定的命令,启动主进程,还有很多其他类别
    • User 执行命令的用户为 nobody(如果启动报错可以去掉试试)
    • Group 执行命令的组为 nogroup (如果启动报错可以去掉试试)
    • WorkingDirectory 命令的工作目录
    • Restart 失败后尝试重启,失败是根据退出状态码进行判断的
    • RestartSec 失败 60s 后尝试重启
  • Install
    • WantedBy 执行 systemctl enable frps 命令,会在 /etc/systemd/system/multi-user.target.wants/frps.service 目录下创建一个软链

添加或修改配置后需要执行 sudo systemctl daemon-reload 重新加载配置,执行 sudo systemctl enable frps.serv ice 之后会开机启动。如果出现报错注意文件权限问题。

客户端安装和配置

群晖

群晖上可以通过 Docker 来安装 frpc。

  1. 注册表搜索 frpc(我这里是选的snowdreamtech/frpc
    ,不同的可能安装配置不一样),双击,版本选择最新就可。
    注册表
  2. 安装镜像
    话不多说,直接上图。
  3. 添加frpc.ini文件
    可以通过上传的方式得到frpc.ini,这是客户端配置文件,具体可以看下示例。
[common]
server_addr = xxxxxxx  # 服务器IP或者地址
server_port = 7000                # 服务器提供的端口号
token = xxxxxxxxxxxxx             # 服务器提供的token

[web1]                            # 为避免错误,一定需更改为比较特殊的名称,不能和服务器端其他配置重名.
type = http                       # http协议
local_ip = 127.0.0.1              # 127.0.0.1指穿透本机,也可以填写群晖内网IP.
local_port = 5000                 # 群晖内网HTTP端口,默认为5000.
custom_domains = web1.xxxx.com    # 填写你的域名
subdomain = web1				  # 如果你的服务端域名支持泛解析,那么可以使用这个参数,就仅仅写一下自定义的名称,不要把后面的域名也带上,和custom_domains二选一,推荐这个。

[web2]                            # 为避免错误,一定需更改为比较特殊的名称,不能和服务器端其他配置重名.
type = https                      # https协议
local_ip = 127.0.0.1              # 127.0.0.1指穿透本机,也可以填写群晖内网IP.
local_port = 5001                 # 群晖内网HTTPS端口,默认为5001.
custom_domains = web2.xxxx.com    # 填写你的域名
# 接下来的配置是支持 https 的重点配置
# 配置插件,将 https 请求转换成 http 请求后再发送给本地 Web 服务程序
plugin = https2http
# 转换成 http 后,发送到本机的 10000 端口
plugin_local_addr = 127.0.0.1:0000
# 这里必须写成 127.0.0.1,目前版本bug
plugin_host_header_rewrite = 127.0.0.1
# 指定成你在前面部分导出的证书的路径
plugin_crt_path = /root/frpc/ssl/ml_chain.crt
plugin_key_path = /root/frpc/ssl/private.key

设置对应文件夹的权限,用户选择Everyone,记得勾选应用到这个文件夹、子文件夹及文件。
权限设置权限设置

  1. 高级设置-卷
    选择添加文件。注意装载路径一定是/etc/frp/frpc.ini
    添加文件
  2. 设置网络
    网络
    最后点击应用,之后可以直接下一步,运行容器。