前言 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
服务端
修改配置文件
bindPort:frp服务端监听端口vhostHTTPPort:http穿透监听端口,如果穿透的服务不是http协议,则无需配置vhostHTTPSPort:https穿透监听端口,如果穿透的服务不是https协议,则无需配置webServer:frp服务端Web后台管理页面配置,如果不需要Web管理页面无需配置
webServer.addr:监听的ip地址webServer.port:监听的端口号webServer.user:访问者用户名webServer.password:访问者密码
frps.toml
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"
启动服务端
客户端
没有公网IP的服务器部署客户端
客户端连接服务端,将客户端局域网内的资源转发到服务端,使客户端局域网内的资源可以通过服务端的IP地址访问
修改配置文件
serverAddr:服务端域名或IP地址7000:服务端的监听端口号
name:自定义配置名称type:配置代理类型
http、tcp
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>" ]
启动客户端
MacOS
服务端 下载依赖
修改配置文件
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
/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"
启动服务端
客户端
没有公网IP的服务器部署客户端
客户端连接服务端,将客户端局域网内的资源转发到服务端,使客户端局域网内的资源可以通过服务端的IP地址访问
下载依赖
修改配置文件
serverAddr:服务端域名或IP地址7000:服务端的监听端口号
name:自定义配置名称type:配置代理类型
http、tcp
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>" ]
启动客户端
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\7 z.exe" x frp_0.61 .0 _windows_amd64.zip cd frp_0.61 .0 _windows_amd64
服务端
修改配置文件
bindPort:frp服务端监听端口vhostHTTPPort:http穿透监听端口,如果穿透的服务不是http协议,则无需配置vhostHTTPSPort:https穿透监听端口,如果穿透的服务不是https协议,则无需配置webServer:frp服务端Web后台管理页面配置,如果不需要Web管理页面无需配置
webServer.addr:监听的ip地址webServer.port:监听的端口号webServer.user:访问者用户名webServer.password:访问者密码
frps.toml
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:配置代理类型
http、tcp
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