内网穿透工具frp原理和使用教程

article/2025/11/11 1:48:46

内网穿透(Port Forwarding)是将公网上的IP地址映射到内部网络中的一台计算机的某个端口上,以便外部网络可以访问该计算机中运行的应用程序。内网穿透技术可以通过一些开源工具来实现,其中比较常用的是frp。在本文中,我们将介绍frp的原理和流程。

一、frp的原理

frp是一款高性能的内网穿透工具,采用客户端-服务器的模式,通过中转服务器将外部网络的请求转发到内部网络中的指定计算机。具体来说,frp的原理如下:

1.客户端向frp服务器发送请求。当客户端启动时,它会向frp服务器发送一条请求,请求服务器分配一个唯一的客户端ID。

2.服务器返回分配的客户端ID。frp服务器将分配一个唯一的客户端ID,并将其返回给客户端。

3.客户端连接到服务器。客户端使用分配的客户端ID连接到frp服务器,以便服务器可以知道客户端要连接的计算机和端口。

4.服务器将请求转发到客户端。当外部网络发出请求时,frp服务器将请求转发到客户端,客户端将请求转发到指定的计算机和端口上。

二、frp的流程

现在让我们来看看如何在frp中设置内网穿透。

1.安装frp客户端和服务器。首先,您需要在内部网络中的计算机上安装frp客户端和frp服务器。您可以从frp的官方网站(https://github.com/fatedier/frp)上下载最新版本的frp。

2.配置frp服务器。在内部网络中的计算机上运行frp服务器,并配置frp服务器以接受来自客户端的请求。在frps.ini文件中配置服务器IP地址和端口,以及TLS证书和密钥。您还可以在配置文件中指定要开放的端口,以便外部网络可以访问。

3.配置frp客户端。在客户端计算机上安装并运行frp客户端,并配置frp客户端以连接到frp服务器。在frpc.ini文件中配置客户端ID,服务器IP地址和端口,以及要转发的端口。客户端ID必须与frp服务器分配的ID匹配,以便服务器可以将请求转发到正确的客户端。

4.测试内网穿透。现在您可以尝试从外部网络中的计算机访问frp服务器上配置的端口。如果一切正常,您应该能够看到内部网络中的应用程序正在运行。

总之,frp是一款非常实用的内网穿透工具,可以让您轻松地将内部网络中的应用程序公开给外部网络访问,而不必暴露内部网络中的计算机。虽然在配置过程中可能需要一些技术知识,但frp的使用非常灵活和方便,并且可以满足各种内网穿透需求。

除了上述的基本流程之外,frp还支持更多的高级功能,例如:

1.端口转发:您可以使用frp将内部网络中的多个端口映射到外部网络的一个端口上,从而简化配置过程。

2.域名解析:您可以将frp配置为使用自己的域名,而不是IP地址,以便更方便地访问内部网络中的应用程序。

3.反向代理:您可以使用frp设置反向代理,以便在内部网络中运行的应用程序可以访问外部网络中的资源。

4.负载均衡:如果您有多个frp客户端和多个应用程序,您可以使用frp的负载均衡功能来分配流量,以确保性能和可靠性。

下面是frp运用的详细流程

1.服务端配置

github地址:
https://github.com/fatedier/frp/releases
在这里插入图片描述
打开公网服务器,个人软件服务习惯 放在/opt下
1.cd /opt/
拉取安装
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.48.0_linux_amd64.tar.gz
在这里插入图片描述
2.解压
tar -zxvf frp_0.48.0_linux_amd64.tar.gz
目录如下
在这里插入图片描述
其中frps 是服务端启动脚本,frps.ini是服务端启动配置文件
frpc 是客户端启动脚本 frpc.ini 是客户端启动配置文件

3.修改配置文件 , 因为这里是服务端,所以修改frps.ini
vi frps.ini
[common]

# 绑定服务端端口,给客户端连接的通道
bind_port = 7000
# 设置客户端token
token = WSX#EDC
# 日志 -- 
log_file = /opt/frp_0.48.0_linux_amd64/log/frps.log
log_level = info
# 日志最多保存天数
log_max_days = 3

4.执行
这里我们直接执行
frps -c frps.ini
如果没有报错,我们在放在后台持久执行
nohup ./frps -c ./frps.ini &

5.查看是否启动成功

netstat -anp|grep 7000
tcp6       0      0 :::7000                 :::*                    LISTEN      4546/./frps

6.开放7000端口

firewall-cmd --zone=public --add-port=8090/tcp --permanent
firewall-cmd --reload

至此,服务端配置完成

客户端:

一样的,先下载 (和服务端是同一个软件包)

  1. wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz
    2.解压
    3.然后修改客户端配置文件 vim frpc.ini
[common]
server_addr = xxx.xxx.xxx.xxx # 服务端ip
server_port = 7000 # 与服务器上填写的通信端口一致,和服务端建立通道,连接1
token=!QAZ@WSX#EDC # 和服务器token一致
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 8090    # 客户端服务的端口
remote_port = 8090    # 链接上后,服务端会监听这个端口,转发到local_port 上

4.打开对应的防火墙端口
5.启动,成功可见如下信息

./frpc -c frpc.ini

在这里插入图片描述
6.看下服务端日志,连接上并且监听了8090端口(服务端也要开启防火墙8090端口哦)
在这里插入图片描述
测试 ,在浏览器输入 服务端ip +8090 端口,就会转到内网服务了


http://chatgpt.dhexx.cn/article/FLlEicjt.shtml

相关文章

内网穿透原理

前言 内网穿透一般在家庭用户下NAS设备在经常折腾,实际上企业云服务就是典型的内网穿透,只不过方式原理有点不同,家庭网络因为宽带的上传限制和没有公网IP,难度大于企业宽带。实际上内网穿透就是反向代理,域名解析&am…

内网穿透的实现和原理解析

需求场景: 基于微信平台开发服务号,本地移动端测试时,需要在微信平台注册测试号,然后填写接口配置信息,此信息需要你有自己的服务器资源,填写的URL需要正确响应微信发送的Token验证。如何能让外网访问到本地服务器呢&…

MacBook M1 Idea集成SVN

1.检查是否安装SVN svn —version2.检查是否安装了brew brew -v3.安装 brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)” speed4.记住安装路径 5.配置国内镜像源HOMEBREW BOTTLE 6.svn安装前需要执行 按照/usr/local路径…

