Linux配置frp实现内网穿透

📅 2026/7/15 18:32:42
Linux配置frp实现内网穿透
参考文档https://gofrp.org/zh-cn/docs/一、工作原理RPFast Reverse Proxy是一种高性能的反向代理工具可用于内网穿透、安全访问和数据传输等场景。通过frp实现内网穿透使外部用户能够访问内网服务器。frp 主要由两个组件组成客户端(frpc) 和 服务端(frps)。通常情况下服务端部署在具有公网 IP 地址的机器上而客户端部署在需要穿透的内网服务所在的机器上。由于内网服务缺乏公网 IP 地址因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frpsfrp 负责根据请求的端口或其他信息将请求路由到相应的内网机器从而实现通信。需要以下准备1、公网服务器1台【作为服务端】云服务器2、内网服务器1台【作为客户端】本地服务器二、根据操作系统下载对应 frp方法1直接通过下载地址https://github.com/fatedier/frp/releases选择对应系统的压缩包如Linux (64位): frp_x.x.x_linux_amd64.tar.gzWindows (64位): frp_x.x.x_windows_amd64.zip方法2通过wegt命令下载如wget https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_freebsd_amd64.tar.gz三、安装配置一、frps服务端1、解压# 进入存放目录 cd /frps # 解压缩文件 tar -zxvf frp_0.65.0_linux_amd64.tar.gz # 目录重命名 mv frp_0.65.0_linux_amd64 frp # 删除 frpc cd frp rm frpc* -rf2、frps.toml配置编辑 frps.toml 文件 (早期版本为 frps.ini)vi frps.toml# 服务端监听地址 bindAddr 0.0.0.0 # frp 服务端与客户端绑定的端口用于接收客户端的连接 bindPort 7000 # 授权令牌 (token)客户端连接时需要提供相同的 token。为了安全请务必修改为复杂的字符串 auth.token suyueran # [可选] Web 界面仪表盘配置。可以在浏览器中查看 frp 的状态和代理统计信息 # 仪表盘监听的地址 webServer.addr 0.0.0.0 # 仪表盘访问端口 webServer.port 7500 # 仪表盘登录用户名可自行修改 webServer.user admin # 仪表盘登录密码为了安全请务必修改 webServer.password suyueran123 # 允许的端口号范围可有可无 allowPorts [ # 客户端web控制台端口号 { single 7400 }, # 客户端映射到公网服务器上的端口范围 { start 10000, end 19999 } ]注意防火墙放开 7000、7500、7400、10000-19999 端口号范围云主机安全组需要对应放开相应端口3、服务配置vi /etc/systemd/system/frps.service[Unit] Description frp server # 关键确保网络就绪后再启动比 network.target 更严格避免网络未通导致启动失败 After network-online.target syslog.target Wants network-online.target # 依赖网络完全就绪 [Service] Type simple # 启动frps的命令需修改为您的frps的安装路径 ExecStart /frps/frp/frps -c /frps/frp/frps.toml # 新增将标准输出和错误输出重定向到日志文件 StandardOutput append:/frps/frp/frps.log StandardError append:/frps/frp/frps.log # 可选若启动失败自动重启增加容错 Restart on-failure RestartSec 5 [Install] # 关键自启动目标必须正确Ubuntu 默认多用户目标 WantedBy multi-user.target退出保存重载systemctlsystemctl daemon-reload4、启动查看服务# 开机自动启动 systemctl enable frps # 启动 systemctl start frps # 关闭 systemctl stop frps # 重启 systemctl restart frps # 查看状态 systemctl status frps5、验证服务端启动访问 http://公网ip:7500​输入用户名密码若能打开管理界面则服务端启动成功二、frpc客户端客户端运行在内网机器上负责将内网服务代理到外网。1、解压# 进入存放目录 cd /frpc # 解压缩文件 tar -zxvf frp_0.65.0_linux_amd64.tar.gz # 目录重命名 mv frp_0.65.0_linux_amd64 frp # 删除 frps cd frp rm frps* -rf2、frpc.toml配置编辑 frpc.toml 文件 (早期版本为 frps.ini)vi frpc.toml# frpc.toml # [必须] 公网服务器的 IP 地址 serverAddr xxx.xxx.xxx.xxx # [必须] 与服务端 bindPort 一致 serverPort 7000 # [必须] 与服务端 auth.token 一致 auth.token suyueran # 客户端web控制台配置可不配置 webServer.addr 127.0.0.1 # 客户端仪表盘控制台端口号必须和服务端single一致 webServer.port 7400 # 客户端仪表盘登录用户名可自行修改 webServer.user admin # 客户端仪表盘登录密码可自行修改 webServer.password xxxxxx # 代理服务1 [[proxies]] # 代理名称必须唯一 name fuwu # 代理类型为 TCP type tcp # 需要暴露的本地服务 IP localIP 127.0.0.1 # 本地 SSH 服务的端口 localPort 8081 # 映射到公网服务器上的端口, remotePort 13000 # 代理服务2 [[proxies]] # 代理名称必须唯一 name fuwu2 # 代理类型为 TCP type tcp # 需要暴露的本地服务 IP localIP 192.168.5.165 # 本地 SSH 服务的端口 localPort 22 # 映射到公网服务器上的端口 remotePort 13001注若服务端设置 客户端映射到公网服务器上的端口范围remotePort 需要端口范围之内若配置客户端web控制台需放开7400端口3、服务配置vi /etc/systemd/system/frpc.service[Unit] Description frp client # 关键确保网络就绪后再启动比 network.target 更严格避免网络未通导致启动失败 After network-online.target syslog.target Wants network-online.target # 依赖网络完全就绪 [Service] Type simple # 启动frpc的命令需修改为您的frpc的安装路径 ExecStart /frpc/frp/frpc -c /frpc/frp/frpc.toml # 新增将标准输出和错误输出重定向到日志文件 StandardOutput append:/frpc/frp/frpc.log StandardError append:/frpc/frp/frpc.log # 可选若启动失败自动重启增加容错 Restart on-failure RestartSec 5 [Install] # 关键自启动目标必须正确Ubuntu 默认多用户目标 WantedBy multi-user.target退出保存重载systemctlsystemctl daemon-reload4、启动查看服务和常见命令# 禁用服务 systemctl disable frpc # 开机自动启动 systemctl enable frpc # 启动 systemctl start frpc # 重新启动 systemctl restart frpc # 停止 systemctl stop frpc # 查看状态 systemctl status frpc5、验证客户端启动打开服务端web管理界面TCP 列表有代理服务名称并且状态是online即启动成功四、测试穿透效果输入公网ip、账号、密码和配置代理服务remotePort端口号登录成功说明配置成功五、常见问题1、连接失败检查服务端和客户端的 server_addr、server_port、token 是否一致服务端防火墙是否开放相关端口。2、端口被占用修改 bind_port 或 remote_port 为未占用的端口。