工作环境

  • 具备公网 IP 的云服务器(Ubuntu22.04)
  • 黑群晖DS918+
  • Google Chrome 126.0.6478.127
  • Frp v0.58.1
  • SSH工具

FRP (Fast Reverse Proxy) 是一款高性能的内网穿透工具,https://github.com/fatedier/frp

FRP 分为两部分:frps(FRP 服务器),frpc(FRP 客户端)。

frps 需要部署在有公网 IP 的服务器上,而 frpc 部署在内网中的机器。

安装Frps(Frp服务器)

用SSH工具连上具备公网IP的云服务器,执行一键脚本需要sudo -i切换到root用户

1
2
3
wget https://raw.githubusercontent.com/mvscode/frps-onekey/master/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install

接着脚本会让你依次设置各种端口,为了避免冲突,建议手动设置各个端口号.最终会出现一个汇总信息,如果没问题就继续即可安装完成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
============== Check your input ==============
You Server IP : 你的公网IP
Bind port : 7000
vhost http port : 8800
vhost https port : 8443
Dashboard port : 8555
Dashboard user : admin
Dashboard password : p@ssw0rd
token : sk-HMZUjKMPHHedvuxrhNmNoRIAxEnEGO
subdomain_host : 没有就填公网IP
tcp mux : true
Max Pool count : 5
Log level : info
Log max days : 3
Log file : frps.log
transport protocol : enable
kcp bind port : 23043
quic bind port : 23045
==============================================

安装好后会自动运行frps,即可访问 IP + Dashboard port 端口号进入frps管理网页,http://你的公网IP:8555,输入设置的用户名和密码,能成功进入 WEB 后台就成功了。

常用命令:

1
2
3
4
5
6
7
8
Usage: /etc/init.d/frps {start|stop|restart|status|config|version}

# Uninstall(卸载)
./install-frps.sh uninstall

# Update(更新)
./install-frps.sh update

安装FRPC(Frp客户端)

frpc.toml 是 frp 客户端中重要的配置文件,错误的配置会导致服务无法访问,参考以下文档仔细修改每条参数。

配置模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
serverAddr = "你的公网IP" # frps 服务器地址
serverPort = 7000 # frps 服务器端口
auth.method = "token"
auth.token = "sk-HMZUjKMPHHedvuxrhNmNoRIAxEnEGO" # frps 服务器token

# 穿透需要Web访问的内网服务,例如群晖的DSM管理页面

# type = "http" 或者 "https" 协议时,
# custom_domains 和 subdomain 至少需要任意一条参数,
# 也可以同时存在。如果没有此参数会导致 frp 客户端无法启动

[[proxies]]
name = "DSM" #该条穿透服务的名称,必须修改,且不能与其他用户重复
type = "http"
localIp = "192.168.50.2" # 本地端口
localPort = 5000 # 本地端口
# customDomains = ["192.168.50.2"]
# subdomain = "nas"

# 穿透需要TCP连接的内网服务,例如 SSH的22端口或者Windows RDP的3389端口
[[proxies]]
name = "SSH"
type = "tcp"
localIp = "192.168.50.2"
localPort = 22
remotePort = 33078 # frps分配的端口,需要在防火墙中放行

[[proxies]]
name = "RDP"
type = "tcp"
localIp = "192.168.50.2"
localPort = 3389
remotePort = 33079 # frps分配的端口,需要在防火墙中放行

重点提示:type = tcp 时,无需配置上文的两条域名记录,可以直接使用 frp 服务器的地址作为域名,也可以将自己的域名 CNAME 或 A 记录 指向 frp 服务器的域名或 IP。

对于 Windows:

  1. 官方 GitHub 仓库下载 FRP 客户端

  2. 创建一个配置文件(例如 frpc.toml)并设置您的配置

  3. 使用 NSSM(Non-Sucking Service Manager)创建 Windows 服务: a. 从 https://nssm.cc/ 下载 NSSM b. 以管理员身份打开命令提示符 c. 导航到 NSSM 目录 d. 运行保存为install.bat并运行:

    1
    2
    3
    4
    5
    : 1. download [nssm](https://github.com/kirillkovalenko/nssm) and set its diretory into the global PATH environment value
    : 2. replace the path below with where you placed frpc
    nssm install frpc "D:\Tools\frpc\frpc.exe" -c "D:\Tools\frpc\frpc.toml"
    nssm set frpc DisplayName "frp client"
    nssm start frpc

如果需要,使用 nssm.exe edit FRPClient 配置额外的服务参数

  1. 卸载服务,将代码保存为uninstall.bat并运行:

    1
    2
    nssm stop frpc
    nssm remove frpc

对于 Ubuntu/Debian:

  1. 从官方 GitHub 仓库下载 Linux 版的 FRP 客户端。

  2. 解压文件并将它们移动到合适的位置,例如 /usr/local/frp/

  3. 创建一个配置文件(例如 /usr/local/frp/frpc.toml)并设置您的配置。

  4. 创建一个 systemd 服务文件:

    1
    sudo nano /etc/systemd/system/frpc.service
  5. 在文件中添加以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
       [Unit]
    Description=FRP Client
    After=network.target

    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.toml

    [Install]
    WantedBy=multi-user.target

    6. 保存文件并退出编辑器。

    7. 重新加载 systemd,启用并启动服务检查状态。

    ```bash
    sudo systemctl daemon-reload
    sudo systemctl enable frpc
    sudo systemctl start frpc
    sudo systemctl status frpc

Reference

官方文档

详解 frpc.toml 配置文件