Frp内网穿透搭建教学

news/2025/3/28 11:16:46/文章来源:https://www.cnblogs.com/geek233/p/18791892

📌 FRP - Linux & Win 内网穿透教程 手搓难度 ⭐️⭐️


🚀 适用于: 本地服务器、电脑、树莓派、香橙派内网穿透
🛠️ 工具:FRP(fast reverse proxy)
🖥️ 系统:Linux、Windows
📚架构:x86、amd、arm
📝Frp版本:v0.61.1
🎯教程日期:2025/2/12


📖 目录

  1. 🌍 什么是 FRP?
  2. ⚡ 安装与配置
  3. 🎯 服务器端配置
  4. 🏠 客户端配置
  5. 📝 测试与验证
  6. 📌 结语

🌍 什么是 FRP?

FRP(Fast Reverse Proxy)是一款可以用于内网穿透的开源工具,
支持 TCP/UDP/HTTP/HTTPS 协议,可以将 内网服务 暴露到 公网
实现从任意网络环境访问到你的服务器或电脑。

🔗 Frp官网:https://github.com/fatedier/frp


⚡ 安装与配置

❗️开始之前请确保
❗️一个有公网IP的服务器
❗️你需要实现内网穿透的服务器或电脑

如果你不知道这些都是什么,就请去查询了解一下,不然这个教程你看不懂 Like this -> 0.o

🔹 1. 下载 FRP

前往 GitHub FRP Releases 下载适合你系统的版本:

💡提示
你看到的文件格式是 frp_0.61.1_xxx(适用系统)_yyy(系统架构).tar.gz
Windows系统下载 frp_0.61.1_windows_amd64.zip
Linux系统amd架构下载 frp_0.61.1_linux_amd64.tar.gz
Linux系统arm架构下载 frp_0.61.1_linux_arm64.tar.gz
通常服务器都是amd架构,如果是树莓派或香橙派就是arm架构。

Linux查看系统架构的指令: uname -m

  • 输出示例:
    • x86_64: 表示 64 位 x86 架构(也称为 AMD64)。
    • i686i386: 表示 32 位 x86 架构。
    • aarch64: 表示 64 位 ARM 架构。
    • mips: 表示 MIPS 架构。

📌搞清楚自己的系统和架构后就可以下载文件了

Windows下载方式:愣着干什么?去点击下载啊!下载完把zip解压出来,然后进入文件夹。

Linux下载方式:

#  AMD架构下载
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
#  ARM架构下载 树莓派 香橙派 用这个下
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_arm64.tar.gz

Linux 解压文件:

# 这两个指令根据你的系统架构选择
# AMD架构是这个
tar -xvzf frp_0.61.1_linux_amd64.tar.gz   # ARM架构是这个
tar -xvzf frp_0.61.1_linux_arm64.tar.gz     

进入文件夹

cd frp_0.61.1_linux_amd64   # AMDcd frp_0.61.1_linux_arm64    #ARM

💡 提示: 以上指令都只用执行其中一个!自己搞清楚系统架构!


🎯 服务器端配置

服务器端通常称为 frps,即 FRP 服务端
通俗点来说就是有公网IP的服务器


🔹 1. 服务器端 frps.toml 配置

📚官方参数文档:frps_full_example.toml <-大佬请参考这个 0.o

现在我们到你拥有公网ip的服务器
通常这个服务器系统都是linux
如果是windows那就更简单,跟着点击修改一个配置文件即可。

进入我们刚才解压后的文件后,我们可以看到里面有这些东西

# Linux指令 ls
frpc  frpc.toml  frps  frps.toml  LICENSE

我们需要修改的是 frps.toml 打开这个文件 (windows用记事本啥的都行)

nano frps.toml  #linux 指令

进入之后我们只会看到里面有一句 bindPort = 7000 不用理会他
把他删掉,复制上我的:

