资讯动态

frp 内网穿透完整部署教程

发布时间:2026/10/24 4:13:29 来源:尧图企业网站定制
前提条件角色需要服务端frps一台有公网 IP的 VPSLinux客户端frpc内网机器Linux / Windows / macOS防火墙VPS 安全组/防火墙放行 frp 端口默认 7000 和要转发的端口️ 整体架构你的电脑(FinalShell) → 公网VPS(frps, 端口6000) → 内网机器(frpc → 本地22端口)第一步下载 frp查看架构uname-m# x86_64 → amd64# aarch64 → arm64下载并解压以 Linux amd64 为例cd/optwgethttps://github.com/fatedier/frp/releases/download/v0.71.1/frp_0.71.1_linux_amd64.tar.gztar-zxvffrp_0.71.1_linux_amd64.tar.gzcdfrp_0.71.1_linux_amd64文件说明frpsfrps.toml→ 服务端用放 VPS 上frpcfrpc.toml→ 客户端用放内网机器上第二步配置服务端VPS 上操作2.1 编辑 frps.tomlcd/opt/frp_0.71.1_linux_amd64vifrps.toml填入# frps.toml - 服务端配置 bindPort 7000 # frp 服务端口客户端连接用 auth.token 你自己设一个复杂密码 # 身份验证客户端必须一致 # 可选开启 Dashboard 面板 webServer.addr 0.0.0.0 webServer.port 7500 webServer.user admin webServer.password 面板密码2.2 放行防火墙端口# 如果你用 ufwufw allow7000/tcp ufw allow6000/tcp# SSH 转发用的端口ufw allow7500/tcp# Dashboard 面板端口可选# 如果你用 firewalldfirewall-cmd --add-port7000/tcp--permanentfirewall-cmd --add-port6000/tcp--permanentfirewall-cmd--reload⚠️别忘了去 VPS 服务商的控制台安全组/防火墙也放行这些端口2.3 启动服务端前台测试./frps-cfrps.toml看到frps started successfully说明启动成功。按CtrlC停止后面配置 systemd 后台运行。第三步配置客户端内网机器上操作3.1 同样下载 frpcd/optwgethttps://github.com/fatedier/frp/releases/download/v0.71.1/frp_0.71.1_linux_amd64.tar.gztar-zxvffrp_0.71.1_linux_amd64.tar.gzcdfrp_0.71.1_linux_amd643.2 编辑 frpc.tomlvifrpc.toml填入# frpc.toml - 客户端配置 serverAddr 你的VPS公网IP serverPort 7000 auth.token 和服务端一样的密码 # 可选客户端管理面板 webServer.addr 127.0.0.1 webServer.port 7400 # SSH 隧道 [[proxies]] name ssh-ubuntu type tcp localIP 127.0.0.1 localPort 22 remotePort 6000 # VPS 上对外暴露的端口随便设1024-65535remotePort 6000的意思别人连 VPS 的 6000 端口就等于连我内网机器的 22 端口。3.3 启动客户端测试./frpc-cfrpc.toml看到login to server success和proxy started就说明连上了。第四步测试 FinalShell 连接打开 FinalShell新建 SSH 连接项值主机你的 VPS 公网 IP端口6000就是 remotePort用户名内网机器的 SSH 用户名比如 root密码/密钥内网机器的 SSH 密码或密钥⚠️ 注意连的是VPS 的 IP 转发端口不是内网机器的 IP。能成功登录就说明穿透成功了第五步配置开机自启systemd测试通过后配置成系统服务开机自动运行。5.1 服务端VPSvi/etc/systemd/system/frps.service写入[Unit] Descriptionfrp server Afternetwork.target [Service] Typesimple ExecStart/opt/frp_0.71.1_linux_amd64/frps -c /opt/frp_0.71.1_linux_amd64/frps.toml Restartalways RestartSec5 [Install] WantedBymulti-user.target启动并设为开机自启systemctl daemon-reload systemctl start frps systemctlenablefrps systemctl status frps# 查看状态5.2 客户端内网机器vi/etc/systemd/system/frpc.service写入[Unit] Descriptionfrp client Afternetwork.target [Service] Typesimple ExecStart/opt/frp_0.71.1_linux_amd64/frpc -c /opt/frp_0.71.1_linux_amd64/frpc.toml Restartalways RestartSec5 [Install] WantedBymulti-user.target启动并设为开机自启systemctl daemon-reload systemctl start frpc systemctlenablefrpc systemctl status frpc附录 AWindows 客户端一键部署PowerShell nssm以下是 Windows 系统部署 frp 客户端的一键 PowerShell 脚本包含下载解压、Defender 排除、配置生成、nssm 安装为系统服务开机自启。示例以转发 RDP3389 端口为例。需要以管理员身份运行 PowerShell。A.1 完整脚本# 先把目录建出来把整个目录排除掉zip 和解压后的 exe 都在这里面New-Item-ItemType Directory-Force-Path C:\frp|Out-NullAdd-MpPreference-ExclusionPathC:\frpAdd-MpPreference-ExclusionProcessfrpc.exe,frps.exe# 确认生效(Get-MpPreference).ExclusionPath#下到已排除的目录里Invoke-WebRequest-Urihttps://gh-proxy.com/https://github.com/fatedier/frp/releases/download/v0.71.1/frp_0.71.1_windows_amd64.zip-OutFileC:\frp\frp.zip-UseBasicParsing# 用系统自带 tar 解压比 Expand-Archive 稳后者对大 zip 还有路径长度限制tar-xf C:\frp\frp.zip-C C:\frpGet-ChildItemC:\frp\frp_0.71.1_windows_amd64#配置并设置开机自启$DC:\frp\frp_0.71.1_windows_amd64;Add-MpPreference-ExclusionPath$D-EA 0;Add-MpPreference-ExclusionProcess frpc.exe-EA 0;Copy-Item$D\frpc.toml$D\frpc.toml.bak.$(Get-Date-f yyyyMMdd-HHmmss)-EA 0;(serverAddr 32.188.73.145,serverPort 40000,auth.token dyshk,,[[proxies]],name test-tcp,type tcp,localIP 127.0.0.1,localPort 3389,remotePort 43389)|Set-Content-Path$D\frpc.toml-Encoding ASCII;[Net.ServicePointManager]::SecurityProtocol3072;Invoke-WebRequesthttps://nssm.cc/release/nssm-2.24.zip-OutFile$env:TEMP\nssm.zip-UseBasicParsing;Expand-Archive$env:TEMP\nssm.zip-DestinationPath$env:TEMP\nssm-Force;$n(Get-ChildItem$env:TEMP\nssm-Filternssm.exe-Recurse-File|? FullName-matchwin64|select-First 1).FullName;$nstop frpc 2$null;$nremove frpc confirm 2$null;$ninstall frpc$D\frpc.exe;$nsetfrpc AppParameters-c $D\frpc.toml;$nsetfrpc AppDirectory$D;$nsetfrpc DisplayNamefrp client;$nsetfrpcStartSERVICE_AUTO_START;$nsetfrpc AppRestartDelay 5000;$nsetfrpc AppStdout$D\frpc.log;$nsetfrpc AppStderr$D\frpc.log;$nstartfrpc;$nstatus frpc;Get-Servicefrpc|selectName,Status,StartTypeA.2 脚本各段简要说明段落作用New-ItemAdd-MpPreference创建C:\frp目录并加入 Windows Defender 排除列表防止 frp 被误报查杀Invoke-WebRequest下载 frp通过 gh-proxy 镜像加速下载 Windows 版 frp 到已排除目录tar -xf解压用系统自带 tar 解压 zip比Expand-Archive更稳定$DC:\frp\...配置生成自动写入frpc.toml配置示例转发本地 3389 → VPS 43389下载 nssm下载 nssmNon-Sucking Service Manager用来把 frpc 注册成 Windows 系统服务nssm install/set安装 frpc 服务设置自动启动、崩溃重启延迟、日志输出路径nssm startGet-Service启动服务并查看运行状态A.3 需要修改的参数脚本里的示例配置使用前请改成你自己的参数示例值说明serverAddripip你的 VPS 公网 IPserverPort40000frps 服务端端口对应 frps.toml 的bindPortauth.tokendyshk认证密钥必须和服务端一致localPort3389内网要转发的本地端口3389RDP22SSHremotePort43389VPS 上对外暴露的端口A.4 常用管理命令# 查看服务状态Get-Servicefrpc# 启动 / 停止 / 重启服务Start-ServicefrpcStop-ServicefrpcRestart-Servicefrpc# 查看日志Get-ContentC:\frp\frp_0.71.1_windows_amd64\frpc.log-Tail 50-Wait# 修改配置后重启服务生效Restart-Servicefrpc第六步进阶 — 添加更多穿透服务可选frp 不止能转发 SSH想穿透什么服务就在frpc.toml里加一个[[proxies]]块。转发 Web 服务80 端口[[proxies]] name web-http type tcp localIP 127.0.0.1 localPort 80 remotePort 8080转发 RDPWindows 远程桌面[[proxies]] name rdp type tcp localIP 192.168.124.10 # 内网 Windows 的 IP localPort 3389 remotePort 6389转发 MySQL[[proxies]] name mysql type tcp localIP 127.0.0.1 localPort 3306 remotePort 6306改完配置重载systemctl restart frpc 安全建议auth.token 一定要设复杂否则别人可以扫到你的 7000 端口随便连不要转发不必要的端口只转发你需要的SSH 建议用密钥登录禁用密码登录防止被爆破服务端限制允许转发的端口范围# frps.toml 里加 allowPorts [ { start 6000, end 7000 } ]Dashboard 面板不要暴露给公网或者设置强密码开启 TLS 加密传输v0.71.x 默认已支持 wire protocol v2 AEAD 常用命令# 查看服务状态systemctl status frps# 服务端systemctl status frpc# 客户端# 实时查看日志journalctl-ufrps-f# 服务端journalctl-ufrpc-f# 客户端# 重启服务systemctl restart frps systemctl restart frpc# 停止服务systemctl stop frps systemctl stop frpc❓ 常见问题排查1. 客户端连不上服务端检查 VPS 安全组/防火墙是否放行 7000 端口确认serverAddr填的是 VPS 公网 IP确认auth.token服务端和客户端一致2. 连不上转发端口检查 VPS 防火墙是否放行remotePort端口确认内网服务是否在运行SSH 是否开着看journalctl -u frpc -f有没有报错3. 频繁断开检查网络稳定性已配置 systemd Restartalways的话会自动重连 参考链接frp 官方仓库github.com/fatedier/frpfrp 官方文档gofrp.org

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