frp实现内网穿透
frp实现内网穿透
1、资源下载
根据现场环境下载对应的版本。
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