工具推荐 | 内网穿透神器FRP部署教程
工具介绍
FRP是一款高性能的反向代理工具,可以将位于NAT或防火墙后的本地服务器暴露到互联网上。目前支持TCP、UDP、HTTP和HTTPS协议,可通过域名将请求转发至内部服务,此外还提供P2P直连模式
Github地址:https://github.com/fatedier/frp
本文尽可能简单叙述,方便大家快速部署,因当前最新版是0.63.0,因此本文在0.63.0的基础上书写
准备条件
- 一台拥有公网IP的服务器(推荐阿里云、腾讯云等)
- 一个域名(非必需)
服务端
安装
打开https://github.com/fatedier/frp/tree/v0.63.0, 下载frp_0.63.0_linux_amd64.tar.gz
上传到服务器然后解压
1 | tar -zxvf frp_0.63.0_linux_amd64.tar.gz |
配置
cd进入frp_0.63.0_linux_amd64
文件夹,输入vim frps.toml
编辑frps.toml
1 | # frp客户端与服务端连接的端口 |
按下ESC进入命令模式,然后输入:wq
并按回车键,保存文件并退出Vim
运行
为了能在后台持续运行,这里用screen启动一个新窗口
1 | screen -S frp #名字可以自定义 |
赋予执行权限
1 | chmod +x frps |
运行脚本
1 | ./frps -c ./frps.toml |
按下组合键 ctrl+a+d
关闭当前screen窗口,运行下面的命令可以再次进入窗口
1 | screen -ls #查看当前screen状态 |
网页仪表盘
成功运行之后,打开http://你的服务器IP:7500
,即可进入仪表盘页面,可以查看当前的配置、连接等状态
客户端
安装
打开https://github.com/fatedier/frp/tree/v0.63.0, 下载frp_0.63.0_windows_amd64.zip
配置
解压并打开文件夹,编辑frpc.toml
1 | serverAddr = "你的服务器IP地址" |
(可选)域名配置
如果你有自己的域名,则可以进行域名配置,以获得更佳的体验
我这里用的是namesilo,其他的域名提供商也一样操作
具体操作就是在DNS Record添加一条A记录,地址填你的服务器IP,名字可以自定义,后面就通过这个子域名访问你的服务
然后打开frpc.toml
重新编辑
1 | serverAddr = "你的服务器IP地址" |
需要注意的是,当代理类型为 http
或 https
时,访问端口由服务端的 vhostHTTPPort
决定,而不是客户端的 remotePort
运行
在frp_0.63.0_windows_amd64
文件夹打开cmd,输入
1 | frpc -c frpc.toml |
然后公网访问
1 | http://你的服务器IP:8085 |
如果你配置了域名,就可以公网访问
1 | win.xxxxxx.com:8088 |
实例
这里我举个简单的例子,方便大家理解
无域名
我在本地部署了一个DVWA漏洞靶场,假如我想把它分享给其他人,应该怎么做
在服务端部署完毕后,回到本地电脑,phpstudy打开服务
由于我的DVWA部署在本地8084端口,因此先修改frpc.toml
1 | serverAddr = "你的服务器IP地址" |
然后保存退出,在当前文件夹cmd执行
1 | frpc -c frpc.toml |
接着访问你的服务器IP地址:8085
即可
有域名
同样是以DVWA漏洞靶场为例,先用phpstudy打开服务,然后修改frpc.toml
1 | serverAddr = "你的服务器IP地址" |
然后保存退出,在当前文件夹cmd执行
1 | frpc -c frpc.toml |
接着访问你的域名:8088
即可
常见问题与排错 (FAQ)
如果你发现连接不到服务端的端口,请检查防火墙是否放行相关端口,如果系统本身已放行端口但仍无法访问,可能是服务器提供商那边的防火墙未放行,这时需要到提供商那边(假如是阿里云)放行相关端口
工具推荐 | 内网穿透神器FRP部署教程