frp中文文档:https://github.com/fatedier/frp/blob/master/README_zh.md
frp的作用
通俗点来讲就是有个内网环境的主机,外网没办法访问,利用可以访问内网环境的公网机器来进行间接访问
场景(具体看文档):
- 想在家直接通过ssh访问处于公司内网环境内的主机
- 通过自定义域名访问部署于内网的 web 服务
- 转发 DNS 查询请求
本文的场景是想让同事直接使用ssh访问我的虚拟机
安装frp
-
下载地址:https://github.com/fatedier/frp/releases
由于我的内网机器是linux,外网机器是windows,所以选择这两个(386就是32位的)
在windows任意目录下解压frp_0.33.0_windows_amd64.zip
-
进入到目录中,frpc是客户端的,安装在内网服务器,frps是服务端的,安装在外网服务器(所以frpc的文件在服务端中可以删掉)
-
服务端配置(公网服务器)
打开frps.ini文件,这里使用了最简化的配置,设置了frp服务器端接收客户端流量的端口(其实就是与客户端通讯的端口,默认7000,我这里改成6767)
- 客户端配置(内网服务器)
#上传
rz
#解压
tar -zxvf frp_0.33.0_linux_amd64.tar.gz
#重命名
mv frp_0.33.0_linux_amd64 frp
之后进入到frp文件目录,同理可以删除frps开头的文件,保留frpc的。
打开frpc.ini进行编辑
- server_addr:服务器端ip
- server_port:服务器用来与客户端通讯的端口(这里配置要跟服务器端的bind_port保持一致)
- local_port:客户端监听,也就是内网暴露到外网的端口
- remote_port:服务器端暴露,也就是外网暴露的端口
最后的效果是,同事使用ssh连接xxx.xxx.xxx.93 6768(外网ip端口)来登录xxx.xxx.xxx.129 22(外网ip端口)
启动服务
- 启动服务端(frps)
进入到frp_0.33.0_windows_amd64目录中,执行
.\frps.exe -c .\frps.ini
- 启动客户端(frpc)
进入到frp目录中,执行
./frpc -c ./frpc.ini