多平台方案:快速利用 FRP 實現 NAS 內網穿透


技術背景

frp 是什么?

frp 是一個可用於內網穿透的高性能的反向代理應用,支持 tcp, udp 協議,為 http 和 https 應用協議提供了額外的能力,且嘗試性支持了點對點穿透。關於 frp 的詳細介紹詳見 Github。從 frp 的架構體現了兩個端:服務端 frps 和 客戶端 frpc。本文主要講述在 Windows 下部署服務端、在 Docker 下部署客戶端的實現步驟。

為什么要內網穿透?

目前遇到了 2 個業務需求,需要內網穿透來解決:

  1. 公司局域網內服務器部署了 Web 站點,需要在公司外訪問;
  2. 雲服務器需要定時向內網服務器發送請求;

本文分別記錄了在 Linux 和 Windows 環境下部署 FRP 客戶端與服務端的步驟。

服務端(Server)部署環境

  • 服務端 1:公網 CentOS 7.4 (x64)
  • 服務端 2:公網 Windows Server 2008 (x64)

客戶端(Client)部署環境

  • 客戶端1:Linux 環境下的 Docker (x64)
  • 客戶端2:Windows 10 (x64)

1. 服務端配置操作

1.1. Linux 服務端

步驟一:前往下載軟件包(Release · fatedier / frp

  • 選擇 frp_x.xx.x_linux_amd64.tar.gz
    解壓后取出 frps 和 frps.ini 兩個文件,放到 frp 目錄下。

步驟二:修改frps.ini配置

不同系統下 frps.ini 內容相同,可參考的參數如下(注釋請刪掉):

[common]
bind_addr = 0.0.0.0
bind_port =  7000
dashboard_port = 7001 // 控制面板端口
dashboard_user = admin // 控制面板用戶名
dashboard_pwd = admin // 控制面板密碼

vhost_http_port = 8000
vhost_https_port = 4430

log_file = ./frps.log
log_level = error
log_max_days = 3
token = thisisarandomstring // 自定義15位以上的連接密鑰
max_pool_count = 50
tcp_mux = true

步驟三:運行frps

打開終端進入 frp 目錄下,先 chmod 后再運行:

cd frp
chmod 775 frps
chmod 775 frps.ini
nohup ./frps -c frps.ini &

命令說明:
nohup :在退出帳戶之后繼續運行相應的進程,不掛起( no hang up)。
& :在后台運行某個作業,使終端不被該作業占據。

1.2. Windows 服務端

步驟一:前往下載軟件包(Release · fatedier / frp)。

  • 選擇 frp_x.xx.x_windows_amd64.zip
    解壓后取出 frps.exe 和 frps.ini 兩個文件,放到 frp 目錄下。

步驟二:修改frps.ini配置

不同系統下 frps.ini 內容相同,可參考上面的配置,此處不贅述。

步驟三:啟動服務

使用管理員身份啟動 cmd 終端,進入 frp 目錄下運行:

cd frp
frps -c frps.ini

啟動任務管理器,出現了 frps.exe,說明 frps 已經在后台運行了。
注:終端運行后不能關掉。

1.3. 開放安全組

由於公網系統是雲主機,因此還要到安全組里開放相應的端口。

騰訊雲安全組:
image

阿里雲安全組:
image

至此,服務端的 frp 服務已經部署完成了。


2.客戶端配置操作

2.1. Docker 部署客戶端

步驟一:創建客戶端

這里建在 /home 中,可以通過 SSH 登錄並操作:

cd /home
sudo mkdir frp

步驟二:創建 2 個配置文件

首先進入到 /home/frp 中,使用 vi 創建 frpc-docker-compose.yml,寫入:

version: '3'
services:
  frpc:
    image: cloverzrg/frpc-docker
    volumes:
      - ./frpc.ini:/conf/frpc.ini
    container_name: frpc
    network_mode: host</code></pre>

再使用 vi 創建 frpc.ini,可參考的參數內容如下(注釋請刪掉):

[common]
server_addr = x.x.x.x // 服務端的公網IP地址
server_port = 9001
token = thisisarandomstring // 自定義的連接密鑰

[自定義名字]
type = tcp
local_ip = 127.0.0.1
local_port = 80 // 本地端口
remote_port = 9002 // 遠程端口
use_encryption = true
use_compression = true

步驟三:運行映像

docker-compose -f frpc-docker-compose.yml up -d

看到 frpc 映像運行中,說明客戶端啟動了,本地的 80 端口將映射到 http://x.x.x.x:9002

2.2. Windows 部署客戶端

步驟一:下載軟件包

前往 github 下載 frp 的最新軟件包(Release · fatedier / frp)。

  • 選擇 frp_x.xx.x_windows_amd64.zip
    解壓后取出 frpc.exe 和 frpc.ini 兩個文件,放到 frp 目錄下。

步驟二:修改frpc.ini配置

不同系統下 frpc.ini 內容相同,可參考上面的配置,此處不贅述。

步驟三:啟動服務

使用管理員身份啟動 cmd 終端,進入 frp 目錄下運行:

cd frp
frpc -c frpc.ini

啟動任務管理器,出現了 frpc.exe,說明 frpc 客戶端已經在后台運行了。
注:終端運行后不能關掉。

參考資料

  1. 如何在Docker如何部署frp內網穿透. https://www.yisu.com/zixun/321709.html
  2. windows下基於frp的內網穿透部署. https://zhuanlan.zhihu.com/p/55306067


免責聲明!

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



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