1. 程式人生 > 其它 >使用frp工具實現內網的穿透以及配置多個ssh和web服務

使用frp工具實現內網的穿透以及配置多個ssh和web服務

frp簡介

FRP 專案地址https://github.com/fatedier/frp/blob/master/README_zh.md

frp 是一個可用於內網穿透的高效能的反向代理應用,支援 tcp, udp 協議,為 http 和 https 應用協議提供了額外的能力,且嘗試性支援了點對點穿透。

環境準備

ssh連線

1. 需要一臺可以直接訪問外網的伺服器,比如阿里雲伺服器(服務端)

2. 需要做內網穿透的伺服器,比如公司內部的區域網測試伺服器(客戶端)

web訪問

3. 需要額外的已經備案的域名

下載地址

https://github.com/fatedier/frp/releases

選擇最新的就行,一般都是linux環境

安裝步驟

  客戶端跟服務端都需要的安裝操作

cd /usr/local/

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

tar -zxvf frp_0.27.0_linux_amd64.tar.gz

mv frp_0.27.0_linux_amd64 frp

  下載完畢frp的目錄檔案

  • frpc:客戶端可執行程式
  • frpc_full.ini:客戶端所有配置項(可以再此檔案檢視frp的所有的配置項)
  • frpc.ini:客戶端配置項
  • frps:服務端可執行程式
  • frps_full.ini:服務端所有配置項(可以再此檔案檢視frp的所有的配置項)
  • frps.ini:服務端配置項
  • LICENSE:許可證
  • 服務端只需要編輯frps.ini檔案
  • 客戶端只需要編輯frpc.ini檔案

服務端配置

  檢視frps.ini檔案,修改為如下內容

[common]
bind_port = 7000 # 客戶端跟服務端繫結的埠號

  預設的配置資訊中只有一個繫結埠為7000,意思是我們在外網伺服器中繫結7000埠和客戶端進行通訊。注:埠可以自定義,但是需要客戶端和服務端進行統一。阿里雲伺服器需要在esc管理中配置安全組規則中暴露7000埠

  啟動服務端

./frps -c frps.ini

  如下表示啟動成功

  啟動成功之後,關閉xshell或者是退出回話,都會使連線斷開,可以使用nohup來進行後臺啟動(後面啟動都可以使用這種方式)

  如下是後臺啟動並將日誌輸入到file.log檔案中

nohup ./frps -c ./frps.ini > file.log 2>&1 &

客戶端配置

  檢視frpc.ini檔案,修改為如下內容

[common]
server_addr = 39.105.97.50 # 你的公網ip
server_port = 7000 # 繫結的埠,自定義,跟服務端一直即可

[ssh]
type = tcp
local_ip = 127.0.0.1 # 繫結的ip,填寫127.0.0.1表示本機即可
local_port = 22
remote_port = 6008 # ssh預設是22,現在轉發為6008埠
  • [common]表示以下配置資訊是一些公用配置資訊
  • server_addr是我們服務端即外網伺服器的公網訪問ip
  • server_port是我們前面在服務端配置的frps.ini中bind_port中對應的埠。需保持兩邊一致
  • [ssh]表示以下配置資訊是我們使用ssh連線內網伺服器時需要的一些配置資訊
  • type是連線型別,ssh方式連線就用tcp
  • local_ip是本機ip,直接使用127.0.0.1即可
  • local_port是本地ssh埠,ssh預設埠為22
  • remote_port是外網伺服器請求過來的埠 注:阿里雲伺服器需要在esc管理中配置安全組規則中新增6008埠

  啟動客戶端

./frpc -c ./frpc.ini

  OK,之後可以通過xshell來連線,只需要指定埠號為remote_port(6008)即可,如下

多個ssh配置

  單個ssh配置成功,項配置多個,一樣的操作,在另一臺機器進行下載frp,之後只需要修改frpc.ini檔案,修改格式如下

[common]
server_addr = 39.105.97.50
server_port = 7000

[ssh001] # 不能重複
type = tcp
local_ip = 127.0.0.1 local_port = 22 remote_port = 6009 # 不能重複

  需要將remote_port進行修改,[ssh]名稱不能重複

  frpc命令啟動即可。

外網伺服器HTTP配置

  配置了http之後,就可以訪問內網的web服務了,比如雲盤前提是需要有已經備案的域名,這樣才能配置。

配置方式

  服務端:修改frps.ini,內容如下

[common]
bind_port = 7000
vhost_http_port = 6001 # 訪問6001埠,對映到內網web服務

  bind_port和之前做ssh時是一個意思。也是為了和客戶端建立通訊的埠,只需要在之前的配置檔案中新增上vhost_http_port = 6001,這個配置意思是讓別人在訪問我們的伺服器6001埠時。frp將http請求轉發到內網伺服器

  客戶端:修改frpc.ini,修改內容如下

[common]
server_addr = 39.105.97.50
server_port = 7000

[ssh]
type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6008 [web] type = http local_port = 8080 # 訪問本地8080web服務 custom_domains = www.chendahai.cn # 必須已經備案
  • [web]表示我們的配置是一個web服務
  • type表示我們的請求方式是http方式
  • local_port表示我們的本地服務埠號為80
  • custom_domains表示配置為一個已經備案的域名(必填,並且需要域名可用) 並且域名解析配置為外網伺服器ip

  OK,使用frpc命令重啟即可,通過www.chendahai.cn:6001,即可訪問內網的8080服務了。

多個web服務配置

  如果想配置多個web服務怎麼辦,跟ssh類似,新增多個[web]即可,注意不能重名

  服務端不需要做任何修改,修改ftpc.ini內容如下

[common]
server_addr = 39.105.97.50
server_port = 7000

[ssh]
type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6008 [web01] type = http local_port = 8080 custom_domains = www.chendahai.cn [web02] type = http local_port = 80 custom_domains = cd.chendahai.cn # 使用二級域名進行配置

  之後訪問內網的80埠web服務可以通過cd.chendahai.cn:6001就可以訪問了,二級域名是需要配置域名解析的。

  如下是配置了2個ssh和3個web服務,服務端日誌如下

結束

  OK,內網穿透基本配置完畢

  frp的使用和配置相當簡單,如有疑問或者想了解關於frp的其它功能可以檢視官方中文文件

補充

  倘若想配置連線資料庫mysql

  可以這麼操作,修改frpc.ini,新增如下配置

[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 3366

  重啟,連線即可

切記,如果需要,記得新增安全組規則