# ==============================
# FRP 服务器端(frps.ini)配置
# ==============================# 绑定监听地址(默认 `0.0.0.0` 代表监听所有 IP)
bindAddr = "0.0.0.0"#  服务器监听端口(客户端需要通过该端口连接 FRP 服务器)
bindPort = 7000# HTTP 端口(用于内网 HTTP 代理穿透)
vhostHTTPPort = 80# HTTPS 端口(用于内网 HTTPS 代理穿透)
vhostHTTPSPort = 443# 子域名支持
# 可以通过 `subDomainHost` 解析动态子域名
# 例如:如果 `subDomainHost` 配置为 "example.com"
# 那么客户端可以使用 `test.example.com` 访问内网服务
# 如果你没有域名或不使用此功能,请删除此行!
# 如果你要用IP直连例如:168.0.0.1:8848,就把这行删掉,不要配置!
subDomainHost = "xxxx.com"  # 请替换为你的真实域名# =============================================
# Web 控制台(Dashboard)配置
# =============================================# 监控界面监听地址(`0.0.0.0` 代表所有 IP 可访问)
webServer.addr = "0.0.0.0"# Web 管理面板端口(可在浏览器访问,默认 7500)
# 你可以通过 `http://你的公网IP:7500` 访问 FRP 管理面板
webServer.port = 7500# Web 控制台管理账号(可自定义)
webServer.user = "admin"# Web 控制台密码(请自行修改)
webServer.password = "xxxx"# =============================================
# 身份验证(Authentication)配置
# =============================================#  认证方式(防止未经授权的客户端连接)
# 目前 FRP 支持 `token` 和 `oidc` 方式,我们选用token
auth.method = "token"#  Token 认证(客户端需要匹配相同 token 才能连接)
# 通俗来说就是密码,写一个你能记住的,尽量长一点
# 示例: 123-abc-123abc 
auth.token = "123-abc-123abc"   # 请自行修改,不要用我的

🔹 2. 启动服务端frps

❗️注意:启动指令必须在frp文件目录下执行!

Linux 启动指令

screen -S frps ./frps -c frps.toml   

Windows启动指令

在文件目录里,点击上方的路径栏输入cmd后按回车打开命令窗口

在命令窗口输入(启动后绝对不要关闭窗口!)

frps.exe -c frps.toml

成功启动后会出现:

[frps/root.go:105] frps uses config file: frps.toml
[server/service.go:237] frps tcp listen on 0.0.0.0:7000
[server/service.go:305] http service listen on 0.0.0.0:80
[server/service.go:319] https service listen on 0.0.0.0:443
[frps/root.go:114] frps started successfully
[server/service.go:351] dashboard listen on 0.0.0.0:7500

🎉恭喜你!你现在已经成功配置服务端并将他运行!


💡 常见问题 & 注意事项

  • 端口冲突问题
    如果服务器 80 或 443 端口已被占用,可更换 vhostHTTPPortvhostHTTPSPort 的端口号。
    例如:
    vhostHTTPPort = 8080
    vhostHTTPSPort = 8443
    或者根据你自己的服务器情况自行配置,这种实际情况复杂,我就不细说了。

  • 访问 Web 监控面板
    如果启用了 webServer.port = 7500,你可以通过:
    http://你的服务IP:7500
    进入 FRP 管理面板,在此查看连接状态,如果能进入证明程序正常运行了。

  • Linux退出程序窗口
    按下Ctrl+A松开,再按一下D就可以退出程序窗口
    要回到程序窗口输入指令screen -r frps即可
    如果想结束程序进程输入指令pkill frps即可

  • Windows程序窗口
    程序运行后千万不要关闭窗口,这会导致程序关闭!
    当然你如果不想用了就可以直接关掉他,简单粗暴!


🏠 客户端配置

客户端用于连接服务器,一般是内网服务器的代理。
这个通常是你的个人电脑,你的树莓派、香橙派或NAS。

💡提示:你的客户端也要下载相同版本的frp压缩包并且解压,过程和第一步一样,这里就不多说了


🔹 1. 配置 frpc.toml

📚官方参数文档:frpc_full_example.toml <-大佬请参考这个 o.0

❗️注意:是frpc.toml!是FRPC!不要搞错了!和刚才的服务端不一样那个是frps.toml

