FRP 内网穿透实战:从零搭建专属公网访问通道
侧边栏壁纸
  • 累计撰写 12 篇文章
  • 累计收到 0 条评论

FRP 内网穿透实战:从零搭建专属公网访问通道

你的云
2026-06-05 / 0 评论 / 5 阅读 / 正在检测是否收录...

FRP 内网穿透实战:从零搭建专属公网访问通道

一、 什么是 FRP?

FRP(Fast Reverse Proxy)是一款专注于内网穿透的高性能反向代理应用。它支持 TCP、UDP、HTTP、HTTPS 等多种协议,能够将内网服务以安全、便捷的方式通过具有公网 IP 的节点暴露到公网。

简单来说,FRP 的核心架构分为两部分:

  • 服务端(frps):部署在拥有公网 IP 的云服务器上,作为流量中转的“桥梁”。
  • 客户端(frpc):部署在家庭或公司的内网设备上,主动与服务端建立加密通道。

二、 前期准备

在开始部署前,请确保你已准备好以下资源:

  1. 公网服务器:一台拥有固定公网 IPv4 的云服务器(推荐阿里云、腾讯云等,系统推荐 CentOS 或 Ubuntu)。
  2. 内网设备:运行本地服务的电脑(Windows/Linux 均可,如本地博客、NAS、远程桌面等)。
  3. FRP 安装包:前往 FRP 官方 GitHub 仓库([https://github.com/fatedier/frp/

三、 服务端(frps)部署

以下以 Linux 服务器为例

1. 上传并解压文件

将下载的 Linux 版本 FRP 压缩包上传至服务器,并解压:

bash

apt install wget -y
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

2. 配置服务端

编辑服务端配置文件 frps.toml(新版 FRP 推荐使用 toml 格式):

toml

# 服务端与客户端通信的端口
bindPort = 7000
#日志
#log.to = "./frps.log"
log.level = "debug"
log.maxDays = 3
log.disablePrintColor = false
detailedErrorsToClient = true
# 身份验证配置
auth.method = "token"
auth.token = "YourStrongSecretToken123!" # 务必设置复杂密码

# 管理控制台配置(可选,用于查看运行状态)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

3. 开放防火墙端口

确保云服务器的安全组和本机防火墙已放行以下端口:

  • 7000(FRP 核心通信端口)
  • 7500(管理控制台端口)
  • 后续穿透业务所需的端口(如 HTTP 的 80/8080,SSH 的 6000 等)

4. 启动服务端

bash

./frps -c ./frps.toml

进阶建议:生产环境中,建议使用 systemd 配置开机自启和后台运行。方法在最后


四、 客户端(frpc)部署

1. 下载并解压文件

以下以 Windows 本地电脑为例

将下载的 windows 版本 FRP 压缩包下载到电脑,并解压:

bash

#下载地址,复制浏览器下载
https://github.com/fatedier/frp/releases/download/v0.69.1/frp_0.69.1_windows_amd64.zip

2. 解压文件

解压 Windows 版 FRP 压缩包,删除服务端文件(frps.exe 等),仅保留 frpc.exefrpc.toml

3. 配置客户端

编辑 frpc.toml,填入你的服务器公网 IP 和 Token:

toml

# 服务端公网 IP
serverAddr = "123.123.123.123"
serverPort = 7000

# 身份验证(必须与服务端一致)
auth.method = "token"
auth.token = "YourStrongSecretToken123!"

# 示例1:穿透 Windows 远程桌面 (RDP)
[[proxies]]
name = "windows-rdp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 6000 # 外网通过 服务器IP:6000 访问

3. 启动客户端

在命令行中运行:

cmd

./frpc.exe -c frpc.toml

若控制台提示 start proxy success,即表示穿透通道建立成功!


五、进阶配置:使用 Systemd 注册守护进程(推荐)

直接通过命令行启动 FRP 时,一旦终端窗口关闭或 SSH 断开连接,服务就会随之停止。为了实现长期稳定运行,强烈建议使用 Linux 的 systemd 将其注册为守护进程。

1. 创建 Service 配置文件

使用文本编辑器(如 vimnano)在 /etc/systemd/system/ 目录下创建服务文件。以服务端为例:

bash

sudo vim /etc/systemd/system/frps.service

2. 写入服务配置

将以下代码粘贴到文件中。注意:请务必将 ExecStart 的路径修改为你实际的 FRP 存放路径!

ini

[Unit]
Description=FRP Server Service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
# 核心启动命令(请根据实际安装路径修改)
ExecStart=/opt/frp/frps -c /opt/frp/frps.toml
# 进程异常退出时自动重启
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

3. 重载并启动服务

保存并退出编辑器后,依次执行以下命令使配置生效并启动服务:

bash

# 1. 重新加载 systemd 配置
sudo systemctl daemon-reload

# 2. 启动 FRP 服务
sudo systemctl start frps

# 3. 设置开机自启
sudo systemctl enable frps

# 4. 查看运行状态(确认显示为 active (running))
sudo systemctl status frps

常用管理命令速查:

  • 停止服务:sudo systemctl stop frps
  • 重启服务:sudo systemctl restart frps
  • 查看实时日志:sudo journalctl -u frps -f

(注:如果你需要为客户端配置守护进程,只需将上述步骤中的 frps 全部替换为 frpc,并将 ExecStart 指向客户端的配置文件即可。)

六、 常见问题排查

  • 客户端无法连接服务端:检查服务器公网 IP 和 bindPort 是否正确;确认云服务器安全组是否放行了对应端口;检查 token 是否完全一致。
  • HTTP 穿透无法访问:确认域名已正确解析至服务器公网 IP;检查服务端是否配置了 vhostHTTPPort(新版为在客户端直接配置 type="http")。
  • 访问速度慢或频繁断开:尝试在客户端开启数据压缩(transport.useCompression = true);检查公网服务器的带宽是否达到瓶颈。
免责声明:内网穿透涉及网络安全,请严格遵守当地法律法规,切勿利用穿透工具搭建违规网站或从事非法活动。建议仅在个人学习、测试及合法办公场景下使用。
0

评论

博主关闭了所有页面的评论