奧推網

選單
科技

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

作者:丶Source

寫在前面

本文主要基於微信回撥需求整理的 frp 內網穿透指令碼。

最終效果就是

透過一臺帶有公網 IP 的伺服器實現透過在公網訪問你的 Nas 上的應用

因為確實涉及到伺服器配置、命令列操作,有一定的門檻,我會盡量以新手友好的方式來分享教程

本文大綱如下,可按需選擇感興趣部分檢視:

微信回撥

最初就是為了配置 NasTools 支援微信回撥,實現微信搜尋影片自動下載:

回撥是由微信的伺服器發起,需要提供一個 NasTools 的公網訪問入口

目前使用的是移動寬頻,只有公網 IPv6,沒有提供公網 IPv4

企業微信回撥目前不支援 IPv6

那麼最終就只能做利用內網穿透代理來暴露公網了

文章篇幅原因且企業微信回撥支援透過 IP 訪問,本文未涉及域名及Https配置

內網穿透

內網穿透軟體,之前也有介紹過 ZeroTier

但 ZeroTier 更多是用於異地組網實現類似 VPN 的功能,不太適用於這個需求場景:

透過內網穿透,將 NasTools 的微信回撥介面暴露到公網給企業微信應用發訪問

而這恰恰是 frp 的目標場景,正如官網介紹的:

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

其工作流程如下:

外網機器無法訪問到 Nas,但是 Nas 可以主動訪問公網的 vps

在 Nas 執行 frpc 客戶端主動與 vps 上的 frps 服務端建立連線

執行在公網 vps 的 frps 服務端將特定埠的請求轉發給 Nas

透過在公網 vps 上進行內網穿透代理,最終實現了企業微信回撥訪問 NasTools

準備工作

在配置內網穿透前需要完成以下前提條件:

前提條件

作用

一臺有公網 IPv4 的 vps

部署 frps 提供穿透代理

支援透過 ssh 登入到伺服器的終端

登入 vps 進行命令列配置

內網穿透軟體

本文選擇了 frp 作為內網穿透工具

針對 vps 的選擇,可以考慮:

國內的大廠提供的 vps,如騰訊雲、阿里雲、華為雲等等

僅用於做內網穿透代理,使用最低配置即可,但必須要分配獨佔的公網 IP

不做其他用途的話,1Mbps 的頻寬就足夠提供回撥訪問了

選擇 linux 系統,如 debian、ubuntu、centos 等

具體的 vps 購買及系統安裝,廠商提供的教程已經非常全了,這裡就不再展開細說

服務端配置

安全組開放埠

這裡以目前我使用的騰訊云為例,僅列出關鍵步驟,完整操作見官網文件

完成 vps 購買及系統初始化後,需要規劃伺服器埠開放,有兩種方式:

放通所有埠

,相當於不做任何訪問控制

放通自定義埠

,僅開放指定的埠暴露公網,其他埠則不允許訪問

嫌配置麻煩的話,可以選第一種,犧牲一定的安全性來換取便利

以騰訊云為例,新增一個安全組選擇

放通全部埠

模版,然後關聯 vps 例項即可

但更推薦按照

最小許可權開放

來配置允許特定埠,也就是選擇

自定義

模版

然後手動配置

入站規則

,也就是將需要暴露的埠開放訪問,具體如下

埠用途

預設

推薦埠

ssh 登入埠

22

一般保持預設 22 埠即可

frps 服務端連線埠

5443

建議設定隨機埠,如 44443

frps 儀表盤管理介面

6443

建議設定隨機埠,如 44444

frps 穿透代理 NasTools 埠

建議設定隨機埠,如 44445

本文場景下

最終需要用到的就是上述 4 個埠,frps 其他埠不是必須的

在剛才新建的自定義安全組中修改安全規則,新增入站規則:

設定

0。0。0。0/0

表示允許所有來源 IP

協議埠

設定

TCP:22

TCP44443-44445

開放上述提到的埠

策略

選擇

允許

備註

