介绍
frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。frp 项目官网是 https://github.com/fatedier/frp
frp工作原理
服务端运行,监听一个主端口,等待客户端的连接; 客户端连接到服务端的主端口,同时告诉服务端要监听的端口和转发类型; 服务端fork新的进程监听客户端指定的端口; 外网用户连接到客户端指定的端口,服务端通过和客户端的连接将数据转发到客户端; 客户端进程再将数据转发到本地服务,从而实现内网对外暴露服务的能力。
服务端安装及启动
本frps安装是基于docker安装,这里以fprs:0.38.0为例
1、获取镜像
docker pull snowdreamtech/frps:0.38.0
2、配置frps.ini
需要手动创建需要挂载的目录,并创建frps.ini文件touch frps.ini,以下是内容。
创建结束后手动开启所在服务器端口,7000:为连接端口,7400:为frps管理界面,10010:这里是我自己本机需要映射的端口,你们根据实际情况配置。
[common] # 服务端和客户端通信的连接端口 bind_port = 7000 # 连接验证的密码,这里放的是token,客户端连接这个的时候需要填写一致,可以看做是服务器密码 token = 123456 # 控制面板的端口 用户名 密码配置 dashboard_port = 7400 dashboard_user = admin dashboard_pwd = admin
3、启动镜像
-v 选择已经创建好的frps.ini所在位置。
--network host这里必须使用主机模式
docker run --network host -d -v /home/zhaopeng/frps/frps.ini:/etc/frp/frps.ini --name doc-frps snowdreamtech/frps:0.38.0
好了,到这里就完成了frp服务端的安装及启动过程,通过访问IP:7400 访问web管理界面
客户端安装及启动
1、frpc客户端
这里以Mac 为例,其他平台也一样,
首先通过frp官网 下载frp程序,我这里是frp_0.38.0_darwin_arm64.tar.gz,不同系统下载对应的frp
2、安装及配置
把下载好的压缩包,进行解压,目录位置随便
3、配置frpc.ini
以下是客服端配置文件
[common] server_addr = 公网IP server_port = 7000 #服务端端口 token = 123456 #连接密码,与服务器保持同步就行 [ssh] type = tcp #可以不设置 local_ip = 127.0.0.1 #本机IP local_port = 10010 #本机端口 remote_port = 10010 #需要映射的端口,需要服务器开放此端口
4、启动客户端
在文件目录下输入以下命令,启动
./frpc -c ./frpc.ini peng@bogon frp_0.38.0_darwin_arm64 % ./frpc -c ./frpc.ini 2022/04/25 14:50:53 [I] [service.go:301] [95afcf9fdad49af1] login to server success, get run id [95afcf9fdad49af1], server udp port [0] 2022/04/25 14:50:53 [I] [proxy_manager.go:144] [95afcf9fdad49af1] proxy added: [ssh] 2022/04/25 14:50:53 [I] [control.go:180] [95afcf9fdad49af1] [ssh] start proxy success
大功告成,到这里客户端frpc也启动成功了,http://公网IP:映射端口/就可以访问到本地项目了。