# 服务端地址(这里要填你有公网IP的服务器的IP或者是服务器的域名)
serverAddr = "192.xxx.x.x"
# 服务器端口(Frp 服务端监听的端口)
serverPort = 7000# 连接协议
transport.protocol = "tcp"# 认证方式
auth.method = "token"
# 认证所使用的 Token(要和你刚才配置的服务端token完全一样!)
auth.token = "123-abc-123abc"# 代理配置
[[proxies]]
# 代理名称(标识该代理的名称,根据你的喜好填写)
name = "rocketcat"
# 代理类型(http、https、tcp等)
# 这里要根据你的需求来填写,如果你有域名,就用http
# 如果你没有域名,那就用IP直连,例如:165.0.0.1:8848,此时这里应该写tcp协议
# 如果你用tcp协议就必须把刚才服务端上subDomainHost = "xxxx.com"的配置删除!
# type = "tcp"   # IP+端口直连用这个
type = "http"
# 本地 IP(Frp 客户端需要将流量转发到的本地地址)
localIP = "127.0.0.1"
# 本地端口(Frp 客户端需要将流量转发到的本地端口,根据你要穿透的端口来填写)
localPort = 8848
# 访问此代理的子域名
# 如果你没有域名要用IP直连,请把这句删除掉,否则会导致无法连接!
subdomain = "rocket" # 子域名请根据你拥有的域名配置,配置后通过rocket.xxx.com格式访问# 如果你不用域名,要用ip+端口直连,请必须加上这句!
# 并且删除 subdomain = "rocket" 
# remotePort = 8848    # 这个端口和localPort 配置的一模一样,这样才能正常访问!

🔹 2. 启动服务端frpc

❗️注意:启动指令必须在frp文件目录下执行!

Linux 启动指令:

screen -S frpc ./frpc -c frpc.toml   

Windows启动指令

在文件目录里,点击上方的路径栏输入cmd后按回车打开命令窗口

在命令窗口输入(启动后绝对不要关闭窗口!)

frpc.exe -c frpc.toml

成功启动后会出现:

 [I] [sub/root.go:142] start frpc service for config file [frpc.toml][I] [client/service.go:295] try to connect to server...[I] [client/service.go:287] [7c9de41e30e15c46] login to server success, get run id [7c9de41e30e15c46][I] [proxy/proxy_manager.go:173] [7c9de41e30e15c46] proxy added: [rocketcat][I] [client/control.go:168] [7c9de41e30e15c46] [rocketcat] start proxy success

🎉恭喜你!你现在已经成功配置客户端并将他运行,快去访问一下试试吧!

尝试使用你的域名或IP+端口来访问你的客户端吧!

💡 常见问题 & 注意事项

  • 文件配置错误
    一定要注意客户端配置的是frpc.toml文件,如果配置错了,服务无法正常运行!

  • IP+端口访问模式配置
    配置的时候必须删除服务端的subDomainHost
    配置type为TCP模式type = "tcp"
    配置remotePort监听你的端口remotePort= 8848

  • Linux退出程序窗口
    按下Ctrl+A松开,再按一下D就可以退出程序窗口
    要回到程序窗口输入指令screen -r frpc即可
    如果想结束程序进程输入指令pkill frpc即可


📝 测试与验证

🔹 1. 检查端口

在服务器端检查 FRPS 是否监听:

ss -tunlp | grep 7000
ss -tunlp | grep 7500

🔹 2. 访问 HTTP 服务

在浏览器访问你的网站:

http://xxxx.xxxxx.com 或 165.0.0.1:8848 访问

🔹 3. 查看程序运行的日志

Linux通过指令进入程序窗口查看日志,如果出现报错,可以发给AI解答

🔹 4. AI!!!救我!!!!

遇到问题通通交给AI解决就好了,让他看你的运行日志和你的配置文件
他肯定知道哪里出问题了,解决速度肯定比我快。


📌 结语

这个配置总体来说没有太难,只有两个配置文件。
我写这个教程是因为市面上的教学太笼统或太老旧。
更主要的原因是原项目已经废除了用.ini格式来配置frp文件。
希望这个教程对你有帮助,如果喜欢请点个赞吧!
这个教程在我的GitHub也有同步发出,希望你能去点个Star 🌟

转载自
RocketCat
Time: 2025/2/12


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/905533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

整车销售管理怎么做?4S店整车销售7大模块!

