天天看點

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

在自建伺服器過程中,内網穿透是十分重要的一環,可以将内網服務暴露到公網。

我在文章:私有雲伺服器搭建教程(保姆級)——台式電腦+ubuntu+docker+nextcloud+mysql+花生殼内網穿透 中提到通過花生殼完成内網穿透的實作。相對于花生殼,frp是一種成本效益更好的内網穿透方式。

Frp作為内網穿透的常見手段,其前提條件是:一台配有公網Ip的雲伺服器(我的是阿裡雲)以及一個域名(非必須)。

雲伺服器系統:Alibaba Cloud Linux + 内網伺服器系統:Ubuntu 22.04.1 LTS

文章目錄

  • 前言
  • 一、frp介紹
    • 1.frp 是什麼?
    • 2.為什麼使用 frp?
  • 二、Alibaba Cloud Linux介紹
  • 三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定
    • 1.區域網路(私網)實體伺服器配置
    • 2.公網雲伺服器設定
  • 四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務
    • 1. 安裝Frps
    • 2. 設定Frps 服務開機自啟
    • 3. 阿裡雲伺服器ESC添加安全組入站規則
  • 五、内網伺服器(ubuntu)安裝Frp Client端
    • 1. 安裝Frpc
    • 2. 設定Frpc 服務開機自啟
  • 六 點亮效果
  • 七 踩坑記錄
  • 總結
  • 參考連結:

前言

本文主要講解 Alibaba Cloud Linux 上搭建Frp内網穿透服務的流程。

雲伺服器系統版本:Alibaba Cloud Linux 3.2104 LTS 64位 (相容Centos);私網實體伺服器作業系統:Ubuntu 22.04.1 LTS。

網上frp教程很多,其中不乏很多高品質的教程,對我自己在搭建Frp内網穿透過程中有很大幫助。但,每個人踩的坑并不相同,我踩了兩個坑。故,在此做一下記錄。如果能幫助到你,那是我的榮幸~

一、frp介紹

frp中文文檔

1.frp 是什麼?

frp 是一個專注于内網穿透的高性能的反向代理應用,支援 TCP、UDP、HTTP、HTTPS 等多種協定。可以将内網服務以安全、便捷的方式通過具有公網 IP 節點的中轉暴露到公網。

2.為什麼使用 frp?

通過在具有公網 IP 的節點上部署 frp 服務端,可以輕松地将内網服務穿透到公網,同時提供諸多專業的功能特性,這包括:

  • 用戶端服務端通信支援 TCP、KCP 以及 Websocket 等多種協定。
  • 采用 TCP 連接配接流式複用,在單個連接配接間承載更多請求,節省連接配接建立時間。
  • 代理組間的負載均衡。
  • 端口複用,多個服務通過同一個服務端端口暴露。
  • 多個原生支援的用戶端插件(靜态檔案檢視,HTTP、SOCK5 代理等),便于獨立使用 frp 用戶端完成某些工作。
  • 高度擴充性的服務端插件系統,友善結合自身需求進行功能擴充。
  • 服務端和用戶端 UI 頁面。

二、Alibaba Cloud Linux介紹

随着 CentOS 的停止維護,Alibaba Cloud Linux 成了一個替換方案。

Alibaba Cloud Linux 文檔

Alibaba Cloud Linux是阿裡雲基于龍蜥社群(OpenAnolis)的龍蜥作業系統(Anolis OS)打造的作業系統發行版,在相容RHEL/CentOS生态的同時,為雲上應用程式提供安全、穩定、高性能的定制化運作環境,并針對雲基礎設施進行了深度優化。

總的來說,Alibaba Cloud Linux相容CentOS,CentOS上的指令,在Alibaba Cloud Linux同樣可以運作。

三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定

1.區域網路(私網)實體伺服器配置

我這裡,在内網伺服器上已經搭建起了一個服務。現在我需要的就是通過内網穿透,将内網伺服器的9001端口,暴露到公網上去。

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

2.公網雲伺服器設定

我購買了一台阿裡雲伺服器ESC。本文的公網ip我們用47.99.x.x表示。

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務

1. 安裝Frps

先去GitHub檢視frp的最新版本 。找到适配自己系統的安裝包。這裡我選擇:frp_0.44.0_linux_amd64.tar.gz。

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

下載下傳安裝包

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

解壓

tar zxf frp_0.44.0_linux_amd64.tar.gz
           

移動至 /usr/local

在/usr/local/下建立一個frp檔案夾。/usr/local目錄類似于windows系統的C:/Progrem Files/。使用者自己編譯的軟體預設會安裝到這個目錄下。

mkdir /usr/local/frp
           

将frp_0.44.0_linux_amd64移動到 /usr/local/frp 裡面

