frp 内网穿透
前言
- 内网穿透技术,顾名思义就是能让外网的设备找到处于内网的设备,从而实现数据通信。
- frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 frp是一款非常热门的 开源 内网穿透工具 主要特点有配置简单、性能高、跨平台 因此受到很多人的青睐。
开源仓库:https://github.com/fatedier/frp
frp分为两个部分 服务端、客户端。frp需要有一台公网服务器运行服务端。
部署例子说明
以下以服务端使用云服务器ubuntu,客户端使用window系统,进行举例
其中云服务器部署了宝塔面板,使用docker进行部署frp服务端,如下:

其中
web端口(7500):指frp的服务端页面,会显示各个已连接的服务端口一些状态。通过用户和密码访问
服务端口(7000):指frp服务端的服务端口,frp客户端需要通过这个端口来进行连接到服务器
HTTP监听端口(40800):指客户端在使用http服务的时候,比如访问客户端的部署的某个网页,客户端需要设定在配置里面设定本机的端口,以及远程域名,这样远程域名+HTTP监听端口,比如(xxx.kin.top:40800)就可以访问到客户端的某个端口下的网页服务,如果设置的是80端口,还不需要端口,直接访问xxx.kin.top即可
HTTP监听端口(40443):与上述HTTP监听端口同理
客户端设置:
以下是客户端的toml文件配置(注意,以前版本的ini文件配置,这两种配置的一些设置是不一样的)
serverAddr = "000.000.000.000" # 需要填入云服务器的ip,注意带引号
serverPort = 7000
auth.method = "token"
auth.token = "60d8a83c544e6168db" # 需要填入云服务器frp的token,可以在frps.toml中找到
# http服务(比如通过python -m http.server开启文件服务)
[[proxies]]
name = "test-http1" # 名字随意,不重复即可
type = "http" # 代表协议类型,不同的协议,其允许的参数不一样
localIP = "127.0.0.1" # 本机的ip,也可以是内网、docker网络中的ip
localPort = 8000
customDomains = ["xxxx.kin.top"] # 可以设定多个访问的域名,注意域名需要解析到对应的服务器ip
# tcp服务,比如22端口的ssh连接,就是tcp服务。remotePort是远程的端口,需要云服务器开启对应的端口
[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
客户端运行服务:
cmd 切换到对应的frp客户端目录下,运行frpc.exe -c frpc.toml
配置查询
服务端配置设置请查询:服务端配置 | frp
客户端配置设置请查询:客户端配置 | frp