这篇跟大家聊聊4S店整车销售管理到底该怎么做?干这行七八年了,从一线销售爬到区域总监,这里面的门道我总结成七大模块,全是实战干货,看完直接落地用!下述所示整车管理系统>> https://s.fanruan.com/mx0aj 一、系统底层逻辑:四个核心齿轮咬合 1.库存管理是心脏 每天…

CSS 实现滚动条的隐藏但保留滚动功能

CSS 实现滚动条的隐藏但保留滚动功能CSS 实现滚动条的隐藏但保留滚动功能 有几种方法可以在网页中隐藏滚动条但保留滚动功能,以下是常见的实现方式,使用 CSS:使用 ::-webkit-scrollbar(适用于 Webkit 内核浏览器,如 Chrome、Safari)/* 隐藏滚动条但保留滚动功能 */ body …

cccxm

29593138陈晓明

愚人节恶搞代码:系统错误倒计时与节日彩蛋动画

为你的网页增添趣味性和互动性!通过JavaScript轻松创建一个逼真的“系统错误倒计时”画面,结合动态进度条和节日彩蛋动画,为你的用户带来意想不到的惊喜。无论是愚人节还是特殊节日,这段代码都能为你的网站增添一份独特的幽默感和创意。距离愚人节还有一周时间,在这个充满…

RFDN:用于轻量级图像超分辨率的残差特征蒸馏网络

在本文中,我们提出了一种**特征蒸馏连接(feature distillation connection FDC)**,它在功能上等同于通道分裂操作,同时更加轻量级和灵活。多亏了FDC,我们可以重新思考信息**多蒸馏网络(information multi-distillation network IMDN)**,并提出一个轻量级和准确的SISR模…

AI编程的 9 个大坑

原帖:[X@cj_zZZz](x.com) 我每天使用AI工具编程6-7小时。 在过去12个月里开发了超过36个项目。 事实是:用一个提示"给我构建...应用"是不可能的。 所以,以下是你在使用AI编程时可能犯的所有错误: 1. 没有规划 通过我的规划技巧,我能在几小时内从想法到一个写得很…

从按键到语音:家电设备交互的演进之旅

家电,在人们的日常生活中扮演着不可或缺的角色,也是提升人们幸福感的重要组成部分,那你了解家电的发展史吗? #70年代 结婚流行“四大件”:手表、自行车、缝纫机,收音机,合成“三转一响”。#80年代 随着改革开放的深化,中国经济开始飞速发展,黑白电视机、冰箱、洗衣机这…

Docker环境搭建与容器化入门实战——从虚拟机配置到应用部署

作者信息 姓名:林俊祥 专业:云计算技术应用 学号:23593107 技术方向:云平台搭建与部署 一、项目背景 本次实践基于Ubuntu系统,通过虚拟机环境完成Docker的完整部署流程,涵盖: 虚拟机创建与系统安装 SSH远程连接配置 Docker引擎安装与容器管理 应用容器化实战三、关键技术…

Vibe Coding彻底火了,到底什么是氛围编程?它如何改变未来的软件开发?

在过去十年间,低代码/无代码平台和 AI 代码助手持续冲击着软件开发行业。如今,一种被称为 Vibe Coding 的新兴实践突然走红,甚至颠覆了人们对"程序员到底在做什么"的认知。本篇文章将从定义到实践策略、从优势到局限性,全方位探讨 Vibe Coding 给软件开发带来的重…

知识蒸馏实战

蒸馏实战小实验 本实验相关代码已开源至github 失败经历 爱爱医数据蒸馏Qwen2.5-7B 1.用爬虫在爱爱医网站爬取1k条数据。(刚学一点爬虫,不会越过验证码,还是自己一次一次验证😅) 2.数据格式预处理,例如: {"instruction": "你需要基于我提供的患者病历,…

VLM-R1环境搭建推理测试

引子 前文也写了DeepSeek R1模型的安装测试,感兴趣的童鞋移步(https://blog.csdn.net/zzq1989_/article/details/145400876?spm=1001.2014.3001.5502)。那么在多模态方面R1方法(GRPO,Group Relative Policy Optimization)能不能用呢?毫无疑问,已经有不少人在尝试了。今…