以前使用 DDNS 访问 PVE ,这次安装 PVE 后也想继续用,但是发现公网IP没了,正好尝试一下使用 frp。
为了不污染 PVE 宿主机环境,推荐在 PVE 中单独开辟一个轻量化的 LXC 容器来独立运行 frpc 客户端。LXC 容器拥有接近宿主机的性能,且内存占用极低。
本文将演示如何在 PVE 部署一个极简的 Debian 12 LXC 容器,并通过它将内网 PVE 服务的 8006 端口安全地转发至 VPS 指定的公网端口。
🛠️ 环境拓扑与结构
在开始动手之前,先明确整体的流量转发链路:
[ 远程浏览器 ]
│ 访问 https://VPS公网IP:18006
▼
[ 公网 VPS ] ──────( 建立受保护的 TCP 隧道 )────── [ 家里 PVE (LXC 容器) ]
运行 frps 运行 frpc 客户端
│ 内部本地转发
▼
[ PVE 宿主机后台:8006 ]一、创建轻量化 LXC 容器
进入 PVE Web 管理界面,点击右上角的 “创建 CT”(Create CT),按照以下配置创建一个极简容器:
创建完成后,勾选“创建后启动”。如果不习惯通过 Web 终端操作,可以在 PVE 宿主机 Shell 中查出该 LXC 容器的虚拟机 ID(例如 101),并直接飞入容器内部:
# 列出当前的 CT status
pct list
# 进入指定 ID 的容器终端
pct enter 101二、配置基础工具及系统架构确认
进入 LXC 容器后,首先更新系统并安装常用的网络和文本编辑工具:
apt update && apt install -y wget tar curl nano确认容器的系统架构,以保证下载对应版本的 frp 客户端二进制包:
uname -m若终端返回 x86_64,其对应的程序版本为 linux_amd64。
三、部署 frpc 客户端
进入临时目录并下载对应的 frp 包(以当前主流稳定的 v0.69.1 为例):
cd /tmp wget https://github.com/fatedier/frp/releases/download/v0.69.1/frp_0.69.1_linux_amd64.tar.gz解压提取包体:
tar -zxvf frp_0.69.1_linux_amd64.tar.gz cd frp_0.69.1_linux_amd64将
frpc 二进制主程序剪切至系统的用户执行路径下,并赋予执行权限:cp frpc /usr/local/bin/ chmod +x /usr/local/bin/frpc验证安装状态:
frpc -v控制台输出正确的版本号(如
0.69.1),即代表主程序安装成功。
四、创建服务配置文件 (TOML)
现代版本的 frp 使用 toml 格式进行配置。需额外注意大小写与缩进格式。
创建 frpc 专属配置目录:
mkdir -p /etc/frp新建并编辑配置文件:
nano /etc/frp/frpc.toml写入下述配置信息(请按实际公网 VPS 情况替换关键参数):
# 公网 VPS 处的服务连接指标 serverAddr = "1.2.3.4" # 你的 VPS 公网 IP serverPort = 7000 # 对应 frps 面板/服务绑定的监听端口 auth.token = "your_secure_token" # 必须与 vps 端 frps.toml 中的 auth.token 保持一致 # PVE 登录控制台的穿透规则 [[proxies]] name = "pve-control-panel" type = "tcp" localIP = "192.168.1.100" # PVE 宿主机本身的局域网 IP localPort = 8006 # PVE 控制台默认 HTTPS 端口 remotePort = 18006 # 穿透到 VPS 暴露出的外部访问端口保存变更: 在 nano 编辑器中按
Ctrl + O 保存,回车确定,再按 Ctrl + X 退出编辑器。
五、联机功能实机测试
配置完成后,我们先通过前台手动拉起 frpc 进程,查看与 VPS 端 frps 的通信是否顺畅:
frpc -c /etc/frp/frpc.toml观察后台日志,若显示类似下文则代表连通成功:
[service.go:317] login to server success
[proxy.go:102] [pve-control-panel] start proxy success此时,在室外网络环境下尝试通过浏览器访问: https://你的VPS公网IP:18006
六、配置 Systemd 守护进程与开机自启
为了保证 LXC 容器每次随 PVE 宿主机开机,或者链路出现波动时 frpc 主动断线重连,需要将其写成标准的 Systemd 系统服务。
编写系统服务单元文件:
nano /etc/systemd/system/frpc.service写入服务守候配置:
[Unit] Description=FRP Client Daemon After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.toml Restart=always RestartSec=5 LimitNOFILE=1048576 [Install] WantedBy=multi-user.target重新加载系统服务管理器并启用自动拉起:
systemctl daemon-reload systemctl enable frpc拉起服务并校验当前服务状态:
systemctl start frpc systemctl status frpc
控制台看到绿色高亮的 active (running),表明服务已经完美移交后台守护。
七、后置清理与维护
最后,将物理空间中的临时安装缓存彻底移除,保持 Debian 12 LXC 系统骨架干净利落:
rm -f /tmp/frp_0.69.1_linux_amd64.tar.gz
rm -rf /tmp/frp_0.69.1_linux_amd64📂 最终关键资产清单:
客户端主程序:
/usr/local/bin/frpc配置文件:
/etc/frp/frpc.toml启动服务定义:
/etc/systemd/system/frpc.service
通过在单独的 LXC 容器内运转内网穿透逻辑,即便容器出现异常重启或漏洞,也不会波及到核心的 PVE 主系统,保证了家庭自建实验室的高可用性。