自己隨便填,這裡我填了

ssh 、frp

最後記得關聯到雲伺服器 vps 生效,具體操作見官網文件

SSH登入伺服器

這裡主要介紹 windows 下的登入場景,如果是 macOS 可使用 iterm2 命令列登入

因為 frp 服務端需要登入到 vps 伺服器上配置,因此需要一款 ssh 登入軟體

這裡以 putty 為例,其他還有 xshell 甚至 windows wsl 自帶的 ssh client,自行選擇

進入 putty官網 後點擊

Download PuTTY

跳轉到下載頁面

找到

Alternative binary files

下載免安裝版本

目前大部分 Windows 都是 64 位版本了,因此下載

64-bit x86

版本

下載後雙擊執行,進入 putty 配置頁面準備登入伺服器

執行之後開始登入伺服器:

Host Name

部分輸入你的 vps 分配的 IP

Port

保持預設的 22 埠,除非你有修改過 ssh 服務的埠

最後點選

Open

按鈕開始登入

因為是第一次連線到這臺 vps 伺服器,所以會有這個提示,點選

ACCEPT

即可

之後就是輸入你 vps 的登入使用者及密碼完成登入配置

因為我主要是使用 macOS 因此下面的涉及到命令列操作都是在 iterm2 中完成

配置 frps 服務端

透過 ssh 登入伺服器之後,使用一鍵配置指令碼來部署 frps,複製以下命令執行:

wget https://code。aliyun。com/MvsCode/frps-onekey/raw/master/install-frps。sh -O /tmp/install-frps。sh

bash /tmp/install-frps。sh install

首先會自動進行基礎環境的檢查,並安裝相關的依賴軟體,然後就開始進入配置頁面

如上圖提示是希望從哪裡下載 frps 服務端軟體:

這裡保持預設阿里雲即可,接下來設定 frps 服務端的監聽埠,我使用

44443

埠:

儀表盤資訊部分也需要進行調整:

儀表盤埠調整為隨機埠,這裡我使用

44444

儀表盤登入的

使用者密碼按需進行修改

其他引數全部保持預設,一直按回車就行,Token 建議保持隨機字串

最後會輸出最終詳情,

記得儲存下來方便後續使用

配置完成後,再透過以下命令來確定 frps 已經正常執行:

frps status

之後訪問 dashboard 並輸入使用者名稱密碼登入,能看到這個頁面就是已經配置完成

客戶端配置

因為我們的目標是將 NasTools 的回撥介面,那麼 frpc 客戶端可選擇就有:

執行在路由器上,並配置代理到 Nas 上的 Nastools 入口

執行 Nas 上,並代理到本機的 NasTools 入口

可以根據自己實際情況來選擇對應方案,下文會分別介紹具體的配置方式

Openwrt 部署 frpc

以 openwrt 為例,目前大部分的 op 韌體會內建 frp 內網穿透

如果你的韌體沒有內建,也可自行下載安裝:

系統 - 軟體包 - 過濾器

輸入

frpc

需要安裝以下兩個軟體包(如果沒有搜到的話,需要重新整理一下列表)

frpc

二進位制可執行檔案

luci-app-frpc

在 openwrt 提供 frpc 配置頁面,這樣就不需要進入命令列配置

儘量選擇與你部署的 frps 服務端相同或接近的版本,版本想差太多無法保證功能可用

之後就可以在 openwrt 管理後臺

服務

頁面下找到 frp 內網穿透進行配置:

勾選

啟用

填入

伺服器

令牌

則是我們生成的

Token

其他引數保持預設即可

接下來拉到

服務列表

點選

新增

按鈕開始將 NasTools 暴露到公網:

Enable State

設定為

啟用

使用

TCP

型別即可,VPS 暴露埠為

44445

,這個埠已經開放了安全組

內網設定到 NasTools 的入口,我的是

10。0。0。2:3000

按照你自己的修改

服務備註名

設定一個唯一標識,當你同時透過 frp 暴露多個服務時需要區分開來

