frp配置内网穿透教程

简介

FRP(Fast Reverse Proxy) 是一个高性能的内网穿透工具,支持 TCP、UDP、HTTP、HTTPS 等多种协议,可将内网服务(如 Web 服务器、SSH、远程桌面)映射到公网,方便远程访问。本教程将指导你完成 FRP 的安装、配置和使用,帮助你快速实现内网服务的外网访问。

本教程适用于:

  • 希望将本地服务(如 Web 服务器)暴露到公网的用户。
  • 需要远程访问内网设备(如 Raspberry Pi、NAS)的用户。
  • 开发者或运维人员需要简单、安全的内网穿透解决方案。

准备工作

在开始之前,请确保你具备以下条件:

  • 公网服务器:一台具有公网 IP 的服务器(如云服务器,推荐 Linux 系统,如 Ubuntu 或 CentOS)。
  • 内网客户端:需要穿透的本地设备(如 PC、Raspberry Pi)。
  • FRP 软件:从 FRP GitHub 发布页面 下载最新版本。
  • 基础环境:确保服务器和客户端支持 FRP 运行(通常为 Linux、Windows 或 macOS)。

安装 FRP

1. 下载 FRP

  1. 访问 FRP GitHub 下载页面

  2. 根据服务器和客户端的操作系统选择合适的压缩包(如 frp_x.y.z_linux_amd64.tar.gz)。

  3. 下载并解压:

    // 下载文件到当前文件夹
    wget https://github.com/fatedier/frp/releases/download/v0.63.0/frp_0.63.0_linux_amd64.tar.gz
    // 解压文件
    tar -zxvf frp_0.63.0_linux_amd64.tar.gz
    cd frp_0.63.0_linux_amd64
    
    

2. 安装到服务器

  1. 将解压后的文件传输到公网服务器(如通过 scp 或 FTP)。

  2. 确保服务器开放必要的端口(如默认的 7000 用于 FRP 控制,80、443 用于 HTTP/HTTPS)。

    # 示例:开放 7000 端口(Ubuntu)
    sudo ufw allow 7000
    # 如果是云服务器,需要在控制台进行端口添加,添加后才可以访问
    
    

3. 安装到客户端

  1. 将解压后的文件传输到内网客户端。
  2. 无需额外安装,直接使用解压后的 frpc(客户端)和 frps(服务器端)二进制文件。

配置 FRP

FRP 的配置主要分为服务器端(frps.toml)和客户端(frpc.toml)。以下是基本配置示例。

1. 服务器端配置(frps.toml)

在公网服务器上编辑 frps.toml

# 客户端与服务连接端口
bindPort = 7000
# 客户端连接服务端时认证的密码
auth.token = "xxxxxxxx"
# http协议监听端口
vhostHTTPPort = 80
vhostHTTPSPort = 443
# web界面配置
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"



  • bindPort:FRP 服务监听的端口,用于客户端连接。
  • vhostHTTPPort:HTTP 服务代理端口。
  • vhostHTTPSPort:HTTPS 服务代理端口。
  • auth.token:用于认证,防止未授权访问。

保存后,启动服务器端:

./frps -c frps.toml

2. 客户端配置(frpc.toml)

在本地客户端上编辑 frpc.toml

serverAddr = "公网服务器 IP" # 公网服务器 IP
serverPort = 7000  # 与frps.toml 的bindPort 一致
auth.token = "xxxxxx"   # 与frps.toml 的token 一致

[[proxies]]
name = "name" # 
type = "https"
localIP = "127.0.0.1"
localPort = 9001
#remotePort = 6000  # 远程访问端口
#自定义域名
customDomains = ["www.yanjy.top"]


  • serverAddr:公网服务器的 IP 地址。
  • serverPort:服务器端 bind_port
  • auth.token:与服务器端一致的认证令牌。
  • [[proxies]]:代理名称,可自定义。
  • name:穿透名称,自定义。
  • type:代理类型(如 httptcpudp)。
  • localIPlocalPort:本地服务的地址和端口。
  • customDomains:绑定的域名,需提前在 DNS 中解析到公网服务器 IP。

保存后,启动客户端:

./frpc -c frpc.toml


使用 FRP

1. 验证连接

  • 启动服务器端和客户端后,检查日志确认连接是否成功:
    • 服务器端日志:显示客户端连接信息。
    • 客户端日志:显示代理注册成功。
  • 通过浏览器访问 http://yourdomain.com 或公网 IP,检查是否能访问本地服务。

2. 常见使用场景

场景 配置示例
Web 服务 [web] type=http localIP=127.0.0.1 localPort=8080 customDomains=example.com
SSH 远程访问 [ssh] type=tcp localIP=127.0.0.1 localPort=22 remotePort=6000
远程桌面 (RDP) [rdp] type=tcp localIP=192.168.1.100 localPort=3389 remotePort=3389

3. 设置开机自启

  • Linux 服务器端(以 systemd 为例):

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

    添加以下内容:

    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target
    
    [Service]
    Type = simple
    # 启动frps的命令,需修改为您的frps的安装路径
    ExecStart = /home/frps_serve/frp_0.63.0_linux_amd64/frps -c /home/frps_serve/frp_0.63.0_linux_amd64/frps.toml
    
    [Install]
    WantedBy = multi-user.target
    
    
    

    启用服务:

    sudo systemctl enable frps # 设置为开机自启
    sudo systemctl start frps
    
    
  • 客户端:类似配置,修改 ExecStartfrpc 命令。


进阶配置

1. 启用 HTTPS

  1. 在服务器端配置 SSL 证书:

    • 将证书文件(.crt.key)放置在服务器目录。

    • 修改 frps.toml

      [common]
      bindPort = 7000
      vhostHTTPSPort = 443
      tlsOnly = true
      
      
  2. 客户端配置保持不变,访问时使用 https://yourdomain.com

2. 多客户端支持

frpc.ini 中添加多个代理:

[[proxies]]
name = "lhw-api"
type = "https"
localIP = "127.0.0.1"
localPort = 9001
#自定义域名
customDomains = ["你的域名"]



[[proxies]]
name = "mimisite"
type = "http"
localIP = "127.0.0.1"
localPort = 8099
#自定义域名
customDomains = ["你的域名"]

3. 性能优化

  • 压缩:在 frpc.toml 中启用 compression = true 减少带宽占用。
  • 连接池:在 frps.toml 中设置 max_pool_count = 50 提高并发性能。

故障排查

问题 可能原因及解决方案
客户端无法连接服务器 检查 serverAddrserverPortauth.token 是否正确;确保服务器防火墙开放端口。
无法访问服务 确认本地服务(如 Web 服务器)正在运行;检查 DNS 解析是否正确。
HTTPS 访问失败 确保证书有效且路径正确;检查服务器端是否启用 tls_only

安全建议

  • 使用强 Token:设置复杂且唯一的 auth.token
  • 启用 TLS:优先使用 HTTPS 加密通信。
  • 限制 IP:在服务器防火墙中限制允许连接的客户端 IP。
  • 定期更新:关注 FRP 官方发布,升级到最新版本以修复安全漏洞。

参考资料


附录

常用命令

# 查看 FRP 版本
./frps --version
./frpc --version

# 后台运行
sudo systemctl start frps # 启动frp
sudo systemctl stop frps # 停止frp
sudo systemctl restart frps # 重启frp
sudo systemctl status frps # 查看frp状态

配置文件结构

  • frps.toml:服务器端核心配置文件,定义监听端口和认证方式。
  • frpc.toml:客户端配置文件,定义代理规则和服务映射。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容