
前言
在家裡裝好頂樓節點後,經常需要從外網存取Meshsense,例如使用自己的節點進行訊號測試,
或者是臨時管理、發訊等。
雖然可以使用VPN或者Port-Forwding等方式,但前者需要在每個裝置都安裝客戶端並設定憑證,後者則是有非常嚴重的安全性問題且需要有公網IP及一定的網路知識。
本文包含如何設定Meshsense網頁存取以及如何從公網訪問兩個部份。
A.Meshsense安裝
Meshsense可以安裝在Windows、Mac、Linux(包含樹梅派)上,所有版本都支持遠端存取
Mac的安裝流程與Windows差不多加上本人沒有Mac所以這邊僅有Linux與Windows的安裝流程
Windows平台
1.下載檔案
先至官網下載.exe安裝檔
連結:https://affirmatech.com/download/meshsense/meshsense-x64.exe
執行安裝程式後即可直接使用
Linux平台(GUI)
1.下載檔案
先至官網下載.appimage程式檔
連結:https://affirmatech.com/download/meshsense/meshsense-x86_64.AppImage
然後直接在檔案管理器內點開執行就可
2.集成到系統內(可選)
可以使用appimageluncher集成到系統中(Debian/Ubuntu)
連結:https://github.com/TheAssassin/AppImageLauncher
下載.deb後使用dpkg或apt安裝
//導航到下載檔案的資料夾
cd ~/Downloads
//確認檔案名稱
ls |grep appimageluncher
//安裝套件
sudo apt install ./{上一步列出來的檔案名稱}

安裝完後直接重新點開appimage就會跳出是否要集成進系統的提示了
Linux平台(CLI)
1.下載檔案
用wget從官方網站下載檔案並賦予執行權限
X86系統(一般電腦)
cd ~
wget https://affirmatech.com/download/meshsense/meshsense-x86_64.AppImage
chmod +x meshsense-x86_64.AppImage
arm64系統(樹梅派等)
cd ~
wget https://affirmatech.com/download/meshsense/meshsense-beta-arm64.AppImage
chmod +x meshsense-beta-arm64.AppImage
2.安裝依賴套件
用apt安裝套件
sudo apt update
sudo apt install libatk-bridge2.0-0 libcups2 libgdk-pixbuf-2.0-0 libgtk-3-0 libgbm1 xvfb -y
3.設定環境變數
設定:
address: 節點的內網IP (要先將節點連接上wifi)
access key:在網頁上管理節點用的密碼
export port:網頁的Http連接埠 預設5920 沒有特殊需求建議不動
export ADDRESS={Mesh節點的內網IP}
export ACCESS_KEY={密碼}
export PORT=5920
4.使用tmux套件獨立shell執行
安裝tmux
sudo apt update && sudo apt install tmux
tmux基本操作:
創建新視窗 ::tmux
從視窗內退出: ctrl+b 後按d
回到視窗:tmux attach
5.執行
先進入tmux視窗
tmux
然後以headless mode啟動meshsense
dbus-run-session xvfb-run ./meshsense-arm64.AppImage --headless \
--disable-gpu --in-process-gpu --disable-software-rasterizer
要重啟的話可以使用ctrl+c打斷進程
確認沒有錯誤之後 先ctrl+b再按d退出讓他在背景跑
B.內網存取
確認內網IP
1.Windows&Mac
打開CMD/Powershell (MAC打開終端機)
輸入ipconfig並記下電腦的IP
2.Linux(GUI/CLI通用)
打開shell 輸入ip route 記住default via後面的IP

內網存取
1.存取網頁
打開瀏覽器 輸入 http://{剛剛看到的IP}:5920
由於是http所以顯示不安全是正常的 如果開純https的瀏覽器會無法瀏覽

2.確認管理存取
點開右上角齒輪圖示進入設定 輸入在本機設定好的Access Key
點選apply後應該會看到畫面上多了不少選項 沒有的話就是密碼錯誤了

C.外網存取
基於安全性因素,直接將管理頁面公佈出去外網且未加密/增加身份驗證流程是十分危險的
所以這邊使用最簡易的Cloudflare Proxy+ Zero Trust (賽博大善人 以上都是免費的)
但前提是必須在Cloudflare託管一個域名
如果沒有的話也可以購買一個 這邊推薦直接在Cloudflare購買.xyz或.com 一年大約五百台幣
就能享有自己的域名及Cloudflare的海量免費資源
購買域名及託管至Cloudflare的流程網路上有許多文章 這邊不再贅述。
內網穿透及HTTPS
1.設定Cloudflared客戶端
進入Cloudflare Zero Trust管理頁面
https://one.dash.cloudflare.com
選擇Network>Tunnel>創建新隧道

選擇左邊的Cloudflared

給它一個你能辨識用途的名稱

隨後選擇對應的平台 按照指示安裝Cloudflared客戶端

設定好客戶端後 回到管理頁面的路由(Route)界面
子域名(Subdomain)就設定一個易於辨識的名稱 建議越短越好 且只能使用小寫英數字,橫槓與下劃線
後面的域名(Domain)選擇自己要用的(如果帳號下只有一個域名 這邊應該只有一個選項)
路徑(PATH)空白就可 因為meshsense內容都放在根目錄
Service下方的協議與URL照填就好 注意是HTTP而非HTTPS

2.檢查連線狀態
全部都設定好後回到第一個頁面 應該會顯示status是Healthy

此時在瀏覽器輸入https://子網域.你的網域/ 應該就可以連上meshsense了

身份驗證及過濾規則
雖然使用了Cloudflare的Proxy可以阻擋簡單的攻擊,但開放任何人存取仍然不太適合meshsense這種應用,所以這邊使用Cloudflare Access繼續為網頁增加身份驗證功能。
1.設定Google登入憑證
進入Zero Trust管理平台 下方設定(Settings)>登入方式(Login method)>Google (不是workspace)
隨後按照右邊的提示到GCP創建好應用憑證後把app ID跟Client Secret貼過來就可以直接儲存了

2.建立過濾規則
前往原則>新增原則
名稱自訂一個方便辨識的,動作(Action)選擇允許(Allow)、
工作階段(Session duration)選擇與應用相同(Same as application)
在第一個”包含”(Include)的原則裡面可以設定為自己的Gmail 可設定多組Gmail如果需要多人訪問
下方推薦新增一個僅限台灣登入的原則
照圖上選擇”新增需求” “country” “Taiwan”即可
完成後記得捲動到頁面底部選擇儲存

3.建立應用
選擇應用程式(Appication)>新增應用程式

選擇自主託管(Self-Hosted)

應用名稱自行命名、工作階段持續時間建議6h
下方選擇新增公開主機名稱,子網域(Subdomain)與域名(Domain)必須與前面設定網頁存取時設定的一樣

下方Access原則選擇上一步設定的Email過濾規則
登入方式則是單選Google
設定好後到最底部儲存即可

4.測試登入
使用手機或瀏覽器無痕模式重新訪問meshsense網頁
應該會跳出這個畫面,使用設定規則時加入的Gmail登入,即可存取meshsense

评论(0)
暂无评论