為什么寫這篇文章
因?yàn)橛性谕饷嬖L問家里 NAS 的需求,群暉自帶的動(dòng)態(tài)域名解析訪問又太慢(因?yàn)槿簳熥詭?dòng)態(tài)域名的 DNS 服務(wù)器在國外)。所以需要用內(nèi)網(wǎng)穿透技術(shù)來實(shí)現(xiàn)通過其他公網(wǎng) IP 來訪問家里的 NAS 設(shè)備的需求。所以才有了這篇文章。
概念解釋
- NAS - 簡單的說就是一個(gè)存儲中心。
- Frp - 一種內(nèi)網(wǎng)穿透技術(shù)。
- 內(nèi)網(wǎng)穿透 - 就是通過其他公網(wǎng) IP 來訪問本地沒有公網(wǎng) IP 網(wǎng)絡(luò)環(huán)境的一個(gè)技術(shù)。
內(nèi)網(wǎng)穿透
內(nèi)網(wǎng)穿透技術(shù)眾多,比如花生殼內(nèi)網(wǎng)穿透、Ngrok、Frp 都是現(xiàn)在主流的內(nèi)網(wǎng)穿透技術(shù)。
但我個(gè)人認(rèn)為 Frp 是目前最好用配置最簡單的(經(jīng)過測試)。
花生殼
配置簡單方便,比較傻瓜化。但要收費(fèi)。雖然也有免費(fèi)版,但由于免費(fèi)版的流量限制,基本上沒有什么實(shí)際作用。
Ngrok
發(fā)布時(shí)間相對較長,對象較為成熟的一種內(nèi)網(wǎng)穿透技術(shù)。但由于功能的強(qiáng)大。配置較為繁瑣。因?yàn)檎垓v許久沒有成功過,最后放棄。
Frp
配置簡單,第一次用就配置成功了。并且適用于各大主流平臺設(shè)備。
具體過程
準(zhǔn)備工作
-
一臺有公網(wǎng) IP 的服務(wù)器 (VPS、云主機(jī))
之前注冊了一個(gè)國外的 VPS, 準(zhǔn)備做內(nèi)網(wǎng)穿透和 vpn 用,但由于訪問速度。果斷放棄,最后換成了自己阿里云 ECS。
-
NAS (客戶端)
群暉 DS 416 play
基本步驟
由于 Frp 官網(wǎng)說明文檔還是比較詳細(xì)。我不過多做解釋。
服務(wù)器端配置:
-
登錄服務(wù)器,在 Release頁面 下載自己服務(wù)器對應(yīng)版本 Frp
wget https://github.com/fatedier/frp/releases/download/v0.12.0/frp_0.12.0_linux_amd64.tar.gz
實(shí)例中:我的阿里云 ECS 用的 centos7 所以我選擇 linux_amd64 64位的
Frp 0.12.0 最新測試版的
-
使用 tar 指令解壓 tar.gz 文件
tar -zxvf frp_0.12.0_linux_amd64.tar.gz
-
進(jìn)入 frp 目錄
cd frp_0.12.0_linux_amd64
-
刪除不必要的客戶端文件
rm -f frpc frpc_full.ini frpc.ini
版本不同可能稍有差異,
frpc 為客戶端文件
frps 為服務(wù)器端文件
-
配置服務(wù)器端文件
vi frps.ini
frps.ini 為服務(wù)器配置文件
-
編輯配置文件
[common]
bind_port = 7000
vhost_http_port = 8080
dashboard_port = 7500
dashboard_user = 用戶名
dashboard_pwd = 密碼
max_pool_count = 5
authentication_timeout = 900
subdomain_host = lekee.cc
[ssh]
listen_port = 6000
auth_token = 和客服端 token 對應(yīng)
簡單解釋:
[common] 必填的
bind_port Frp 服務(wù)端口(可自定義)
vhost_http_port http 訪問端口(可自定義)
dashboard_port dashboard 界面端口
dashboard_user 登錄 dashboard 用戶名
dashboard_pwd 登錄 dashboard 密碼
max_pool_count 最大連接池?cái)?shù)量
authentication_timeout 超時(shí)驗(yàn)證時(shí)間
subdomain_host 自定義二級域名
[ssh]
listen_port ssh 訪問端口
auth_token 用戶身份認(rèn)證
詳細(xì)配置
點(diǎn)擊官方
-
保存上面配置文件嗎,啟動(dòng) frp 服務(wù)器
./frps -c ./frps.ini
需要后臺運(yùn)行,請看下面
服務(wù)端配置結(jié)束。
客戶端配置
客戶端就是您本地需要做外網(wǎng)服務(wù)的設(shè)備,可以是 PC、Mac、NAS、路由器、或者虛擬機(jī)里的 liunx 系統(tǒng)。
這篇文章主要是利用 Frp 技術(shù)訪問在群暉 NAS 服務(wù)的應(yīng)用。實(shí)例也是 NAS 系統(tǒng)。
- SSH 登錄群暉 NAS (群暉必須開啟 ssh)
```
ssh nas
```
> 我設(shè)置過別名,詳情查看我的另一篇文章[MAC 終端 SSH 別名代替 IP 的方法](https://lekee.cc/904.html)
> ssh nas = ssh user@ip
-
下載 Frp, 刪除服務(wù)端文件。(因?yàn)楹头?wù)端配置一樣,不再一一贅述。)
sudo -i // 切換 root 用戶
wget https://github.com/fatedier/frp/releases/download/v0.12.0/frp_0.12.0_linux_386.tar.gz
tar -zxvf frp_0.12.0_linux_386.tar.gz
cd frp_0.12.0_linux_386
rm -f frps frps_full.ini frps.ini
-
編輯 frpc.ini 文件(客戶端配置文件)
vi frpc.ini
-
編輯配置文件如下
[common]
server_addr = ip
server_port = 7000
auth_token = 和服務(wù)器端對應(yīng)
pool_count = 1
[ssh]
type = tcp
local_ip = NAS 局域網(wǎng)ip
local_port = 22
remote_port = 6000
[nas]
type = http
local_port = 5000
subdomain = nas
[web]
type = http
local_port = 80
subdomain = web
簡單解釋:
[common] 必填的
server_addr 服務(wù)器端公網(wǎng)
server_port frp 服務(wù)端口,和服務(wù)器端 bind_port 一致
auth_token 和前面服務(wù)器端 [ssh] auth_token 一致
pool_count 連接池?cái)?shù)量
[ssh]
type 服務(wù)類型(tcp、http、https、udp)
local_ip NAS 本地局域網(wǎng)內(nèi)網(wǎng) ip
local_port NAS 開啟 ssh 服務(wù)端口號,默認(rèn) 22
remote_port 服務(wù)器端 ssh 端口,和服務(wù)器端 [ssh] listen_port 配置一致
[nas] NAS 管理界面
subdomain 二級域名 nas.lekee.cc 訪問 NAS
type = http 服務(wù)類型為 http
local_port NAS 默認(rèn)端口 5000
[web] NAS web Station 服務(wù),沒用可以不用設(shè)置
type = http 類型為 http
local_port = 80 NAS web 服務(wù)端口
subdomain = web 二級域名 web.lekee.cc
*使用自定義二級域名的時(shí)候,域名 .lekee.cc 要解析到服務(wù)器 IP
詳細(xì)配置
點(diǎn)擊官方
-
保存,運(yùn)行。(后臺運(yùn)行,請看下面)
./frpc -c ./frpc.ini
此時(shí)在服務(wù)端會看到"start proxy sucess"字樣,即連接成功。
測試運(yùn)行
ssh 測試
ssh -p 6000 user@服務(wù)器ip
user 為你登錄群暉 NAS 的用戶名
nas 界面
打開瀏覽器輸入 nas.lekee.cc.com:8080, 顯示群暉登錄界面成功。
NAS web Station
打開瀏覽器輸入 web.lekee.cc.com:8080, 顯示下面頁面成功。
域名后面 8080 端口可以隱藏,下面介紹如何隱藏 8080 端口。
擴(kuò)展應(yīng)用
后臺運(yùn)行
后臺運(yùn)行服務(wù)的方法有很多,這里只說一種可以在服務(wù)器端(Linux)和客戶端(NAS)都可以用的 nohup指令
服務(wù)器端
nohup ./frps -c ./frps.ini &
客戶端
nohup ./frpc -c ./frpc.ini &
自動(dòng)啟動(dòng)
我的另一篇文章 《frp 自動(dòng)啟動(dòng)》
隱藏 8080 端口
瀏覽《Frp 隱藏 8080 端口》
總結(jié)疑問
使用狀態(tài)
目前使用一切正常,能滿足我的日常需求。
在外面需要訪問 NAS 里的的文件的時(shí)候速度還比較滿意。
今天還測試在外面看 NAS 里的視頻,也一點(diǎn)都不卡。
我的擔(dān)心
但我的擔(dān)心就是在外面觀看 NAS 里的視頻的時(shí)候,流量有點(diǎn)害怕。
因?yàn)槲椰F(xiàn)在使用阿里云 ECS 計(jì)費(fèi)方式是按流量計(jì)費(fèi)的。
不知道這樣在外面看視頻,用阿里云做中轉(zhuǎn)。流量到底是怎么計(jì)算的。
還需要進(jìn)一步探究。不過之前阿里云上預(yù)存1000元,都好幾個(gè)月了。還有999.78元。
展望
這個(gè)技術(shù)偉大之處就是,只要設(shè)備能上網(wǎng)。不管有沒有公網(wǎng) IP,都可以讓任何一個(gè)能上網(wǎng)的機(jī)子訪問該設(shè)備。該設(shè)備可能是一臺 PC,一個(gè)服務(wù)器,一個(gè)路由器,一個(gè)NAS,一個(gè)攝像頭,一個(gè)... 無限擴(kuò)展無限衍生,無限可能...
希望本文能您帶來幫助!