linux、centos7 安裝 frp 搭建高性能內(nèi)網(wǎng)穿透服務(wù)

原文鏈接:https://www.aiprose.com/blog/17
本篇文章全程使用的案例域名是aiprose.com

frp 是一個(gè)可用于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用,支持 tcp, udp, http, https 協(xié)議。

frp 的作用

  • 利用處于內(nèi)網(wǎng)或防火墻后的機(jī)器,對(duì)外網(wǎng)環(huán)境提供 http 或 https 服務(wù)。
  • 對(duì)于 http, https 服務(wù)支持基于域名的虛擬主機(jī),支持自定義域名綁定,使多個(gè)域名可以共用一個(gè)80端口。
  • 利用處于內(nèi)網(wǎng)或防火墻后的機(jī)器,對(duì)外網(wǎng)環(huán)境提供 tcp 和 udp 服務(wù),例如在家里通過(guò) ssh 訪問(wèn)處于公司內(nèi)網(wǎng)環(huán)境內(nèi)的主機(jī)。

開(kāi)發(fā)狀態(tài)

frp 仍然處于前期開(kāi)發(fā)階段,未經(jīng)充分測(cè)試與驗(yàn)證,不推薦用于生產(chǎn)環(huán)境。

master 分支用于發(fā)布穩(wěn)定版本,dev 分支用于開(kāi)發(fā),您可以嘗試下載最新的 release 版本進(jìn)行測(cè)試。

目前的交互協(xié)議可能隨時(shí)改變,不保證向后兼容,升級(jí)新版本時(shí)需要注意公告說(shuō)明同時(shí)升級(jí)服務(wù)端和客戶端。

架構(gòu)

image

使用示例

根據(jù)對(duì)應(yīng)的操作系統(tǒng)及架構(gòu),從 Release 頁(yè)面下載最新版本的程序。

frpsfrps.ini 放到具有公網(wǎng) IP 的機(jī)器上。

frpcfrpc.ini 放到處于內(nèi)網(wǎng)環(huán)境的機(jī)器上。

centos64位下載amd64,我寫(xiě)文章的時(shí)候,最新版本是0.22

wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz

通過(guò) ssh 訪問(wèn)公網(wǎng)機(jī)器

  1. 修改 frps.ini 文件,這里使用了最簡(jiǎn)化的配置:
# frps.ini
[common]
bind_port = 7000
注意:7000端口要開(kāi)放
  1. 啟動(dòng) frps:

nohup ./frps -c ./frps.ini &

通過(guò) ssh 訪問(wèn)內(nèi)網(wǎng)機(jī)器

1.修改 frpc.ini 文件,假設(shè) frps 所在服務(wù)器的公網(wǎng) IP 為 x.x.x.x;

這里是指將內(nèi)網(wǎng)的22端口映射到公網(wǎng)的6000端口上

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
注意:公網(wǎng)服務(wù)器6000、7000端口要開(kāi)放  

2.啟動(dòng) frpc:

nohup ./frpc -c ./frpc.ini &

3.上面是吧公網(wǎng)服務(wù)器的6000端口映射到內(nèi)網(wǎng)服務(wù)器的22端口,這樣就可以隨時(shí)使用ssh連接內(nèi)網(wǎng)服務(wù)器了。

image

通過(guò)自定義域名訪問(wèn)部署于內(nèi)網(wǎng)的 web 服務(wù)

有時(shí)想要讓其他人通過(guò)域名訪問(wèn)或者測(cè)試我們?cè)诒镜卮罱ǖ?web 服務(wù),但是由于本地機(jī)器沒(méi)有公網(wǎng) IP,無(wú)法將域名解析到本地的機(jī)器,通過(guò) frp 就可以實(shí)現(xiàn)這一功能,以下示例為 http 服務(wù),https 服務(wù)配置方法相同, vhost_http_port 替換為 vhost_https_port, type 設(shè)置為 https 即可。

  1. 修改 frps.ini 文件,設(shè)置 http 訪問(wèn)端口為 86,因?yàn)槲业?0端口用了nginx對(duì)外提供博客服務(wù),所以就使用86端口:
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 86
  1. 啟動(dòng) frps;

    注意:如果之前啟動(dòng)過(guò),一定要關(guān)閉frps進(jìn)程

nohup ./frps -c ./frps.ini &

  1. 修改 frpc.ini 文件,假設(shè) frps 所在的服務(wù)器的 IP 為 x.x.x.x,local_port 為本地機(jī)器上 web 服務(wù)對(duì)應(yīng)的端口, 綁定自定義域名 frp.aiprose.com:

    這里相當(dāng)于把內(nèi)網(wǎng)服務(wù)器的80端口綁定到外網(wǎng)服務(wù)器的86端口上 ,這里我使用了二級(jí)域名,其實(shí)也沒(méi)有必要配置,只是為了區(qū)分,后面會(huì)有二級(jí)泛域名的配置

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 80
custom_domains = frp.aiprose.com
  1. 啟動(dòng) frpc:

    注意:如果之前啟動(dòng)過(guò),一定要關(guān)閉frpc進(jìn)程

nohup ./frpc -c ./frpc.ini &

  1. frp.aiprose.com 的域名 A 記錄解析到 IP x.x.x.x,如果服務(wù)器已經(jīng)有對(duì)應(yīng)的域名,也可以將 CNAME 記錄解析到服務(wù)器原先的域名。
image
  1. 通過(guò)瀏覽器訪問(wèn) http://frp.aiprose.com:86 即可訪問(wèn)到處于內(nèi)網(wǎng)機(jī)器上的 web 服務(wù)。
image

自定義二級(jí)域名

在多人同時(shí)使用一個(gè) frps 時(shí),通過(guò)自定義二級(jí)域名的方式來(lái)使用會(huì)更加方便。

通過(guò)在 frps 的配置文件中配置 subdomain_host,就可以啟用該特性。之后在 frpc 的 http、https 類型的代理中可以不配置 custom_domains,而是配置一個(gè) subdomain 參數(shù)。

只需要將 *.{subdomain_host} 解析到 frps 所在服務(wù)器。之后用戶可以通過(guò) subdomain 自行指定自己的 web 服務(wù)所需要使用的二級(jí)域名,通過(guò) {subdomain}.{subdomain_host} 來(lái)訪問(wèn)自己的 web 服務(wù)。

# frps.ini
[common]
bind_port = 7000
vhost_http_port = 86
subdomain_host = aiprose.com

將泛域名 *.aiprose.com 解析到 frps 所在服務(wù)器的 IP 地址。

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
subdomain = frp

frps 和 frpc 都啟動(dòng)成功后,通過(guò) http://frp.aiprose.com:86 就可以訪問(wèn)到內(nèi)網(wǎng)的 web 服務(wù)。如果你的vhost_http_port是80,就訪問(wèn)http://frp.aiprose.com

需要注意的是如果 frps 配置了 subdomain_host,則 custom_domains 中不能是屬于 subdomain_host 的子域名或者泛域名。

同一個(gè) http 或 https 類型的代理中 custom_domainssubdomain 可以同時(shí)配置。

這里只用到了一些常用的,frp還有好多功能,具體請(qǐng)參看文檔 點(diǎn)擊查看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容