frp介绍内网穿透,大家熟知的一般会想到ngrok或者第三发的花生壳这样的商业软件,当然也有免费使用的部分,两者都是不错的选择。今天的主角不是两者中的任何一个,它就是frp。
frp是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。frp 需要服务端和客户端共同作用,服务端为 frps,一般安装在 VPS 服务器上;客户端为 frpc,可安装在Windows、路由器、NAS上。frps 和 frpc 配合使用,可以远程访问或控制内网设备。
Github地址:https://github.com/fatedier/frp服务端安装脚本支持的系统
1、使用putty、Xshell、FinalShell(好用)连接你的VPS服务器,最好使用国内的,国外的延迟太大,体验不好;然后分别输入以下命令(我是一次性复制的):
wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh
chmod 700 ./install-frps.sh
./install-frps.sh install
2、安装过程中的一些参数配置翻译,版本不同可能会随版本变化,以下是部分解释
Please input frps bind_port [1-65535](Default Server Port: 5443):
#输入frp提供服务的端口,用于服务器端和客户端通信,按Enter键表示默认5443,否则手动输入新端口
Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):
#输入frp的控制台服务端口,用于查看frp工作状态,按Enter键表示默认6443,否则手动输入新端口
Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):
#输入frp进行http穿透的http服务端口,按Enter键表示默认80,否则手动输入新端口,一般不建议默认80
Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443):
#输入frp进行https穿透的https服务端口,按Enter键表示默认443,否则手动输入新端口
Please input privilege_token (Default: WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq):
#输入frp服务器和客户端通信的密码,默认是随机生成的,按Enter键表示按默认来,否则手动输入。frpc客户端需要这个接头暗号
Please input frps max_pool_count [1-200](Default max_pool_count: 50):
#设置每个代理可以创建的连接池上限,默认50
Please select log_level #####
1: info
2: warn
3: error
4: debug
#####################################################
Enter your choice (1, 2, 3, 4 or exit. default [1]):
#设置日志等级,4个选项,默认是info
Please input frps log_max_days [1-30]
(Default log_max_days: 3 day):
#设置日志保留天数,范围是1到30天,默认保留3天。
##### Please select log_file #####
1: enable
2: disable
#####################################################
Enter your choice (1, 2 or exit. default [1]):
#设置是否开启日志记录,默认开启,开启后日志等级及保留天数生效,否则等级和保留天数无效
3、安装成功会有以下提示
Congratulations, frps install completed!
==============================================
You Server IP : 你的服务器IP
Bind port : 5443
Dashboard port : 6443
vhost http port : 80
vhost https port: 443
Privilege token : WEWLRgwRjIJVPx2kuqzkGnvuftPLQniq
Max Pool count : 50
Log level : info
Log max days : 3
Log file : enable
==============================================
4、注意:需要VPS开放以上用到的端口,如果没有开放,需要手动添加,然后访问http://服务器IP:6443,就可以看到frp的状态,如果打不来,可能是6443端口未开放
常用命令- ./install-frps.sh update #版本更新
- ./install-frps.sh uninstall #卸载frps
- frps start #服务启动
- frps stop #服务停止
- frps restart #重启服务
- frps status #状态
- frps config #参数设置
- frps version #frps版本
目前先提供windows客户端的使用方式,客户端可以在Github下载,根据自己系统位数下载,https://github.com/fatedier/frp/releases
1、解压缩
2、客户端只需要两个文件,frpc.exe和frpc.ini,一个是配置文件,一个是可执行文件
3、打开配置文件
[common]
server_addr = 替换为你的frp服务器IP
server_port = 替换为你的frp服务器端安装时设置的bind_port,默认5443
token = 替换为你的frp服务器端安装时设置的token
[web1]
type = http
local_ip = 替换为你需要穿透内网的设备IP,比如192.168.1.6
local_port = 80
use_encryption = true
use_gzip = true
custom_domains = 替换为你拥有的一个二级域名,比如a.frp.com,将frp.com指向你的服务器IP,域名中的a可以随意替换。
http_user = 替换为一个自定义用户名,比如admin,穿透内网时需要先输入这个用户名进行验证。
http_pwd = 替换为一个自定义密码,与上面的用户名配合使用。
[web2]
type = http
local_ip = 替换为你需要穿透内网的设备IP,比如192.168.1.8
local_port = 80
use_encryption = true
use_gzip = true
custom_domains = 替换为你拥有的一个二级域名,比如b.frp.com,将frp.com指向你的服务器IP,域名中的b可以随意替换。
http_user = 替换为一个自定义用户名,比如admin,穿透内网时需要先输入这个用户名进行验证。
http_pwd = 替换为一个自定义密码,与上面的用户名配合使用。
4、frpc的启动方式是命令行,运行cmd输入以下命令(注意自己的路径)
d:\frpc\frpc.exe -c d:\frpc\frpc.ini
5、如未出错,则不要关闭窗口,不然就退出了
6、开机自启,可以使用我之前文章介绍的NSSM工具注册成windows服务,就可以开机自启动了
其他用途内网穿透还可以有很多用途,比如远程桌面,还有很多强大的功能配置参考官网的中文文档
类似的内网穿透工具https://github.com/fatedier/frp/blob/master/README_zh.md
NSmartProxy,感兴趣的可以看看,是一款国产的采用.net core开发的,也很强大,开源地址如下
总结https://github.com/tmoonlight/NSmartProxy
内网穿透用途很多,一般可用于搭建私人网站、NAS、远程办公、微信开发等,更多功能可以自行查找相关资料,等待你的挖掘!