哈嘍我是不多BB的未命名
上個視頻說了怎麼買雲服務器
這期視頻教大家在雲服務器上
搭建一個內網穿透服務
最主要的效果就是讓家裡沒有
公網ip的朋友
也能隨時隨地的訪問家裡的NAS
路由器以及等等其他項目
內網穿透的方案
其實市面上不少
那為什麼要自建
這個問題不是三言兩語能說清的
有機會單獨再談
內網穿透開源的方案有好幾個
這期視頻
我們介紹frp 因為它更接地氣一點
就像域名解析
無論你選哪個公司其實都差不多
但花生殼絕對是最接地氣的那一個
frp也同理
你的路由器要是能裝插件
那很有可能就有frp的插件
但其他內網穿透方案就不見得了
我先快速介紹一下基礎原理
有了基礎邏輯在看後面的視頻
可能就沒有那麼困惑了
否則一臉懵逼以後出了問題
沒有判斷和解決的能力
關於互聯網上兩台機器交互的問題
我做個類比
有公網ip代表站在明處
沒公網ip代表站在暗處
兩台設備要交互
要么大家都在明處
互相看得見
要么一台在明處
一台在暗處
由暗處的設備主動聯繫明處的設備
當連接通道建立起來後
雙方就能互相交互了
如果兩台設備都在暗處
那麼互相看不見
也就沒法直接交互
要解決這個問題
必須有一個站在明處的第三方
由明處的第三方給兩台暗處的設備牽手
這樣就能實現兩台暗處的設備互相交互了
現在說frp項目的原理
這個項目分為兩部分
frps和frpc
s指server服務端的意思
c指client的客戶端的意思
服務端需要站在明處
所以frps我們把它部署在雲服務器上
因為雲服務器一般都是獨立公網ip
所以實際上
只要任意一個有公網ip的設備都可以
用來部署frps
因為有供網ip就等於站在明處
frpc作為客戶端一般部署
在沒有公網ip的設備上
實際運用情況
雲服務器部署frps
nas部署客戶端frpc
然後沒有公網ip的nas通過frp
和站在明處的服務器建立了連接通道
以後
其他設備無論你是在明處還是暗處
只要和站在明處的服務器通信
服務器就能做一個第三方幫你們牽手
用戶
訪問有公網ip的frps服務端
fps服務端再把請求轉發給
安裝了frpc的客戶端
最終就實現了任意用戶
訪問沒有公網ip的設備
金山雲的服務器
我提幾個注意事項
首先服務器關機可以重新設置
root用戶密碼
其次是拿到新服務器後
硬盤默認只有20G
你選擇重新安裝系統
可以手動的把硬盤改成50G
服務器第一次啟動後順手複製一下
服務器的公網ip
然後去防火牆設置裡
把常用的80、443、22端口開放一下
80是http的端口
443是https的端口
22是ssh的端口
然後打開ssh工具
新建一個連接名字隨便起
主機把服務器ip粘貼進來
用戶名
root密碼
輸入你設置的
然後點確定就可以
我之前已經連接過了
所以不添加新連接了
然後到github項目頁面
把這個項目下載下來
這裡我選擇linux_amd64
amd64其實就是x86
解壓後看一下里面的文件
frpc和frps其實
都在這個文件夾裡
你運行frps就運行了服務端
你運行frpc就運行了客戶端
後退把文件夾名改一下
然後整個文件夾上傳到root目錄
如果你是一個linux新手
那麼我建議完全照著我這麼來
因為linux是區分大小寫的
你如果全程和我一樣
最後我把我用到的所有腳本和設置好的
配置文檔會放個視頻下方
你下載好就能直接使用
frp的程序上傳到服務器後
我們需要修改一下frps.ini
這個配置文檔
因為我們的服務器需要運行
frp的服務端
所以服務端的運行配置
我們得手動修改一下
怎麼配看一下官方文檔
其實最簡約的配置就只有默認的這一行
指定一個7000端口
但可選配置
我推薦幾個
一是token
設置一個連接認證
密碼不需要自己能記住
因為是一次性的設置
所以越複雜越好
二是配置一下內網穿透
相關數據的展示頁面
數據展示頁面默認的端口是7500
密碼一定要改一下
不然端口讓掃出來這個初始密碼
肯定是保不住的
改好後
一定要主動點保存
不然退出去就全沒了
改好後接著看文檔
第一步操作完
第二步啟動frps
.代表的是當前目錄
當前目錄指的就是frps所在的文件夾
所以我們用cd命令先定位到
frps的上級目錄
然後執行官網的啟動命令
提示權限不足
我們右鍵賦一下權限
然後重新執行
現在服務端就啟動成功了
但這是一個前台運行的模式
我們再把它設置成開機自動後台運行
ctrl+c 結束現在的進程
否則沒法輸入新命令
先執行第一行命令
這是一個給linux系統添加
開機啟動設置的命令
按字母i 進入插入模式
然後把啟動規則粘貼進來
按esc 退出插入模式
輸入命令:wq 保存並退出
開機規則添加好後把規則應用一下
至此
開機啟動就設置好了
輸入reboot 命令
重啟服務器
等待重啟的時候
到金山雲防火牆裡
把服務端剛才設置的幾個端口開放一下
建議新建一個frp的安全組
以後所有和frp相關的端口都
設置到這個分組裡
這樣隨著服務器裝的東西越來越多
我們的端口管理才不會混亂
新建了安全組以後
千萬要記住
還得把需要應用這個安全組的
服務器添加進來
到此全部和服務器相關的設置就都搞定了
現在開始搞NAS上的客戶端frpc
我先介紹一下這台nas的情況
因為我家裡是有公網ip的
所以為了模擬出沒公網ip的環境
視頻裡這個nas是
我虛擬機搭建的
在有公網ip的環境下
我設置一個端口轉發就能實現
外網訪問虛擬機的需求
但我為了模擬沒外網
所以路由器並沒有設置端口轉發
因此這台虛擬機搭建的NAS 是徹徹底底
屬於暗處的一台設備
下面我們進入正題
先在NAS上創建一個文件夾
用來存放frpc的配置文檔
之後配置文件
我們要和docker項目做掛載
frpc的配置模板
官方文檔裡也有範例
這裡需要注意一下官方的範例
type是http
但我建議大家使用tcp
並且在tcp模式下最後一行的自定義域
也可以直接刪掉
但我錄視頻的時候忘記刪了
雖然它不影響使用
服務器地址寫你frps的公網ip地址
因為我綁定了域名
所以寫域名
服務器端口寫frps裡
設置的端口默認是7000
token連接認證也是
frps裡設置的兩邊必須一樣
這部分是具體的應用設置
其實frp這個項目也是反向代理的原理
本地ip可以寫127.0.0.1
也可以直接寫內網ip
甚至你還能寫內網
其他設備的ip 一樣可以生效
內網端口我寫5001
這是dsm默認的https端口
因為我打算內網穿透後就直接用
域名走https訪問
遠程端口的服務器端口我寫443
這樣我通過域名加443端口
就等於訪問了虛擬機nas的5001
由於443是隱藏端口
訪問的時候可以不輸入
所以就實現了端口隱藏
最後一行直接刪掉
原因不重複了
當客戶端frpc配置文檔設置好後
我們開始設置客戶端程序
打開docker註冊表
搜frp
下載frpc這個項目
千萬別下載成frps
到映像裡等下載完成
名字隨便起個能分辨的
卷這裡把剛才修改的配置文檔掛載一下
裝載路徑照著我填
其餘不用動
直接下一步應用
frpc一定要確認一下
是否啟動成功了
因為frpc如果連接不上frps
或者有一些其他狀況
那麼frpc啟動後的
幾秒鐘就會自動關閉
所以這個時候排查問題就得靠日誌文件
比如最新的日誌
顯示代理成功開啟
說明frpc目前是正常運行狀態
比如我前面有一條錯誤日誌
顯示7000端口連接超時
那麼你就可以根據這個提示來排查問題了
7000端口既然超時
那就去檢查一下服務器7000
端口是不有問題
我當時之所以有這條錯誤
是因為7000端口忘記在
金山雲平台開放了
現在來試一下效果
輸入域名
提示不安全
我們域名的證書在群暉裡應用一下
如果不會上傳證書
視頻下方有我新手教學
刷新頁面
此時已經成功訪問虛擬機搭建的NAS了
能遠程訪問nas
只是我們最基本的需求
接下來教你怎麼訪問nas上的其他項目
以jellyfin為例
因為這個例子很經典
可以看到jellyfin
默認的地址是http的
如果我們用域名訪問
瀏覽器會強制走https
而這個項目它又不支持https
所以就導致無法遠程用域名訪問
所以這是一個核心問題
如果不解決nas上大量的http
項目你都沒法用
打開反向代理新增
描述起個能分辨的
這裡我把配置文檔打開
對著跟你講
新增一個配置
括號裡的配置名可以隨便寫
但一定不能重複
遠程端口443已經給了dsm用了
這裡我改成8096
本地端口5001改成8099
8099你可以隨便捏
只要沒被佔用就行
反向代理這邊協議選https
因為咱們要用https訪問
主機名寫localhost 本機的意思
端口寫8099
目的地協議選http
主機名還是localhost 指向自己
端口8096
這裡有點繞容易反應不過來
如果搞不懂視頻下方有我專門
講解反向代理的視頻
可以去學習一下
因為反向代理是玩NAS重點中的重點
搞不懂吃虧的地方非常多
現在把frpc上剛
設置的8096端口
在雲服務器平台上做個開放
差點忘了重啟docker
每次修改完frpc的
配置文檔都得去重啟
否則不生效
現在試試效果
又提示不安全
解決辦法和之前一樣
還是把證書設置一下
為什麼剛才設置證書的時候
沒有jellyfin的選項
因為jellyfin默認是http的網站
並不需要證書
只有你啟用了反向代理之後(轉換成https後)
才會出現設置證書的選項
此時刷新一下頁面
已經能成功訪問jellyfin與應用證書了
這裡有點慢
應該是因為虛擬機搭建的NAS
性能太弱
反向代理把http轉成https太慢導致的
最後一個大問題
登錄群暉手機應用
我們前頭為了用域名訪問dsm
已經把443映射給5001了
但是現在用域名登錄手機應用
你會發現沒法登錄
這是因為群暉手機app
要求你服務器地址必須是
域名:端口的形式
咱們把端口隱藏了之後
就沒法登錄手機app了
打開frpc配置文檔
新建一段配置
把服務器的5001也映射給5001
這樣服務器的443是nas的5001
服務器的5001同樣是nas的5001
然後慣例金山雲平台開放一下5001端口
nas上的docker重啟一下
回到手機app
服務器地址加上5001端口
再點登錄
此時成功進入文件管理
還有一個數據展示頁面
輸入服務器ip:7500 即可訪問
這個頁面即便你服務器綁定了域名
也沒法用域名:端口號訪問
因為用域名訪問瀏覽器就會走https
然後就會有證書問題
畢竟我們現在是nas上有證書
但服務器上沒證書
這個問題解決是可以解決
但時長關係這裡跳過
因為這個頁面也真不見得常用
最後p2p直通模式
官方說成功率低我也沒搞成功
所以不確定是軟件的問題
還是我自己的問題
這裡我簡單把我的理解說一下
如果有朋友願意嘗試
又看不懂官方文檔
或許對你有幫助
p2p直通模式最大的區別
在於想直通的兩個設備必須
都運行frpc
並且這兩個設備還區分誰是訪問者
所以這個模式我覺得要么
是有多套房子大佬
要么是在辦公室等固定地點可以用用
否則毫無便捷性可言
第一步在frps服務端增加7001端口
雲平台順便也開放一下7100端口
不過需要注意的是7100端口
是udp的協議
之前我們設置的端口都是tcp的協議
nas上複製這一段配置文檔
括號裡的名字我改成p2p
sk也是一個連接認證
因為直通模式端口是永久性對外
所有人開放的
所以設置一個sk驗證機制
保障安全
本地端口我改成5299
這是一個第三方百度雲的docker項目
另一台設備也要啟動frpc
我這裡用我的電腦
啟動一個windows版的frpc客戶端
配置文檔主要得注意
①角色設置成訪問者
②xtcp代理的名字別寫錯了
nas上配置文檔裡寫的p2p
所以服務名字這裡也寫p2p
綁定的ip寫我電腦的ip
綁定的端口隨便寫個沒佔用的
然後啟動電腦上的frpc客戶端
exe文件無法直接運行
這就啟動成功了
最後重啟nas上的frpc客戶端
重啟frps服務端
然後瀏覽器輸入
本機ip:5299
就等於訪問了直通模式下
另一台設備的5299端口
因為我沒有成功
所以不演示了
如果是我用法的問題
歡迎有經驗的朋友留言斧正
最後排坑指南
如果你路由器或軟路由上有frp的插件
那麼也可以通過路由器運行frpc
需要注意的是①留意版本號
比如我這個還是0.20的版本
而我們剛才安裝的已經是0.33了
版本差距太大
已經導致沒法使用了
②簡單設置
我在網上看到很多人反映沒法使用
所以建議使用自定義設置
把frpc.ini 裡的配置文檔
粘貼進來即可
好了
本期內容就全部結束了
求各種姿勢的支持
這個視頻做的真心太累了
我們下期再見吧