小白也能上手!内网穿透工具frp超详细配置与实战教程

2026-07-29 10:01:24 150阅读
这是一篇面向小白的内网穿透工具frp超详细配置与实战教程,frp作为一款高效的内网穿透工具,能帮助用户实现外网访问内网设备,教程内容详尽,从基础概念、环境准备,到分步配置操作均有讲解,还结合实际场景做了演示,全面降低使用门槛,让无技术基础的用户也能轻松上手,解决外网无法直接访问内网资源的难题。

你有没有遇到过这些情况:
在家想远程连接公司电脑里的文件?
本地搭了个小网站/博客,想让外地的朋友帮忙测试?
树莓派上跑了个智能家居服务,出门在外却没法控制?

如果没有公网IP,这些需求似乎很难实现——这时候,内网穿透就是你的救星!而今天要介绍的 frp(fast reverse proxy),就是一款开源、免费、跨平台的内网穿透神器,就算你是技术小白,跟着步骤走也能轻松上手。

小白也能上手!内网穿透工具frp超详细配置与实战教程

先搞懂:什么是frp?为什么要用它?

内网穿透是什么?

简单说,内网穿透就是让外网用户能访问到你内网(比如家里、公司局域网)里的设备或服务,不需要公网IP,也不用折腾复杂的路由器端口映射。

frp是什么?

frp 是一款用 Go 语言开发的开源反向代理工具,它的优势很明显:

  • 跨平台:支持 Windows、Linux、MacOS,甚至树莓派;
  • 功能全:支持 TCP、UDP、HTTP、HTTPS 协议;
  • 易配置:配置文件简单易懂,新手也能快速上手;
  • 完全免费:代码开源在 GitHub,无任何商业限制。

frp的工作原理(小白也能秒懂)

frp 采用 “服务端+客户端” 架构:

  • 服务端(frps):需要放在一台有公网IP的服务器上(比如阿里云、腾讯云的轻量应用服务器,1核2G足够用);
  • 客户端(frpc):放在你需要暴露的内网设备上(比如家里的电脑、树莓派)。

工作流程是这样的:

外网用户 → 公网服务器(frps) → 内网设备(frpc) → 内网服务(比如SSH、网站)

简单说就是:客户端先主动连接服务端,建立一条“隧道”,外网的流量通过服务端转发到这条隧道,最终到达内网设备。

实战开始!手把手教你配置frp

接下来我们分三步:准备工作 → 配置服务端 → 配置客户端,先从最基础的“SSH访问内网Linux机器”和“HTTP访问本地网站”开始。

第一步:准备工作

  1. 一台有公网IP的云服务器:可以买阿里云、腾讯云的轻量应用服务器,系统选 Ubuntu 或 CentOS 都行(本文以 Ubuntu 为例);
  2. (可选)一个域名:如果要通过域名访问本地HTTP服务,需要把域名解析到公网服务器的IP;
  3. 下载frp安装包:去 GitHub 下载最新稳定版(推荐用最新的,配置文件格式为 toml):
    👉 frp GitHub Releases
    • 云服务器(Linux x86):下载 frp_0.52.3_linux_amd64.tar.gz
    • 内网Windows电脑:下载 frp_0.52.3_windows_amd64.zip

第二步:配置frp服务端(frps)

我们先在有公网IP的云服务器上部署 frps。

上传并解压安装包

把下载好的 Linux 安装包上传到云服务器(用 Xshell、WinSCP 或者 scp 命令都行),然后解压:

# 解压(以0.52.3为例,版本号替换成你下载的)
tar -zxvf frp_0.52.3_linux_amd64.tar.gz
# 进入解压后的目录
cd frp_0.52.3_linux_amd64

编辑服务端配置文件 frps.toml

新版本 frp 用 toml 格式(旧版本是 ini,别搞混啦),我们先做一个最基础的配置:

# 编辑frps.toml
vim frps.toml
# frps 监听的端口,frpc 会通过这个端口连接
bindPort = 7000
# 如果你要穿透HTTP/HTTPS服务,需要配置这两个端口(可选)
vhostHTTPPort = 8080
vhostHTTPSPort = 8443
# 身份验证(可选但推荐,防止别人蹭用你的frps)
auth.token = "your_secret_token_here"  # 换成你自己的密码

Esc,输入 wq 保存退出。

启动frps服务

先前台启动测试一下(没问题再弄后台运行):

./frps -c frps.toml

如果看到输出里没有报错,说明服务端启动成功啦!

(重要)开放云服务器防火墙端口

云服务器厂商(阿里云/腾讯云)的控制台里,需要在安全组里开放以下端口:

  • 7000(bindPort)
  • 6000(后面测试SSH用的远程端口)
  • 8080(vhostHTTPPort,可选)
    不同厂商的安全组配置位置略有不同,但很容易找到,记得添加“入站规则”哦。

第三步:配置frp客户端(frpc)

现在来配置内网设备上的客户端,我们分两个场景演示:

场景1:用SSH远程访问内网Linux机器

