使用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

  重啟,連接即可

切記,如果需要,記得添加安全組規則

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM