banner
B1ueD0g

BlueDog's Home

上班使我怨气比鬼重!
x
telegram
email

frp內網穿透配置教程

什麼是 frp

frp 全名 Fast Reverse Proxy,是用於提供內網穿透服務的工具,主要用於解決一些內網服務沒有公網 ip 但是卻需要提供外網訪問的問題。使用 frp 你可以將內網中的 TCP、UDP、HTTP、HTTPS 等協議類型的服務發布到公網,並且支持 Web 服務根據域名進行路由轉發。

為什麼要內網穿透

針對不同業務需求,總結為以下幾點:

  1. Web 項目對於電腦(伺服器)的性能(內存、CPU、硬盤和圖形運算等)要求比較高,需要部署在局域網性能較高的電腦上,且需求進行外網訪問。
  2. 搭建內網穿透小工具,服務於有項目部署需求但沒有伺服器(或公網 IP)的人群。
  3. 遠程桌面連接,當然這個需求可以使用很多遠程桌面軟體代替,但是如果要使用 Windows 遠程桌面連接公司電腦的話就需要內網穿透。

準備工作

在使用 frp 之前,需要一台有公網 IP 的伺服器(下文稱外網主機),一台需要實現內網穿透的機器(就是自己的電腦),SSH 工具,以及一個域名(如果只是建立 SSH 反向代理則不需要域名)。

伺服器是用來部署 frp 服務端,個人電腦用來實現內網穿透,SSH 工具是用來連伺服器,如果是 Windows Server 伺服器則使用 Windows 系統自帶的遠程桌面就可以。

image-20230719151928313

如上圖的 frp 架構圖所示:

  1. (必須)想要使用 frp 服務,將內網中的服務發布到公網。你需要先擁有一台擁有公網 ip 的網絡設置搭建 frp 服務端,再在內網需要穿透的設置中搭建 frp 客戶端服務才能進行穿透。
  2. (非必需)你需要擁有一個域名解析到公網的 ip 地址,才能夠實現 web 服務的通過域名進行路由轉發的功能。

Frp 服務的搭建#

搭建 frp 很簡單,關鍵的步驟只有三步:

  1. 獲取 frp 文件
  2. 設置 frp 配置文件
  3. 啟動 frp 服務
    注意:frp 搭建的這三步是分為客戶端和服務端的,但是操作基本是一致的。本教程 frp 服務的搭建主要介紹 frp 搭建的主要三步,以及 frp 服務端和客戶端配置文件內容的解釋說明,以及如何將 frp 在 linux 系統中創建 systemd 服務,進行服務管理。

第一步:獲取 frp 文件#

frp 支持 linux 平台和 windows 平台。參照你的設置的運行平台下載 linux 版本的文件或者是 windows 的。
下載地址:https://github.com/fatedier/frp/releases
一般 linux 平台下載的版本為:frp_版本號_linux_amd64.tar.gz
windows 平台下載的版本為:frp_版本號_windows_amd64.zip
linux 版本文件的解壓命令為tar zxvf 文件名,windows 版本文件直接右鍵解壓即可。
文件解壓後,一般都含有 frps (frp 服務端運行文件)、frpc (frp 客戶端運行文件)、frps.ini (frp 服務端配置文件)、frpc.ini (frp 客戶端配置文件),以及 frp_full.ini (frp 全部配置文件解釋說明和參考。)

frp 配置文件分為服務端和客戶端,想要正常只用 frp 工具,我們需要對服務端和客戶端的配置文件分別進行設置。

  • frps.ini(服務端)配置文件解釋說明:
[common]
bind_port = 7000
vhost_http_port = 8080

注:【bind_port】是 frp 客戶端連接服務端的端口,【vhost_http_port】是 http 訪問的端口(外網端口)。

  • frpc.ini(客戶端)配置文件解釋說明:
[common]
server_addr = 127.0.0.1 #伺服器IP
server_port = 7000    #frp服務端端口地址
 
[web]
type = http
local_port = 8080 #本地項目端
custom_domains = test.frp.xxx.com #域名

第三步:啟動服務#

linux 環境下啟動服務,需要先把運行文件添加可執行權限。
例如我的文件實在 root 文件夾中,我需要搭建 frp 服務端,那麼待設置好服務端配置文件(frps.ini)後執行以下命令即可:

cd /root
chmod +x frps
nohup ./frps -c ./frps.ini &

執行成功後,會顯示 frp 的進程號碼。你也可以通過命令來查看 frps 運行的進程編號:ps -e | grep frps

在 windows 環境下則是以管理員身份運行 cmd 命令提示符。進入相應的目錄後,運行命令即可: frps -c frps.ini &

關於 frp 管理的優化設置#

注:現官方已提供 systemd 服務配置文件,可直接使用。
debian8.0,或者是 centos7.0 以上的版本,服務都是基於 systemd 的方式進行管理的。frp 通過設置後也可以實現 systemd 的方式進行管理,這樣我們就可以通過 systemctl 命令來進行服務的統一管理,同時通過這樣的設置也可以將 frp 服務加入開機自啟動。

  1. 將 frp 設置成 linux 系統的服務,基於 systemd 方式管理 編寫 frps.service 文件,以 centos7 為例:

nano /usr/lib/systemd/system/frps.service

內容如下:

[Unit]
Description=Frp Server Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target

編寫 frpc.service 文件,以 centos7 為例:

nano /usr/lib/systemd/system/frps.service

內容如下:

[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini

[Install]
WantedBy=multi-user.target
  1. 將 frp 設置成開機自啟動
#frps
systemctl enable frps
systemctl start frps

#frpc
systemctl enable frpc
systemctl start frpc

Frp 到此就配置完了。

附:個人參考配置#

伺服器端:

[common]
bind_addr = 0.0.0.0             //綁定地址
bind_port = 8888                //TCP綁定端口
bind_udp_port = 8888            //UDP綁定端口
kcp_bind_port = 8888            //KCP綁定端口
vhost_http_port = 80            //HTTP代理端口
vhost_https_port = 443          //HTTPS代理端口
dashboard_addr = 0.0.0.0        //儀表盤地址
dashboard_port = 10000          //儀表盤端口
dashboard_user = admin          //儀表盤用戶名
dashboard_pwd = admin           //儀表盤密碼
token = 123456                  //連接密碼
subdomain_host = test.com       //子域名使用的主機名

客戶端:

[common]
server_addr = 172.16.100.100    //伺服器地址
server_port = 8888              //伺服器綁定端口
token = 123456                  //特權模式密碼
tls_enable = true               //加密傳輸        
admin_addr = 127.0.0.1          //客戶端Web地址
admin_port = 7400               //Web訪問端口
admin_user = admin              //Web訪問賬戶
admin_pwd = admin               //Web訪問密碼
user = your_name                //用戶名,設置後代理將顯示為 <用戶名.代理名>

[web]                           //服務名稱(自定義)
local_ip = 127.0.0.1            //本機ip
type = http                     //鏈路類型
local_port = 80                 //本機端口
subdomain = web                 //服務端為test.com,故此處子域名為web.test.com
custom_domains = demo.com       //自定義訪問域名,多個使用,分割
use_compression = true          //使用壓縮
use_encryption = true           //使用加密

[ssh]
local_ip = 127.0.0.1
type = tcp
local_port = 22
remote_port = 9000
use_compression = true
use_encryption = true
  • 👻:具體參數請根據需要配置。
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。