【笔记】Frp学习笔记

前言

frp is a fast reverse proxy that allows you to expose a local server located behind a NAT or firewall to the Internet. It currently supports TCP and UDP, as well as HTTP and HTTPS protocols, enabling requests to be forwarded to internal services via domain name.(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