IntelliJ IDEA上svn分支管理和使用

IntelliJ IDEA上svn分支管理和使用 从Subversion下载trunk下的代码 选择项目创建分支 右键 Subversion --> branch or Tag … 选择Repository Location:需要创建的项目 选择Any Location 分支的位置和名字 详细查看截图 切换到分支 选择项目右键Subversion --> Update …

vscode / idea 使用SVN及查看历史记录

一、vscode使用 SVN 1、在vscode插件中心搜索svn 进行安装(我这里已经安装完毕了) 注意:插件安装成功,需要重新启动软件。 安装成功后会出现如下的图标: 2、桌面右键使用SVN Checkout… 来检出远程库的代码&#xf…

IDEA之配置SVN

最近在公司的开发项目过程中,发现有关idea2020的svn配置方法都参差不齐,所以整理了有关idea2020整合svn的步骤; 目录 一、SVN配置1.1 下载SVN1.2 安装SVN1.3 配置SVN 二、常见问题2.1 Warning:java: 源值1.5已过时 一、SVN配置 1.1 下载SVN…

IDEA使用svn拉取多模块项目

如果没有安装过svn客户端,安装的时候需要选择安装第二个工具,如下图所示 安装小乌龟, 自行搜索, 注意点是需要选择安装第二个工具 因为默认是不安装的, 而这个组件是集成到IDEA ”必须的” . 如果是已经安装好的, 但是没有选这个的也是有办法的 办法一: 更改小乌龟 在卸载小乌龟…

idea 使用svn出现path to certificate

百度了一会,有说清缓存的,不能使用。 还有配置这个的,也不行。 我记得以前可以,后来发现你拉去代码不用在idea拉,能提交。只要你不选最外层项目。可能是我打开了两个idea,都用的这个链接,只是文…

