2025-05-02 00:20:00
,某些文章具有时效性,若有错误或已失效,请在文末评论区留言在了解内网穿透原理之前,我们先说一下什么是内网穿透。内网,就是在公司或者家庭内部,建立的局域网络或者是办公网络,可以实现多台电脑之间的资源共享,包括设备、资料、数据等。而外网则是通过一个网关与其它的网络系统连接,相对于内网而言,这种网络系统称之为外部网络,常见的就是我们日常使用的互联网。
一般而言,在没有固定公网IP的情况下,外网设备无法直接访问内网设备。而内网穿透技术,顾名思义就是能让外网的设备找到处于内网的设备,从而实现数据通信。
内网穿透原理
内网穿透,又称为NAT穿透。NAT背后的设备,它们的主要特点是 ,可以访问外网,但不能被外网设备有效访问。基于这一特点,NAT穿透技术是让NAT背后的设备,先访问指定的外网服务器,由指定的外网服务器搭建桥梁,打通内、外网设备的访问通道,实现外网设备访问到内网设备。
该技术除了可以访问隐藏在NAT后的设备,同样可以穿透防火墙。这是因为防火墙一般只拦截了入站没有拦截出站,所以也可以让防火墙内的设备对外提供服务。
由于内网设备并不是与外网设备直接相连,所以在安全性上是毋庸置疑的,内网穿透可以说是安全与效率兼得。
![图片[1]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/f05174411520250429232131.webp)
FRP是什么
FRP(Fast Reverse Proxy)是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 FRP 工具,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
开源仓库:https://github.com/fatedier/frp
FRP特性
通过在具有公网 IP 的节点上部署 FRP 服务端,您可以轻松地将内网服务穿透到公网,并享受以下专业特性:
●多种协议支持:客户端服务端通信支持 TCP、QUIC、KCP 和 Websocket 等多种协议。
●TCP 连接流式复用:在单个连接上承载多个请求,减少连接建立时间,降低请求延迟。
●代理组间的负载均衡。
●端口复用:多个服务可以通过同一个服务端端口暴露。
●P2P 通信:流量不必经过服务器中转,充分利用带宽资源。
●客户端插件:提供多个原生支持的客户端插件,如静态文件查看、HTTPS/HTTP 协议转换、HTTP、SOCKS5 代理等,以便满足各种需求。
●服务端插件系统:高度可扩展的服务端插件系统,便于根据自身需求进行功能扩展。
●用户友好的 UI 页面:提供服务端和客户端的用户界面,使配置和监控变得更加方便。
FRP下载
FRP 分为两个部分:服务端(frps)、客户端(frpc)。
服务端(frps):一般部署在公网服务器上,例如:阿里云、腾讯云 等。
客户端(frpc):部署在需要穿透的客户端,例如:NAS、软路由 等。
下载地址:https://github.com/fatedier/frp/releases
访问 GitHub 开源仓库不方便的童鞋,可以从我的网盘下载:
●普通下载:https://url57.ctfile.com/d/16898257-67240600-69c433?p=1140,访问密码:1140
●其它网盘:
请根据自己的系统架构选择合适版本下载,例如,我的服务器是 x86-64 的 CentOS 系统,因此,下载的 FRP 版本是 frp_0.62.1_linux_amd64.tar.gz,如下图。
![图片[2]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/c21b18359d20250429233439.webp)
FRP目录结构
从 v0.52.0 版本开始,FRP 开始支持 TOML、YAML 和 JSON 作为配置文件格式。INI 已被弃用,并将在未来的发布中移除。新功能只能在TOML、YAML 或 JSON 中使用,希望使用这些新功能的用户应相应地切换其配置格式。
通过 FRP 开源仓库地址下载 FRP 工具,FRP 的服务端(frps)和客户端(frpc)都在一个压缩包中。
FRP 解压后文件说明:
文件 | 说明 | 作用 |
---|---|---|
frps | 服务端核心程序 | 服务端(Server)的可执行文件,运行在具有公网 IP 的服务器上 |
frps.toml | 服务端配置文件 | 服务端的配置文件,同样使用 TOML 格式 |
frpc | 客户端核心程序 | 客户端(Client)的可执行文件,运行在需要穿透的内网设备上 |
frpc.toml | 客户端配置文件 | 客户端的配置文件,使用 TOML 格式编写 |
LICENSE | 许可证文件 | frp 的开源许可证文件,说明软件的使用条款 |
![图片[3]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/f05174411520250430000112.png)
frps(服务端)部署
下面,十一张(www.11zhang.com)来演示一下如何在 CentOS 系统上部署 FRP 服务端。
1、将下载好的 Linux 版本 FRP 压缩包(如 frp_0.62.1_linux_amd64.tar.gz) 上传到 /root 目录,或者使用 wget 命令直接下载 FRP 的压缩包到 /root 目录,如下图;
cd root
wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
![图片[4]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/3b10e49dcf20250430232143.png)
![图片[5]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/3b10e49dcf20250430222312.png)
2、使用以下命令解压 FRP 压缩包,如下图:
tar xvf frp_0.62.1_linux_amd64.tar.gz
![图片[6]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/f05174411520250430222518.webp)
3、进入解压后的 FRP 目录;
cd frp_0.62.1_linux_amd64
![图片[7]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/147503c60e20250430234529.webp)
4、在解压后的 FRP 目录中,你会找到一个 frps.toml 文件,这是 FRP 服务端的配置文件。你需要根据实际需求编辑这个文件,以下是一个基本的 frps.toml 配置示例:
# ========== 服务端配置 ==========
auth.method = "token"
auth.token = "abcd1234"
bindAddr= "0.0.0.0"
bindPort = 7000
vhostHTTPPort = 8123
# ========== 仪表盘设置 ==========
webServer.addr = "172.16.0.3"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "11zhang"
![图片[8]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/05/117f2a193e20250501021224.webp)
5、在配置好 frps.toml 文件后,你可以通过以下命令启动 FRP 服务端:
./frps -c ./frps.toml
![图片[9]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/04/3b10e49dcf20250430234926.webp)
6、如果你在 CentOS 上使用了防火墙(例如 firewalld),你还需要允许 7000、7500 等端口通过防火墙;
frps(服务端)设置开机启动
通过遵循上述步骤,您可以轻松地使用 systemd 来管理 frps 服务,实现启动、停止、自动运行和开机自启动。确保替换路径和配置文件名称以匹配您的实际安装。
另外,我们可以通过以下命令获取 frps 使用的端口号,如下图;
netstat -pant | grep frps | grep LISTEN
![图片[10]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/05/f31ed9640420250502001757.webp)
frpc(客户端)运行
frpc(客户端)运行有两种方式,分别是使用原版frpc客户端和frpc-desktop客户端,自行选择合适的方式。
1、原版frpc客户端
下面十一张(www.11zhang.com)在 Windows 客户端上演示以下运行 FRP 客户端。同样,你也需要下载并配置 FRP 客户端,FRP 客户端的配置通常包括指向服务端的地址和端口,以及需要转发的服务信息,以下是一个基本的 frpc.toml 配置示例:
# ========== 服务端配置 ==========
serverAddr = "116.198.204.6"
serverPort = 7000
auth.method = "token"
auth.token = "abcd1234"
loginFailExit = false
[[proxies]]
name = "RDP"
type = "tcp"
localIP = "192.168.50.63"
localPort = 3389
remotePort = 8789
[[proxies]]
name = "web"
type = "http"
localIP = "192.168.50.63"
localPort = 8123
customDomains = ["116.198.204.6"]
![图片[11]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/05/11153f5fc320250501010148.webp)
2、在 Windows 客户端上配置好 frpc.toml 文件参数之后,我们需要启动 FRP 客户端,步骤:先打开 frp 文件夹,在上面的目录地址栏中输入 cmd 后回车,然后输入以下命令启动;
frpc -c frpc.toml
![图片[12]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/05/3b10e49dcf20250501004301.webp)
![图片[13]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/05/f05174411520250501004302.png)
![图片[14]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/05/53bd1b45d420250501004221.gif)
3、使用 Windows 系统远程桌面连接测试一下,输入“域名/IP+端口”即可访问内网机器上的 3389 端口服务,如下图。
![图片[15]-使用FRP进行内网穿透实现远程访问-十一张](https://www.11zhang.com/wp-content/uploads/2025/05/78b7323a1120250501005251.webp)
2、frpc-desktop客户端
frpc-desktop客户端的运行,请移步之前的文章,此处省略!
暂无评论内容