FRP服务可以分配给你一个域名让你本地的web项目提供给外网访问,特别适合向别人展示你本机的web demo以及调试一些远程的API(用作微信公众号,企业号的开发)
对于没有公网IP的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题。 今天给大家介绍一个好用内网穿透工具FRP,FRP全名:快速反向代理。FRP是一个使用Go语言开发的高级的反向代理应用程序,可以帮助您轻松地进行内网穿透,对外提供服务。FRP支持TCP,UDP,HTTP,HTTPS等协议类型,并支持Web服务。根据域名进行路由转发。
FRP客户端说明
代码语言:javascript复制[common] //无需修改
server_addr = 0.0.0.0 //frps服务器IP
server_port = 0000 //frps端口
token = ***** //秘钥
[win10] //名称自定义
type = https //标头类型
local_ip = 0.0.0.0 //内网IP
local_port = 80 //内网端口
remote_port = 80 //外网端口
custom_domains = ***.dabenshi.cn //***为自定义
FRP客户端配置实例
代码语言:javascript复制[common] //无需修改
server_addr = 51.83.172.100 //frps服务器IP
server_port = 7000 //frps端口
token = 12345678 //秘钥
[win10] //名称自定义
type = tcp //标头类型
local_ip = 127.0.0.1 //内网IP
local_port = 80 //内网端口
remote_port = 7010 //外网端口
//最后访问地址是51.83.172.100:7010
代码语言:javascript复制本站FRP免费服务器信息 //Version 0.34.3
已稳定运行:2年 264天 21时 10分 5秒
连接地址和特权认证密码请看配置实例
免费多级域名格式 51.83.172.100 举例:51.83.172.100:7010(7010-8000)
将域名CNAME解析至 51.83.172.100 即可绑定自己的域名
此服务器开放7010-8000范围的TCP、UDP端口映射
服务器是0.34.3版本,请使用相同版本客户端,支持UDP打洞直连穿透
FRP 客户端启动方法
1.Windows在黑色命令行窗口中,输入以下命令后回车,如果系统防火墙有提示,允许即可。 3.接下来会出现如下提示,表示连接成功,不要关闭这个窗口,否则玻璃钢就退出了。
代码语言:javascript复制d:frpcfrpc.exe -c d:frpcfrpc.ini //实例d:frpc为文件路径,按照你当前的路径修改
代码语言:javascript复制./frps.exe -c ./frps.ini //Linux
注!下载之后请自行修改配置文件frpc.ini
FRP Linux客户端启动方法
代码语言:javascript复制//前台启动
cd /frp //根据frp所在路径修改,cd到指定位置
./frpc -c ./frpc.ini
代码语言:javascript复制//后台启动
cd /frp //根据frp所在路径修改,cd到指定位置
nohup ./frpc -c frpc.ini >/dev/null 2>&1 &
说明:关于Linux和Windows启动自启配置,暂无方法。大家可以自行百度
客户端配置示例(Windows上frpc.ini)
代码语言:javascript复制server_addr = 192.168.100.100 #服务端的IP地址,好像也可以写域名,没试过
server_port = 7000 #服务端端口
[test_http] #Http服务,映射的是服务端http80端口
type = http #服务方式
local_ip = 127.0.0.1 #服务端ip,可写本地,局域网等做反向代理的ip
local_port = 8000 #服务端端口
custom_domains = test.test.com #需要反向代理的域名,就是服务端要代理的域名
[test_https] #Https服务,映射的是服务端https443端口
type = https #服务方式
local_ip = 127.0.0.1 #服务端ip,可写本地,局域网等做反向代理的ip
local_port = 8000 #服务端端口
custom_domains = test.test.com #需要反向代理的域名,就是服务端要代理的域名
# 以下为https新加的内容
plugin = https2http #将 https请求转换成http请求后再发送给本地服务
plugin_local_addr = 127.0.0.1:8000 #转换http后的端口
#证书相关配置
plugin_crt_path = C:UsersAdministratorDesktoptest.test.comfullchain1.crt #linux下生成的证书为fullchain.pem格式,复制到Windows上改成.crt后缀即可
plugin_key_path = C:UsersAdministratorDesktoptest.test.comprivkey1.key #linux下生成的证书为privkey.pem格式,复制到Windows上改成.key后缀即可
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp
公网服务端frp s相关命令
代码语言:javascript复制[root@centos frp]# ./frps -v #显示版本号
[root@centos frp]# ./frps -h #显示帮助说明
[root@centos frp]# ./frps -c ./frps.ini #启动 frps ,关闭SSH窗口即停止运行
[root@centos frp]# cat frps.ini #查看服务端 frps.ini 配置文件
[root@centos frp]# ps -ef |grep frps|grep -v grep #frps服务端进程状态
[root@centos frp]# nohup ./frps -c ./frps.ini >/dev/null 2>&1 & #frps服务端后台运行
[root@centos frp]# ps -ef |grep frps|grep -v grep |awk '{print $2}'|xargs kill -9 #frps服务端-停止
查看版本号
代码语言:javascript复制[root@centos frp]# ./frps -v #显示版本号
0.30.0
[root@centos frp]# ./frps -h #显示帮助说明
frps is the server of frp (https://github.com/fatedier/frp)
Usage:
frps [flags]
Flags:
--allow_ports string allow ports
--bind_addr string bind address (default "0.0.0.0")
-p, --bind_port int bind port (default 7000)
--bind_udp_port int bind udp port
-c, --config string config file of frps
--dashboard_addr string dasboard address (default "0.0.0.0")
--dashboard_port int dashboard port
--dashboard_pwd string dashboard password (default "admin")
--dashboard_user string dashboard user (default "admin")
--disable_log_color disable log color in console
-h, --help help for frps
--kcp_bind_port int kcp bind udp port
--log_file string log file (default "console")
--log_level string log level (default "info")
--log_max_days int log max days (default 3)
--max_ports_per_client int max ports per client
--proxy_bind_addr string proxy bind address (default "0.0.0.0")
--subdomain_host string subdomain host
-t, --token string auth token
-v, --version version of frpc
--vhost_http_port int vhost http port
--vhost_http_timeout int vhost http response header timeout (default 60)
--vhost_https_port int vhost https port
[root@centos frp]#
公网服务端frp s相关命令
代码语言:javascript复制[root@centos frp]# ./frps -v #显示版本号
[root@centos frp]# ./frps -h #显示帮助说明
[root@centos frp]# ./frps -c ./frps.ini #启动 frps ,关闭SSH窗口即停止运行
[root@centos frp]# cat frps.ini #查看服务端 frps.ini 配置文件
[root@centos frp]# ps -ef |grep frps|grep -v grep #frps服务端进程状态
[root@centos frp]# nohup ./frps -c ./frps.ini >/dev/null 2>&1 & #frps服务端后台运行
[root@centos frp]# ps -ef |grep frps|grep -v grep |awk '{print $2}'|xargs kill -9 #frps服务端-停止
查看版本号
代码语言:javascript复制[root@centos frp]# ./frps -v #显示版本号
0.30.0
[root@centos frp]# ./frps -h #显示帮助说明
frps is the server of frp (https://github.com/fatedier/frp)
Usage:
frps [flags]
Flags:
--allow_ports string allow ports
--bind_addr string bind address (default "0.0.0.0")
-p, --bind_port int bind port (default 7000)
--bind_udp_port int bind udp port
-c, --config string config file of frps
--dashboard_addr string dasboard address (default "0.0.0.0")
--dashboard_port int dashboard port
--dashboard_pwd string dashboard password (default "admin")
--dashboard_user string dashboard user (default "admin")
--disable_log_color disable log color in console
-h, --help help for frps
--kcp_bind_port int kcp bind udp port
--log_file string log file (default "console")
--log_level string log level (default "info")
--log_max_days int log max days (default 3)
--max_ports_per_client int max ports per client
--proxy_bind_addr string proxy bind address (default "0.0.0.0")
--subdomain_host string subdomain host
-t, --token string auth token
-v, --version version of frpc
--vhost_http_port int vhost http port
--vhost_http_timeout int vhost http response header timeout (default 60)
--vhost_https_port int vhost https port
[root@centos frp]#
内网客户端frp c相关命令
代码语言:javascript复制[root@centos frp]# ./frpc -v #显示版本号
[root@centos frp]# ./frpc -h #显示帮助说明
[root@centos frp]# ./frpc -c ./frpc.ini #启动 frpc ,关闭SSH窗口即停止运行
[root@centos frp]# cat frpc.ini #查看客户端 frpc.ini 配置文件
[root@centos frp]# ps -ef |grep frpc|grep -v grep #frpc客户端进程状态
[root@centos frp]# nohup ./frpc -c ./frpc.ini >/dev/null 2>&1 & #frpc客户端后台运行
[root@centos frp]# ps -ef |grep frpc|grep -v grep |awk '{print $2}'|xargs kill -9 #frpc客户端-停止
查看版本号
代码语言:javascript复制[root@centos frp]# ./frpc -v #显示版本号
0.30.0
[root@centos frp]# ./frpc -h #显示帮助说明
frpc is the client of frp (https://github.com/fatedier/frp)
Usage:
frpc [flags]
frpc [command]
Available Commands:
help Help about any command
http Run frpc with a single http proxy
https Run frpc with a single https proxy
reload Hot-Reload frpc configuration
status Overview of all proxies status
stcp Run frpc with a single stcp proxy
tcp Run frpc with a single tcp proxy
udp Run frpc with a single udp proxy
xtcp Run frpc with a single xtcp proxy
Flags:
-c, --config string config file of frpc (default "./frpc.ini")
-h, --help help for frpc
-v, --version version of frpc
Use "frpc [command] --help" for more information about a command.
[root@centos frp]#
Linux后台启动
代码语言:javascript复制Server:nohup ./frps -c frps.ini >/dev/null 2>&1 &
Client:nohup ./frpc -c frpc.ini >/dev/null 2>&1 &
说明: 其中,>为输出重定向符号,>/dev/null 2>&1。这条命令其实分为两命令,一个是>/dev/null,另一个是2>&1。 1. >/dev/null 这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。 2. 2>&1 这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。 linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。
windows系统服务后台运行脚本
很多小白不会将frp注册为windows后台服务运行,每次都手动运行会留下一个cmd窗口,为了方便广大frp用户,制作了此windows一键脚本。 使用说明:将该脚本解压在Frpc同一目录,双击运行
隐藏运行脚本代码
代码语言:javascript复制set wscriptObj = CreateObject("Wscript.Shell")
wscriptObj.run "frpc.exe",0
将此vbs脚本放在frp的同个目录下,双击运行就可以了,要关闭frp的话直接打开任务管理器结束frp进程。