frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
FRP
网上的教程博客都是把文档贴一份,很少从实战的几种方式记录。
frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。我们今天仅讨论TCP和UDP相关的内容。一些简单易操作的工具如:teamviwer、蒲公英、花生壳……要么限制并发要么收费且在功能上不够丰富。
搭建frp服务器进行内网穿透,可以达到不错的速度,且理论上可以开放任何想要的端口,可以实现的功能远不止远程桌面或者文件共享。
环境搭建
###0x01 准备物理环境
- 内网环境windows主机(或内网环境Linux服务器),部署web服务
主要是测试windows下的服务
,双linux机器的差别不大
- 公网阿里云Ubuntu16x86_64服务器
###0x02 解析域名
将自己的域名添加解析记录,解析到公网服务器的ip上
###0x03 搭建linux版服务端
1.查看服务器版本1
arch
2.到rfp项目中的releases
下载对应的版本。
在公网服务器下载linux
版本arm64
1
wget https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_arm64.tar.gz
3.然后解压gz格式
1 | tar -zxvf frp_0.27.0_linux_arm64.tar.gz |
4.复制到新的文件名下
1 | cp -r frp_0.27.0_linux_arm64 frp |
5.查看文件
1 | ls -a |
frps为服务端启动文件
frpc为客户端启动文件
此时公网服务器作为服务端,只需要用到frps程序,与基础配置的frps.ini
,frps_full.ini
是高级配置,在测试中未使用。
6.编辑frps.ini文件1
vim frps.ini
1 | [common] |
保存退出
7.运行frps服务1
2
3.frps -c frps.ini
#或nohup、supervisor后台运行
nohup .frps -c frps.ini &
服务器启动成功1
2
3
4
5# ./frps -c ./frps.ini
[I] [service.go:139] frps tcp listen on 0.0.0.0:8007
[I] [service.go:181] http service listen on 0.0.0.0:8006
[I] [service.go:232] Dashboard listen on 0.0.0.0:8005
[I] [root.go:204] Start frps success
8.访问ip+端口8005即可看到仪表盘
###0x04 搭建windows版客户端
1.搭建web服务
在windows选用flask创建一个简单的本地服务端口50001
2
3
4
5
6
7
8
9
10from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'helloword\n'*20000
if __name__ == '__main__':
app.run(port=5000)
2.测试本地web服务
浏览器访问http://1270.0.1:5000
浏览器返回helloword1
2helloword helloword
helloword helloword
3.下载frp的windows amd64版本
1 | https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_windows_amd64.zip |
4.解压更改frpc.ini配置
在客户端中主要用到frpc与frpc.ini基础配置1
2
3
4
5
6
7
8[common]
server_addr = 47.100.xxx.xxx # 公网ip地址
server_port = 8007 # frpc服务绑定的端口
[web]
type = http
local_port = 5000 # 本地的web服务端口
custom_domains = www.changlxxx.com # 解析的域名
5.运行frpc客户端
1 | frpc.exe -c frpc.ini |
6.运行成功结果
1 | 2019/06/26 10:18:25 [I] [service.go:221] login to server success, get run id [3c2aad0a15d8bcdf], server udp port [0] |
###0x05 验证效果
访问域名+web端口
服务
在windows上做成服务,开机运行
编写一个bat脚本
1 | 编辑一个内容如下的文件,frp.bat |
1 | * start "C:\Windows\System32\cmd.exe" 表示打开一个cmd命令行 |
验证bat脚本能使用后
将其添加到服务1
2sc create frp binPath= C:\Users\Administrator\Desktop\fr
p.bat start= auto
另一个脚本
rpc运行时始终有一个命令行窗口运行在前台,影响美观,我们可以使用一个批处理文件来将其运行在后台,而且可以双击执行,每次打开frpc不用再自己输命令了。
在任何一个目录下新建一个文本文件并将其重命名为“frpc.bat”,编辑,粘贴如下内容并保存。
1 |
|
linux一键安装脚本