【笔记】frp学习笔记

前言

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。(Github

下载依赖

Linux

下载依赖

1
2
3
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz
tar -zxvf frp_0.61.0_linux_amd64.tar.gz
cd frp_0.61.0_linux_amd64

服务端

  • 有公网IP的服务器部署服务端

修改配置文件

bindPort:frp服务端监听端口
vhostHTTPPort:http穿透监听端口,如果穿透的服务不是http协议,则无需配置
vhostHTTPSPort:https穿透监听端口,如果穿透的服务不是https协议,则无需配置
webServer:frp服务端Web后台管理页面配置,如果不需要Web管理页面无需配置

webServer.addr:监听的ip地址
webServer.port:监听的端口号
webServer.user:访问者用户名
webServer.password:访问者密码

frps.toml
1
bindPort = 7000
frps.toml
1
2
3
4
5
6
7
8
9
bindPort = 7000

vhostHTTPPort = 8080
vhostHTTPSPort = 8081

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

启动服务端

1
./frps -c ./frps.toml

客户端

  • 没有公网IP的服务器部署客户端
  • 客户端连接服务端,将客户端局域网内的资源转发到服务端,使客户端局域网内的资源可以通过服务端的IP地址访问

修改配置文件

serverAddr:服务端域名或IP地址
7000:服务端的监听端口号

name:自定义配置名称
type:配置代理类型

httptcp

localIP:配置穿透的局域网内服务的IP地址
localPort:配置穿透的局域网内服务的端口号
customDomains:配置域名映射或IP地址

frpc.toml
1
2
3
4
5
6
7
8
9
serverAddr = "<ip>"
serverPort = 7000

[[proxies]]
name = "<name>"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
frpc.toml
1
2
3
4
5
6
7
8
9
serverAddr = "<ip>"
serverPort = 7000

[[proxies]]
name = "<name>"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["<ip>"]

启动客户端

1
./frpc -c ./frpc.toml

MacOS

  • 有公网IP的服务器部署服务端

服务端

下载依赖

1
brew install frps

修改配置文件

bindPort:frp服务端监听端口
vhostHTTPPort:http穿透监听端口,如果穿透的服务不是http协议,则无需配置
vhostHTTPSPort:https穿透监听端口,如果穿透的服务不是https协议,则无需配置
webServer:frp服务端Web后台管理页面配置,如果不需要Web管理页面无需配置

webServer.addr:监听的ip地址
webServer.port:监听的端口号
webServer.user:访问者用户名
webServer.password:访问者密码

/opt/homebrew/etc/frp/frps.toml
1
bindPort = 7000
/opt/homebrew/etc/frp/frps.toml
1
2
3
4
5
6
7
8
9
bindPort = 7000

vhostHTTPPort = 8080
vhostHTTPSPort = 8081

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

启动服务端

1
frps -c ./frps.toml

客户端

  • 没有公网IP的服务器部署客户端
  • 客户端连接服务端,将客户端局域网内的资源转发到服务端,使客户端局域网内的资源可以通过服务端的IP地址访问

下载依赖

1
brew install frpc

修改配置文件

serverAddr:服务端域名或IP地址
7000:服务端的监听端口号

name:自定义配置名称
type:配置代理类型

httptcp

localIP:配置穿透的局域网内服务的IP地址
localPort:配置穿透的局域网内服务的端口号
customDomains:配置域名映射或IP地址

/opt/homebrew/etc/frp/frpc.toml
1
2
3
4
5
6
7
8
9
serverAddr = "<ip>"
serverPort = 7000

[[proxies]]
name = "<name>"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
/opt/homebrew/etc/frp/frpc.toml
1
2
3
4
5
6
7
8
9
serverAddr = "<ip>"
serverPort = 7000

[[proxies]]
name = "<name>"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["<ip>"]

启动客户端

1
frpc -c ./frpc.toml

Windows

下载依赖

1
2
3
certutil -urlcache -split -f https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_windows_amd64.zip
"C:\Program Files\7-Zip\7z.exe" x frp_0.61.0_windows_amd64.zip
cd frp_0.61.0_windows_amd64

服务端

  • 有公网IP的服务器部署服务端

修改配置文件

bindPort:frp服务端监听端口
vhostHTTPPort:http穿透监听端口,如果穿透的服务不是http协议,则无需配置
vhostHTTPSPort:https穿透监听端口,如果穿透的服务不是https协议,则无需配置
webServer:frp服务端Web后台管理页面配置,如果不需要Web管理页面无需配置

webServer.addr:监听的ip地址
webServer.port:监听的端口号
webServer.user:访问者用户名
webServer.password:访问者密码

frps.toml
1
bindPort = 7000
frps.toml
1
2
3
4
5
6
7
8
9
bindPort = 7000

vhostHTTPPort = 8080
vhostHTTPSPort = 8081

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

启动服务端

1
.\frps.exe -c ./frps.toml

客户端

  • 没有公网IP的服务器部署客户端
  • 客户端连接服务端,将客户端局域网内的资源转发到服务端,使客户端局域网内的资源可以通过服务端的IP地址访问

修改配置文件

serverAddr:服务端域名或IP地址
7000:服务端的监听端口号

name:自定义配置名称
type:配置代理类型

httptcp

localIP:配置穿透的局域网内服务的IP地址
localPort:配置穿透的局域网内服务的端口号
customDomains:配置域名映射或IP地址

frpc.toml
1
2
3
4
5
6
7
8
9
serverAddr = "<ip>"
serverPort = 7000

[[proxies]]
name = "<name>"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
frpc.toml
1
2
3
4
5
6
7
8
9
serverAddr = "<ip>"
serverPort = 7000

[[proxies]]
name = "<name>"
type = "http"
localIP = "127.0.0.1"
localPort = 80
customDomains = ["<ip>"]

启动客户端

1
.\frpc.exe -c ./frpc.toml

访问Web后台管理页面(可选)

公网访问穿透的服务

  • 可以通过访问frp服务端的<ip>:8080的方式访问frp客户端的Web服务
  • 可以通过访问frp服务端的<ip>:<port>的方式访问frp客户端的其他服务

完成

参考文献

腾讯云开发者社区——网络安全自修室
CSDN——scottchenrui2017
fatedier/frp