内网设备frpc长连接云服务器frps → 外网用户访问云服务器IP:端口 → frps把流量转发给frpc → frpc转发到内网本地服务,解决无公网IPv4无法外网访问的问题。
前置准备
- 一台有独立公网IPv4的轻量云服务器
- 本地内网设备
- FRP 统一版本:服务端、客户端必须下载完全相同版本
云服务器部署 frps
- 云服务器放行端口 进入云厂商控制台 → 实例安全组/防火墙,添加入站TCP规则:
7000:frpc客户端与frps隧道通信必开7500:frps网页管理面板(可选)- 业务端口区间:例如
5000-6000(后续内网服务映射用)全部授权0.0.0.0/0,协议TCP
服务器内部防火墙也需放行(如有) 以 Debian 为例:
bash# Ubuntu/Debiansudo ufw allow 7000/tcpsudo ufw allow 7500/tcpsudo ufw allow 5000:6000/tcpsudo ufw reload2. 下载解压 frps```bash# 下载amd64架构(绝大多数云服务器)wget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gztar -zxvf frp_0.67.0_linux_amd64.tar.gzcd frp_0.67.0_linux_amd64
- 编写 frps.toml 配置
toml# frps.tomlbindPort = 7000auth.token = "自定义高强度密码123456ABC" # 记住,客户端必须一模一样# 网页管理后台(可选)webServer.port = 7500webServer.user = "admin"webServer.password = "后台密码666"# 日志log.to = "/var/log/frps.log"log.level = "info"log.maxDays = 3
- 设置系统自启(后台常驻)
bash# 复制程序与配置到系统目录sudo mkdir -p /etc/frpsudo cp frps /usr/local/bin/sudo cp frps.toml /etc/frp/# 创建systemd服务文件sudo tee /etc/systemd/system/frps.service <<EOF[Unit]Description=FRP ServerAfter=network.target[Service]Type=simpleExecStart=/usr/local/bin/frps -c /etc/frp/frps.tomlRestart=on-failureRestartSec=5[Install]WantedBy=multi-user.targetEOF# 加载并开机自启sudo systemctl daemon-reloadsudo systemctl enable frpssudo systemctl start frps# 查看运行状态systemctl status frps
看到 active (running) 代表服务端正常运行,浏览器访问 云服务器IP:7500 可登录管理面板。
第二部分:本地内网设备部署 frpc
通用配置 frpc.toml(复制即用,修改注释内容)
toml# ========== 通用连接配置(和frps必须对应) ==========serverAddr = "120.xx.xx.xx" # 替换成你的云服务器公网IPserverPort = 7000auth.token = "自定义高强度密码123456ABC" # 和frps的token完全一致# ========== 示例1:内网网页服务 192.168.1.100:80 → 云服务器5080端口 ==========[[proxies]]name = "web服务"type = "tcp"localIP = "192.168.1.100" # 内网设备IPlocalPort = 80 # 内网服务端口remotePort = 5080 # 外网访问端口(云服务器5080,安全组已放行)# ========== 示例2:SSH远程控制 内网22 → 外网5022 ==========[[proxies]]name = "ssh管理"type = "tcp"localIP = "192.168.1.100"localPort = 22remotePort = 5022# ========== 示例3:HTTP自定义域名(搭配DDNS-Go) ==========# [[proxies]]# name = "网站域名"# type = "http"# localIP = "192.168.1.100"# localPort = 80# customDomains = "nas.你的域名.com"
frpc 部署
- 下载同版本frp,解压
bashwget https://github.com/fatedier/frp/releases/download/v0.67.0/frp_0.67.0_linux_amd64.tar.gztar -zxvf frp_0.67.0_linux_amd64.tar.gzcd frp_0.67.0_linux_amd64
- 新建
frpc.toml填入上面配置 - 临时测试运行(看报错)
bash./frpc -c frpc.toml
- 后台开机自启(systemd)
bashsudo mkdir -p /etc/frpsudo cp frpc /usr/local/bin/sudo cp frpc.toml /etc/frp/sudo tee /etc/systemd/system/frpc.service <<EOF[Unit]Description=FRP ClientAfter=network.target[Service]Type=simpleExecStart=/usr/local/bin/frpc -c /etc/frp/frpc.tomlRestart=on-failureRestartSec=5[Install]WantedBy=multi-user.targetEOFsudo systemctl daemon-reloadsudo systemctl enable frpcsudo systemctl start frpcsystemctl status frpc

