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ā)。