IDEA SVN 代码合并

IDEA SVN 代码合并 一:安装Subversion 插件 打开settings 设置,搜索svn,点击install,安装成功后重启 二:导入svn项目 打开idea,左下角点击 Subversion, 选择第四个选项卡或者从 View -> Tool Windows -> Sub…

IDEA上使用svn插件

安装后会在安装目录下出现svn.exe字样有用!!! 如果没有svn.exe 原因: 产生这个问题的原因是由于我们在安装svn时,默认缺少一项导致的,我们只需要再重新安装一下即可(不需要卸载) 双击安装文件后,选择Modify 2.勾选command line client tool…

Idea使用SVN常用操作

贴一个有弧度的代码 目录 Idea中配置 检出代码 subversion有许多选项 拉取(更新)/提交代码 ​ Show Diff对比代码, 提交代码注释项必填 查看历史提交 设置文件忽略 拉出新分支 将分支合并到主干 删除分支 更换SVN账号信息 svn结构: 一般习惯性在创建repository仓…

macOS系统升级后idea使用svn报错

昨天升级了 macOS Monterey 更新完后IntelliJ IDEA无法正常使用SVN 报Cannot run program “svn” (in directory “/XXXX/XXXX/XXXX/XXX”): error2!,NO such file or directory 看了一下网上的解决方案 1.command line client中的参数,在代码的svn…

idea使用svn提交代码失败,报错E230001: Server SSL certificate verification failed: certificate issued

IDEA踩坑记一 问题描述 使用SVN提交代码失败,报错E230001: Server SSL certificate verification failed: certificate issued。 在网上搜索了一下,全是下面这样的回答: 实际上这个 ls 是查看目录内容的命令,执行之后会展示目录…

IDEA使用svn进行代码分支合并

svn基础这里就做说明了,只简单说明一下IDEA下svn分支合并的操作 首先打开IDEA下的svn操作界面如图 按步骤点击后会出下如下界面,第一次进入没有配置分支路径是没有红框里面的选项的 那么就点击configure branches进行配置,如图 首次肯定是没有我这里配置的这些东西的按照步骤…

IDEA使用svn提交、检出代码详细步骤

原文地址传送门 ,感谢分享! 1、Idea集成svn 2、查看svn仓库 调出svn视图: 连接svn服务器: 连接后效果如下: 3、忽略上传文件 由于不同的用户使用的环境不同,因此有些文件不用上传到svn服务器,比如有的用…

idea使用svn下载项目并配置项目

idea使用svn下载项目并进行配置,首先安装svn,并在idea中配置svn,安装过程此处省略(注意要勾选command line工具),idea中的配置如下: idea中,设置-版本控制---subversion,这里一定要指定command…

Idea项目配置使用SVN

首先下载svn https://osdn.net/projects/tortoisesvn/storage/1.14.5/Application/TortoiseSVN-1.14.5.29465-x64-svn-1.14.2.msi/ 再下载一个中文包(看个人习惯,不影响使用) https://osdn.net/projects/tortoisesvn/storage/1.14.5/Language…

IDEA如何使用SVN插件

IDEA如何使用SVN插件 下载TortoiseSVN 官网下载最新版 安装时 看图片 如已安装看看有没有svn.exe文件,有就跳过安装没有继续 安装后会在安装目录下出现svn.exe字样有用!!! 然后打开IDEA ,file - setting 按钮打开…

Idea 使用svn创建新分支

1, 使用工具:idea编辑器,svn版本控制工具 2, 打开idea 编辑器,按照下图选择 3, 从主干上拉一个新分支,放在branch目录下 选择trunk 右键选择 branch or Tag...选项 3,设置分支的名…

Idea使用svn时commit特别慢的问题及解决方法

加油,新时代打工人! 英文含义: • Perform code analysis:指的是提交前代码分析 • Check TODO(Show ALL):如果代码有//TODO 注释,IDEA提交是会提示你是否有完成TODO里的内容。 默认这两项是选中…