假设你的内网Linux机器IP是 168.1.100,SSH端口是默认的 22

  1. 在内网Linux机器上解压frp安装包
    和服务端一样,下载对应架构的安装包并解压。

  2. 编辑客户端配置文件 frpc.toml

    vim frpc.toml

    写入以下内容:

    # 公网服务器的IP地址
    serverAddr = "你的公网服务器IP"
    # frps配置的bindPort
    serverPort = 7000
    # 身份验证,和frps的token一致
    auth.token = "your_secret_token_here"
    # 配置SSH代理
    [[proxies]]
    name = "ssh_my_linux"  # 自定义名字,别重复就行
    type = "tcp"
    localIP = "127.0.0.1"  # 内网服务的IP,本地的话就是127.0.0.1
    localPort = 22         # 内网SSH的端口
    remotePort = 6000      # 公网服务器上用来转发的端口(自己选,别和其他服务冲突)
  3. 启动frpc客户端

    ./frpc -c frpc.toml

    如果看到 login to server success,说明客户端和服务端连接成功啦!

  4. 测试SSH连接
    在另外一台外网电脑上,用SSH命令连接:

    ssh -p 6000 内网Linux的用户名@你的公网服务器IP

    输入密码后能登录,就说明成功了!

场景2:用域名访问本地Web服务

假设你本地电脑上搭了个网站,跑在 8080 端口,想让朋友通过 web.yourdomain.com:8080 访问。

  1. 先把域名解析到公网服务器IP
    去域名控制台(比如阿里云域名),添加一条 A 记录:主机记录填 web,记录值填你的公网服务器IP。

  2. 编辑客户端配置文件 frpc.toml
    刚才的SSH配置保留,再添加一个HTTP代理:

    # 保留之前的serverAddr、serverPort、auth.token
    # 刚才的SSH代理
    [[proxies]]
    name = "ssh_my_linux"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000
    # 新增HTTP代理
    [[proxies]]
    name = "web_my_site"
    type = "http"
    localIP = "127.0.0.1"
    localPort = 8080  # 你本地网站的端口
    customDomains = ["web.yourdomain.com"]  # 换成你自己的域名
  3. 重启frpc客户端
    先按 Ctrl+C 停掉之前的frpc,再重新启动。

  4. 测试访问
    在外网浏览器里输入 http://web.yourdomain.com:8080(这里的8080是frps配置的vhostHTTPPort),就能看到你本地的网站啦!

进阶:让frp在后台自动运行

刚才的前台启动一关窗口就停了,我们需要让它后台运行,甚至开机自启。

Linux服务端/客户端用systemd自启

以服务端为例,客户端步骤一样,把 frps 换成 frpc 就行:

  1. 创建systemd服务文件

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

    写入以下内容(注意把路径换成你实际的frp目录):

    [Unit]
    Description=frps Service
    After=network.target
    [Service]
    Type=simple
    # 替换成你的frps路径
    ExecStart=/root/frp_0.52.3_linux_amd64/frps -c /root/frp_0.52.3_linux_amd64/frps.toml
    Restart=always
    RestartSec=5
    [Install]
    WantedBy=multi-user.target
  2. 启动并设置开机自启

    # 重载systemd配置
    sudo systemctl daemon-reload
    # 启动frps
    sudo systemctl start frps
    # 设置开机自启
    sudo systemctl enable frps
    # 查看状态
    sudo systemctl status frps

Windows客户端后台运行

Windows可以用 nssm 把frpc注册成系统服务,或者直接用任务计划程序设置开机启动(更简单):

  1. frpc.exefrpc.toml 放在一个固定文件夹里;
  2. 打开“任务计划程序”,创建任务,触发器选“当计算机启动时”;
  3. 操作选“启动程序”,程序选 frpc.exe,参数填 -c frpc.toml,起始于填文件夹路径;
  4. 勾选“不管用户是否登录都要运行”,确定即可。

安全提醒!别忽略这几点

  1. 一定要加身份验证:在 frps.tomlfrpc.toml 里配置 auth.token,防止陌生人连接你的frps;
  2. 不要用默认端口:比如把 bindPort 改成其他端口,降低被扫描的风险;
  3. 限制远程端口范围:在 frps.toml 里可以配置 allowPorts,只开放你需要的端口;
  4. HTTPS配置:如果是Web服务,建议用frp的HTTPS功能,或者在frps前面加Nginx反向代理,保证传输安全。

写在最后

frp 能做的远不止这些:你还可以用它穿透Windows远程桌面(RDP,端口3389)、转发UDP协议(比如游戏服务器)、甚至做内网文件共享。

一开始可能觉得有点复杂,但跟着步骤走一遍,你会发现其实很简单——赶紧找个小服务器试试,享受“随时随地访问内网”的便利吧!

如果遇到问题,欢迎在评论区留言讨论~


注:本文使用frp 0.52.3版本演示,新版本配置可能有微调,建议参考GitHub官方文档哦!

文章版权声明:除非注明,否则均为亚朵原创文章,转载或复制请以超链接形式并注明出处。