highlight: a11y-dark
简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
工具
frp ---- linux + windows 版本均为0.45.0
具有公网ip的服务器【下称服务端】 ---- 操作系统Linux
内网计算机【下称客户端】 ---- 操作系统windows
流程
下载
在GitHub下载frp
linux可以通过wget
命令下载【受国际线路影响可能会报错】
安装
frpc:客户端
frps:服务端
服务端
使用
tar -xvf xx.tar.gz
命令解压
仅保留文件名为frps的相关文件即可,如图所示:
客户端
使用解压工具进行解压
仅保留文件名为frpc相关文件即可,如图所示:
配置
服务端、客户端均需启用ssh服务,windows需要开启openssh服务器、openssh客户端,并启动相应服务
服务端
打开frps.ini文件,配置服务端相关信息,并在服务器的防火墙中开启相应端口发放权限【以此文为例,分别需要开启7000端口与6000端口】
[common]
# frps监听端口[必填]
bind_port = 7000
客户端
打开frpc.ini文件,配置客户端相关信息
[common]
#服务端公网ip
server_addr = 123.249.70.228
#服务端端口
server_port = 7000
[ssh]
type = tcp
#转发的ip&端口
local_ip = 127.0.0.1
local_port = 22
#客户端暴露端口
remote_port = 6000
运行frp
linux服务端: ./frps -c ./frps.ini
windows客户端: 在cmd中运行frpc.exe
验证是否实现内网穿透
使用非同一局域网电脑输入命令ssh UsernameClient@ip -p port
,回车后正确填写密码
若登陆成功,即证明配置无误
其中,UsernameClient为客户端的用户名,ip为公网服务器ip,端口为frpc.ini文件中remote_port
的值,密码是客户端密码
注意:如果客户端使用windows且是微软账户登录,则用户名为微软账号的邮箱,密码为微软登录密码
原理解析
frp实现内网穿透原理类似于代理服务器
首先用户通过公网ip访问服务器,服务器通过端口映射到内网计算机,实现内网穿透