frp实现内网穿透

1、资源下载

frp下载地址

根据现场环境下载对应的版本。

2、基本原理

frp实现内网穿透的原理就是端口转发。目的就是为了外网访问内网。试用的条件是内网没有公网IP的情况。需要一台有公网IP的服务器作为转发。

以下图为例,如果我在外网用设备A想要访问家里内网的设备C,由于C没有固定的公网IP,所以我是没法访问到的,这时候就需要设备B,B是一个有公网IP的设备,最简单的,可以是一台阿里云或者腾讯云的服务器。我要访问C的3389端口时,我就访问B的7001端口,B会去请求C的3389端口,再把数据返回给A。从而实现了内网穿透的功能。

frp分为服务端和客户端两个,服务端就部署在B所在的服务器,客户端部署在C。客户端的配置文件里面可以配置需要转发的端口对应关系。

3、部署和配置

3.1、现场环境

现场使用的设备是,阿里云服务一台,centos系统,部署了1Panel面板,内网电脑一台,win10系统。

3.2、服务端

直接在1Panel的应用商店下载frps,配置运行,端口默认是7000。实际端口以参数里面的为准。

可以在服务端页面查看客户端的端口转发情况。

最好加上token,确保数据安全

注意去阿里云安全组策略里面打开对应端口的防火墙。

这里打开了7000-8000的所有端口,因为我配置会把转发端口都配置在这个段里面。

3.3、客户端

3.3.1、配置frpc

在github上下载最新的版本,找到windows的版本,下载打开,找到frpc.toml,对其进行配置。这边只会展示最基本的配置,完整的配置项会在最后展示。

注意把注释都删掉,token配置成和服务端一致

//服务端的IP和端口
serverAddr = "101.37.17.237"
serverPort = 7000

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"  //本机IP,无需修改
localPort = 3389       //本机需要被转发的端口
remotePort = 7001      //本机被转发后访问服务端的端口,当服务端的7001端口被请求的时候,会转发给127.0.0.1的3389

[[proxies]]
name = "test-tcp2"   //可配置多个映射
type = "tcp"
localIP = "127.0.0.1"  
localPort = ....       
remotePort = ....      

配置完成,把配置文件后缀frpc.toml改成.ini

不要直接双击启动frpc.exe,从cmd启动。

可以去访问服务端的页面,查看客户端是否以及连接到服务端。

3.3.2、配置开机自启动

windows环境配置frpc开机自启动。

首先在frpc所在的目录下,创建一个脚本文件,创建名称为frpstart.bat,编辑文件,输入下面的命令保存。

@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
REM
cd D:\SoftWares\frp
frpc.exe -c frpc.ini
exit
  • 找出自启动位置:按快捷键 “win+R” 调用运行窗口,在里面输入命令shell:startup, 打开Startup位置

  • 把第一步的 start_frp.bat 文件创建一个快捷方式,放在Startup 位置中。下次启动Windows时候,就不用再手动启动frp软件了。注意一定要是快捷方式,不能直接复制。

5、功能验证

在一台外网电脑上远程访问,配置下可以直接远程。

6、完整的配置清单

直接参考官方文档

6、参考和引用

操作流程:

https://blog.csdn.net/qq_42690327/article/details/129467480

https://zhuanlan.zhihu.com/p/627379991?utm_id=0

官方文档:

https://gofrp.org/zh-cn/docs/reference/server-configures/#serverconfig