跳到主要内容

Frp

1. 概述

FRP(Fast Reverse Proxy)是一款反向代理工具,可以通过一台拥有公网 IP 的服务器,将处于 NAT 或防火墙后的设备暴露到公网访问。

本文以云服务器作为 FRP 服务端(frps),以 PicoKVM 作为 FRP 客户端(frpc)。配置完成后,即可通过云服务器远程访问 PicoKVM 的 Web 管理界面。

本文示例使用以下端口:

项目示例
云服务器公网 IP<SERVER_PUBLIC_IP>
FRP 服务端口7000
HTTP 访问端口40800
HTTPS 访问端口40444
FRP 管理后台端口7500
[提示]

请将文中的 <SERVER_PUBLIC_IP><FRP_TOKEN><FRP_DASHBOARD_PASSWORD> 等占位符替换为你自己的实际配置。

占位符说明:

占位符说明
<SERVER_PUBLIC_IP>云服务器的公网 IP 地址
<FRP_TOKEN>frpsfrpc 共用的认证 token。建议使用随机且不容易猜到的字符串,并确保服务端和客户端填写一致
<FRP_DASHBOARD_PASSWORD>FRP 管理后台登录密码,用于访问 http://<SERVER_PUBLIC_IP>:7500
<PICOKVM_IP>PicoKVM 的局域网 IP 地址,用于将证书文件复制到 PicoKVM

2. 准备工作

  1. 访问 FRP GitHub Releases 页面,下载适用于服务器的 FRP 压缩包。若云服务器为 Linux x86_64 架构,可下载类似 frp_0.68.1_linux_amd64.tar.gz 的版本。

  2. 在本地电脑安装 FileZilla

  3. 打开 FileZilla,使用 SSH/SFTP 信息连接云服务器。

    连接信息说明:

    字段说明
    主机云服务器公网 IP
    用户名SSH 用户名,例如 ubuntu
    密码SSH 用户对应的密码
    端口SSH 端口,通常为 22
  4. 连接成功后,将下载好的 FRP 压缩包上传到云服务器。

3. 服务端配置

3.1 安装 frps

  1. 解压 FRP 压缩包并进入解压后的目录:

    tar -zxvf frp_*_linux_amd64.tar.gz
    cd frp_*_linux_amd64
  2. 安装 frps

    sudo cp frps /usr/local/bin/frps
    sudo chmod +x /usr/local/bin/frps

3.2 创建服务端配置

  1. 创建 FRP 配置目录:

    sudo mkdir -p /etc/frp
    sudo vim /etc/frp/frps.toml
  2. 写入以下配置:

    bindAddr = "0.0.0.0"
    bindPort = 7000

    vhostHTTPPort = 40800

    auth.method = "token"
    auth.token = "<FRP_TOKEN>"

    webServer.addr = "0.0.0.0"
    webServer.port = 7500
    webServer.user = "admin"
    webServer.password = "<FRP_DASHBOARD_PASSWORD>"
  3. 在云服务器防火墙或安全组中放行所需端口:

    端口用途
    7000FRP 客户端连接端口
    40800PicoKVM HTTP 访问入口
    40444PicoKVM HTTPS 访问入口
    7500FRP 管理后台
  4. 验证配置是否正确:

    frps verify -c /etc/frp/frps.toml

3.3 创建 systemd 服务

  1. 创建服务文件:

    sudo vim /etc/systemd/system/frps.service
  2. 写入以下内容:

    [Unit]
    Description=FRP Server
    After=network.target

    [Service]
    Type=simple
    ExecStart=/usr/local/bin/frps -c /etc/frp/frps.toml
    Restart=always
    RestartSec=5

    [Install]
    WantedBy=multi-user.target
  3. 启动 FRP 服务端:

    sudo systemctl daemon-reload
    sudo systemctl enable frps
    sudo systemctl start frps
    sudo systemctl status frps

4. PicoKVM 客户端配置

PicoKVM 支持在 Web 界面中配置 FRP 客户端。打开 PicoKVM Web 界面,进入 Settings -> Access,根据下面任意一种访问方式填写 frpc.toml 配置。

5. 方案一:HTTP 访问

该方案配置最简单,不需要证书。

外部访问地址:

http://<SERVER_PUBLIC_IP>:40800

在 PicoKVM 中使用以下 frpc.toml 配置:

serverAddr = "<SERVER_PUBLIC_IP>"
serverPort = 7000

auth.method = "token"
auth.token = "<FRP_TOKEN>"

[[proxies]]
name = "picokvm-http"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["<SERVER_PUBLIC_IP>"]

点击 Start 测试连接。如果配置正确,日志中应能看到 success,且没有 error 信息。

6. 方案二:使用 https2http 实现 HTTPS 访问

该方案用于在公网侧提供 HTTPS 访问入口,并将请求转发到 PicoKVM 的 HTTP 服务。

外部访问地址:

https://<SERVER_PUBLIC_IP>:40444

6.1 生成自签名证书

在 PC 或 Linux 主机上执行以下命令:

mkdir -p ~/picokvm/tls
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout ~/picokvm/tls/__ca__.key \
-out ~/picokvm/tls/__ca__.crt \
-subj "/CN=<SERVER_PUBLIC_IP>"

将证书文件复制到 PicoKVM:

scp -r ~/picokvm/tls root@<PICOKVM_IP>:/userdata/picokvm/

6.2 配置 frpc.toml

在 PicoKVM 中使用以下配置:

serverAddr = "<SERVER_PUBLIC_IP>"
serverPort = 7000

auth.method = "token"
auth.token = "<FRP_TOKEN>"

[[proxies]]
name = "picokvm-https"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 40444

[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:80"
crtPath = "/userdata/picokvm/tls/__ca__.crt"
keyPath = "/userdata/picokvm/tls/__ca__.key"

6.3 测试 HTTPS 访问

点击 Start 测试连接。如果配置正确,日志中应能看到 success,且没有 error 信息。

备注

由于示例中使用的是自签名证书,通过 HTTPS 访问 PicoKVM 时,浏览器可能会提示证书风险。这是自签名证书的正常现象。