建議

開啟資料加密

,以保證 vps 到路由器之間的資料傳輸安全

配置完成後點選

儲存&應用

,回到 frp 主頁還需要在點選一次

儲存&應用

至此,路由器配置 frpc 完成

Nas 部署 frpc

如果是在 Nas 上,則建議透過 docker 來部署 frpc

我使用的映象是

snowdreamtech/frpc

,如果是透過 docker 命令啟動,可參考:

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

但在如果是 Unraid 的話,建議使用我的模版倉庫

shuosiw/unraid

,使用方式見

新增模版之後,點選

ADD CONTAINER

並選擇

frpc

模版即可

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

如無特殊需求使用預設引數即可,之後點選下方的

APPLY

按鈕啟用

但回到 Docker 頁面還是處於 stop 狀態,這是因為沒有配置檔案,需要手動新增

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

在 unraid 上建立

/mnt/user/appdata/frp/frpc。ini

檔案並寫入如下配置:

[common]

token=JwxXzxTTLbvKY2mn

server_addr=xx。xx。xx。xx

server_port=44443

user=Unraid

log_level=info

protocol=tcp

admin_addr=0。0。0。0

admin_port=7400

tcp_mux=true

login_fail_exit=true

[Nastool-Wechat]

type=tcp

remote_port=44445

local_ip=10。0。0。2

local_port=3000

use_encryption=true

use_compression=true

其中

common

部分有 3 個配置項需要按照實際情況調整:

token

替換為你部署 frps 服務端時候設定或自動生成 Token

server_addr

替換為你 vps 的公網 IP

server_port

替換為你部署 frps 設定的服務端埠,也就是 bind_port

Nastool-Wechat

也有 3 個需要按照實際情況調整:

remote_port

替換為你最終在 vps 對映 NasTools 的埠

local_ip

替換為你的 Nas IP

local_port

替換為你的 NasTools 對映埠

如果你熟悉命令列操作,可透過 unraid 管理後臺 Terminal 進入網頁版終端修改,

或者先在電腦上透過檔案編輯器寫好之後,再上傳到

/mnt/user/appdata/frp/

目錄下

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

注意檔名一定要為 frpc。ini,否則容器程序啟動後會因為找不到配置檔案而報錯退出

之後回到 Unraid 容器管理介面點選

Start

啟動 frpc 容器,此時可正常啟動

接下來在 Unraid 上 frpc 應用點選

WebUI

即可訪問

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

或者使用 Nas IP + 7400 埠訪問就可以看到主介面,比如我的是:

10。0。0。2:7400

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

可以看到配置的應用已經啟動了,後續有調整的話,也可以直接在

Configure

頁面修改配置

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

驗證穿透效果

如果一切配置無誤你就已經可以透過 VPS 的公網 IP 及 NasTools 對映埠來訪問了

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

在我這次配置中,我分配了

44445

埠給到 NasTools 穿透代理對映

瀏覽器會提示不安全,這是因為沒有使用 https 加密,這是正常的提示

路由與NAS 篇二十:家用寬頻無公網IP怎麼在外訪問Nas——Frp內網...

重新開啟 frps 服務端的儀表盤頁面,也可以看到剛才配置的穿透應用流量情況

那麼接下里就是將你的 vps 公網穿透代理 NasTools 入口新增到企業微信回撥介面即可

之前的文章已經介紹得非常詳細了,這裡就不展開說了

寫在後面

寫這篇文章時候有點無從下手的感覺,因為確實涉及到較多的命令列操作

smzdm 對命令指令的編輯及展示並不算太友好且有些值友對命令列操作也不是很熟悉

糾結了許久,最終效果就是這樣了,也想了解一下值友對本文的易讀性感覺如何。

碼字不易,多多點贊收藏,如果有任何疑問,可以評論我會定期回覆。

後續的一些最佳化,比如配置域名、ddns 以及設定微信回撥白名單等等,可以考慮再出一些文章,

如果你們有比較感興趣的也可以評論回覆。