frp 是一個高性能的反向代理應用,可以幫助您輕松地進行內(nèi)網(wǎng)穿透,對外網(wǎng)提供服務,支持 tcp, http, https 等協(xié)議類型,并且 web 服務支持根據(jù)域名進行路由轉發(fā)。
frp 的作用
利用處于內(nèi)網(wǎng)或防火墻后的機器,對外網(wǎng)環(huán)境提供 http 或 https 服務。
對于 http 服務支持基于域名的虛擬主機,支持自定義域名綁定,使多個域名可以共用一個80端口。
利用處于內(nèi)網(wǎng)或防火墻后的機器,對外網(wǎng)環(huán)境提供 tcp 服務,例如在家里通過 ssh 訪問處于公司內(nèi)網(wǎng)環(huán)境內(nèi)的主機。
可查看通過代理的所有 http 請求和響應的詳細信息。(待開發(fā))
開發(fā)狀態(tài)
frp 目前正在前期開發(fā)階段,master 分支用于發(fā)布穩(wěn)定版本,dev 分支用于開發(fā),您可以嘗試下載最新的 release 版本進行測試。
目前的交互協(xié)議可能隨時改變,不能保證向后兼容,升級新版本時需要注意公告說明。
架構

使用示例
根據(jù)對應的操作系統(tǒng)及架構,從Release頁面下載最新版本的程序。
? ? 將?frps?及?frps.ini?放到有公網(wǎng) IP 的機器上。
? ? 將?frpc?及?frpc.ini?放到處于內(nèi)網(wǎng)環(huán)境的機器上。
通過 ssh 訪問公司內(nèi)網(wǎng)機器
修改 frps.ini 文件,配置一個名為 ssh 的反向代理:
# frps.ini[common]bind_port=7000[ssh]listen_port=6000auth_token=123
啟動 frps:
./frps -c./frps.ini
修改 frpc.ini 文件,設置 frps 所在服務器的 IP 為 x.x.x.x:
# frpc.ini[common]server_addr= x.x.x.xserver_port=7000auth_token=123[ssh]local_port=22
啟動 frpc:
./frpc -c./frpc.ini
通過 ssh 訪問內(nèi)網(wǎng)機器,假設用戶名為 test:
ssh-oPort=6000test@x.x.x.x
通過指定域名訪問部署于內(nèi)網(wǎng)的 web 服務
有時想要讓其他人通過域名訪問或者測試我們在本地搭建的 web 服務,但是由于本地機器沒有公網(wǎng) IP,無法將域名解析到本地的機器,通過 frp 就可以實現(xiàn)這一功能,以下示例為 http 服務,https 服務配置方法相同, vhost_http_port 替換為 vhost_https_port, type 設置為 https 即可。
修改 frps.ini 文件,配置一個名為 web 的 http 反向代理,設置 http 訪問端口為 8080,綁定自定義域名 www.yourdomain.com:
# frps.ini[common] bind_port = 7000vhost_http_port = 8080[web]type = httpcustom_domains = www.yourdomain.comauth_token = 123
啟動 frps;
./frps -c./frps.ini
修改 frpc.ini 文件,設置 frps 所在的服務器的 IP 為 x.x.x.x,local_port 為本地機器上 web 服務對應的端口:
# frpc.ini[common]server_addr= x.x.x.xserver_port=7000auth_token=123[web]type= httplocal_port=80
?啟動 frpc:
./frpc -c./frpc.ini
將www.yourdomain.com的域名 A 記錄解析到 x.x.x.x,如果服務器已經(jīng)有對應的域名,也可以將 CNAME 記錄解析到服務器原先的域名。
通過瀏覽器訪問?http://www.yourdomain.com:8080?即可訪問到處于內(nèi)網(wǎng)機器上的 web 服務。
開發(fā)計劃
計劃在后續(xù)版本中加入的功能與優(yōu)化,排名不分先后,如果有其他功能建議歡迎在issues中反饋。
Dashboard 界面。
流量,連接數(shù)等代理信息統(tǒng)計與展示。
udp 協(xié)議支持。
針對短連接的連接池優(yōu)化。
特權模式支持端口白名單。
支持泛域名。
支持 url 路由轉發(fā)。
frpc 支持負載均衡到后端不同服務。
frpc debug 模式,控制臺顯示代理狀態(tài),類似 ngrok 啟動后的界面。
frpc http 請求及響應信息展示。
支持 udp 打洞的方式,提供兩邊內(nèi)網(wǎng)機器直接通信,流量不經(jīng)過服務器轉發(fā)。