這篇給我自己紀錄用的,我的 OpenWRT 上裝有 OpenVPN Client,這樣直接利用路由器連回工作場域所有連這台路由器 WiFi 的設備都可以同時進入內網,雖然 OpenWRT 有提供網頁介面控制 VPN 開關,但!這樣每次還要開網頁、打密碼、選擇頁籤等等,我就懶!這樣我也嫌麻煩,我想要按一個按鈕就可以開/關 VPN,於是便有這篇紀錄了🤣
1. 利用 Command Line 控制 OpenVPN
首先我需要先利用 CLI 設定 OpenVPN 的方法,上網查資料後找到下面這樣的格式可以啟動 OpenVPN 並將結果輸出到指定 log 檔。
若 OpenWRT 沒有安裝 pkill 則用 opkg install procps-ng-pkill 安裝
|
|
而利用 `pkill`` 可以終止 openVPN 服務
|
|
寫成 Shell Script
有了以上關鍵的指令後,借助 ChatGPT 的力量,腳本就這樣完成了!
|
|
測試了一下確實可以開關 OpenVPN! 接著進入下一步驟。
桌面端控制程式
原先打算在 OpenWRT 上面運行 API Server 去接受外來指令在呼叫腳本執行,但之前的經驗這樣防火牆好像不好處理而且也太費工,因此決定直接用 SSH 協定傳送指令就好,至於要用什麼傳呢? Python GUI 打包成 App bundle,不行,封裝太麻煩;利用 Swift 寫原生 MacOS App 呢? 不行,我還不太會寫,最後想到,Apple Shortcut 啊!蘋果內建的捷徑 App 就可以執行 SSH 指令了,拉拉方塊,最後長這樣。
除了基本的啟動/停止/重啟之外我還加入了開啟 log file 的選項,如果要基本偵錯可以不用 SSH 進去。
完成!
將捷徑加入選單列後便可以直接在選單列使用捷徑開關 OpenWRT 的 VPN! 我覺得唯一的問題是密碼寫死在裡面這樣有點不太安全,但自己的電腦又為了方便就將就一下,或是之後改成利用憑證登入~