一、工作原理

​ frp是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务, 支持tcp, udp, http, https等协议类型,可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。frp分为服务器端和客户端程序(后文有详细描述)。大致流程如下:

1.服务端运行在具有公网IP的服务器上,并监听某个端口,等待客户端连接。
2.客户端运行在需要穿透的内网机器上,与服务器建立之后,相当于客户端和服务端之间建立了一条隧道,访问服务端的请求会通过隧道转发给内网主机。
3.当互联网用户连接/访问服务器监听的端口时,服务器将用户请求转发到内网客户端,实现内网穿透。

二、准备工作

1.一台具有公网IP的主机,如:阿里云主机(本文以阿里云主机为例)。

2.下载frp软件,下载地址:https://github.com/fatedier/frp/releases,此处下载windows版本。

 三、参数配置

frp内网穿透,只需配置相应的参数即可,不涉及程序代码编写。我们把第二步下载的frp程序解压,会得到下面的文件:

frpc.exe 为客户端软件,将一直运行在客户端(内网主机)。

frpc.ini 为客户端配置,我们主要修改的配置文件之一。

frps.exe 为服务器端软件,将一直运行在阿里云主机。

frps.ini 为服务器端配置,我们主要修改的配置文件之一。

1.部署服务器端

1.1 上传frp程序到服务器。

将解压后的文件上传到服务器上,用记事本打开frps.ini文件,输入一下配置:

[common]
bind_port = 7000 
vhost_http_port = 7003

bind_port 用来建立frp服务器端与客户端连接的端口。

vhost_http_port 用来代理http请求的端口。

1.2 运行frps服务器端。

Win+R 打开运行窗口,输入cmd,打开cmd窗口,切换到frp目录,运行:frps.exe。

出现上面的提示,说明服务器端已正常运行。

1.3 端口规则设置。

通过上面的设置,外网并不能访问阿里云主机的7000和7003端口,还需要在阿里云控制台设置服务器的访问规则。

至此,服务器端配置已完成。 

2.部署客户端。

1. 复制frp软件到你指定的位置,路径中最好不要有中文或空格。打开frpc.ini文件,键入:

[common]
server_addr = ***.***.***.***
server_port = 7000   

[rdp]
type = tcp
local_ip = 0.0.0.0           
local_port = 3389
remote_port = 7089
 
[web01]
type = http
local_ip = 0.0.0.0
local_port = 82  
custom_domains = a.qingshanboke.com

server_addr = ***.***.***.***(替换为你阿里云主机的外网IP)
server_port = 7000  

这两句是用来建立客户端与服务器端的连接用的,端口需与服务器端一致。

2.配置远程连接

[rdp]
type = tcp
local_ip = 0.0.0.0           
local_port = 3389
remote_port = 7089
将服务器的7089端口,映射到本地主机的3389端口,同样,需要在阿里云控制台添加安全规则。

3.配置web映射
[web01]
type = http
local_ip = 0.0.0.0
local_port = 82  
custom_domains = a.qingshanboke.com

添加http端口映射,服务器端的端口是7003,所以映射后的访问地址为:

http://a.qingshanboke.com:7003,一定要记得加上端口号。

四、写批处理启动frp

在frp程序目录下,新建start.bat文件,录入:

@echo off
:home
frpc -c frpc.ini
goto home

将此脚本设为开机启动,或者创建window定时任务,或者作为windows服务都可以。

另外,frpc_full.ini、frps_full.ini 是所有配置参数,里面有注释的,可以根据自己需要进行配置,上面我们只用到了rdp和http,其他端口映射,ssh等,都是可以的,自行研究了。

 五、参考文章

1.windows下基于frp的内网穿透部署 - 知乎

2.frp内网穿透windows配置开机启动_牧子与羊的博客-CSDN博客_frpc windows 开机启动

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