mv frp_0.44.0_linux_amd64/* /usr/local/frp/
           

進入檔案夾

cd /usr/local/frp/
           

清單顯示根目錄下的檔案

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

frps就是frp server端的部分;frpc 是frp client端的部分。這裡我們隻需要關心Server端。

這裡我們可以直接删掉frpc、frpc_full.ini、frpc.ini三個檔案,節省硬碟空間

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

修改配置檔案:frps.ini

vi frps.ini 
           

鍵入【i】,修改内容如下:

[common]
# frp server 綁定的端口
bind_port = 7000 
# 設定 http 通路端口為 80
vhost_http_port = 80
# 設定域名(保證此域名可用;我們假設你的域名為【subdomain.yourdomain.com】)
subdomain_host = yourdomain.com
           

【bind_port】:frp用戶端連接配接服務端的端口

【vhost_http_port】:是http通路的端口(外網端口)。我這裡設定成80端口。也就是說,在配置正确的前提下,外網可以通過浏覽器直接通路【http://47.99.x.x】通路内網服務。

【subdomain_host】:你的一級域名。我們假設你的域名為:【subdomain.yourdomain.com】。【subdomain】是二級域名,【yourdomain.com】是一級域名。如果不需要用到域名則不需要配置此項。

[注意]:

建議1:不要加注釋。我在配置ini的時候,加了注釋好像會報錯。

建議2:新手建議隻設定這兩個,設定越多越容易出錯。建議走通後再慢慢改。

修改完成後。按下Esc退出編輯模式。然後輸入:wq儲存并退出。

啟動frps

./frps -c frps.ini 
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

2. 設定Frps 服務開機自啟

建立背景啟動模版

vim /usr/lib/systemd/system/frp.service
           

設定啟動模版内容

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target
           

重新加載服務的配置檔案

systemctl daemon-reload
           

現在就可以用 systemctl 套裝來控制 frp 了。

對frp服務的啟動/停止/重新開機,檢視狀态,設定開機自啟/關閉開機自啟

systemctl start frp
systemctl stop frp
systemctl restart frp
systemctl status frp
systemctl enable frp
systemctl disable frp
           

這裡我們設定frp開機自啟,隻需要運作 systemctl enable frp 這句指令。

重新開機伺服器

重新開機後檢視frpc的狀态

systemctl status frp
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

Loaded:loaded Active:active (running) 就說明開機自啟成功。

3. 阿裡雲伺服器ESC添加安全組入站規則

雲伺服器的防火牆需要在雲控制台設定。

雲伺服器ECS->執行個體->執行個體詳情->安全組->配置規則

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

添加入站規則

我們這裡添加:7000(frp端口)、80(http預設端口)、443(https預設端口)三個端口

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

五、内網伺服器(ubuntu)安裝Frp Client端

1. 安裝Frpc

下載下傳安裝包

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

解壓

tar zxf frp_0.44.0_linux_amd64.tar.gz
           

移動至 /usr/local

同樣在/usr/local/下建立一個frp檔案夾。

sudo mkdir /usr/local/frp
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

将frp_0.44.0_linux_amd64移動到 /usr/local/frp 裡面

sudo mv frp_0.44.0_linux_amd64/* /usr/local/frp/
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

進入檔案夾

cd /usr/local/frp/
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

清單顯示根目錄下的檔案

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

frpc 是frp client端的部分。

修改配置檔案:frpc.ini

vi frpc.ini 
           

修改frpc.ini

[common]
server_addr = 47.99.x.x			
server_port = 7000

[web]
type = http
local_port = 9001
custom_domains = 47.99.x.x

[subdomain]
type = http
# 本地 web server 端口
local_port = 9001 
# 二級域名名稱, 如:www
subdomain = subdomain

           

【server_addr】:frps雲服務的公網ip位址,這裡的47.99.x.x是我購買的雲伺服器ECS的公網ip

【server_port】:frps雲服務的端口

【type】:請求類型,建議用http,https需要證書。

【local_port】:本地伺服器需要暴露到公網上的服務端口

【custom_domains】:自定義域名。必須設定。建議新手先直接用ip。設定成功之後再改域名。用域名的話還需要配置域名解析和域名備案。

[注意]:

建議1:不要加注釋。我在配置ini的時候,加了注釋好像會報錯。

建議2:新手建議隻設定這5項,設定越多越容易出錯。建議走通後再慢慢改。

啟動frpc

./frpc -c frpc.ini
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

login to server successs:成功登入到服務端。

[web]start proxy success:啟動[web]協定成功。

2. 設定Frpc 服務開機自啟

進入到存放開機自啟檔案的路徑:

cd /etc/systemd/system
           

建立名為frpc的.service檔案:

sudo touch frpc.service
           

編輯上一步建立的檔案:

sudo vim frpc.service
           

然後将下面的代碼粘貼進去(先按i鍵,進入編輯模式,然後點選滑鼠右鍵粘貼):

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

[Service]
Type=simple
Restart=on-failure
RestartSec=5s
ExecStart=/bin/bash -c '/usr/local/frp/frpc -c /usr/local/frp/frpc.ini'

[Install]
WantedBy=multi-user.target
           

注意frpc 和 frpc.ini 的路徑,可以根據自己的實際情況修改。

設定開機自啟:

sudo systemctl enable frpc
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

重新開機伺服器

重新開機後檢視frps的狀态

sudo systemctl status frpc
           
Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

Loaded:loaded Active:active (running) 就說明開機自啟成功。

六 點亮效果

frps 和 frpc 打通後,就可以在網際網路上通過公網ip通路:我這裡是47.99.x.x。

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

七 踩坑記錄

如果,用戶端的frpc.ini 裡的 custom_domains設定成域名。而你的域名剛好還沒備案就會出現下面這個頁面。2021年以後,這個阿裡雲上每一個域名都需要備案。你有兩個選擇:1:、乖乖備案域名;2、不使用域名,隻是用公網ip進行内網穿透。

備案域名需要幾個工作日,是以本教程使用公網ip進行内網穿透,必過域名備案步驟。

Alibaba Cloud Linux 搭建Frp内網穿透服務(相容Centos)前言一、frp介紹二、Alibaba Cloud Linux介紹三、安裝前的準備:區域網路(私網)實體伺服器、公網雲伺服器及域名解析設定四、公網雲伺服器(Alibaba Cloud Linux)安裝Frps 服務五、内網伺服器(ubuntu)安裝Frp Client端六 點亮效果七 踩坑記錄總結參考連結:

總結

到此,Alibaba Cloud Linux 搭建Frp内網穿透成功。希望本教程對你有所幫助。

參考連結:

CentOS下搭建Frp内網穿透服務

Alibaba Cloud Linux 文檔

frp中文文檔