Raspberry OpenWRT Linux SSH VPN 樹莓派

實戰Raspberry Pi第三回 架設兩站間SSL VPN

2015-09-10
之前文章已經介紹過如何透過OpenWRT來建立Remote Access SSL VPN。本文將進一步介紹如何透過OpenWRT建立Site to Site的SSL VPN,並且會分別介紹如何在CLI介面及GUI介面中建立SSL VPN。
同樣依序輸入即可,使用者名稱「klting」請自行代換為需求名稱。

接著會自動建立連線,當看到以下訊息時,就代表連線已經成功建立了。


確認連線狀態

建立連線後,再次登入Client,進行連線驗證。此時原先Client端的前景畫面會停留在OpenConnect建立連線後的畫面,無法進行操作,因此需要開啟新視窗登入。

登入之後,立即ping 192.168.1.254,以確認連線是否已成功建立:


同樣地,檢查路由表,確認DNS Server的位址8.8.8.8以及192.168.1.0的路由表都是往邏輯介面tun0傳送:


但根據基礎設定產生的連線,只能讓Client端裝置與Server裝置建立連線,無法讓Client裝置下轄的電腦透過此連線進行資料傳輸(沒有產生Reverse Route,Server端不曉得Client端還有哪些IP網段),因此需要再調整Server端的設定檔「/etc/ocserv/ocserv.conf.template」。

設定Reverse Route

先編輯「/etc/ocserv/ocserv.conf.template」設定檔,找到「config-per-user = /etc/ocserv/config-per-user/」,刪除最前方的#號,讓它載入個別使用者的設定。接著,新增以下這一行(其中的192.168.2.0/24請自行代換為Client端裝置的LAN IP網段):


接著,編輯使用者個別設定檔「/etc/ocserv/config-per-user/klting」,新增以下這一行:


這裡的klting是該使用者的帳號,請自行代換為讀者使用的帳號,另外這邊的指令是iroute,而不是route,設定時請務必小心。

而OpenConnect Server在route-add-cmd使用ip指令來新增路由表,因此必須確認已經安裝ip package。可以使用「ip route show」指令做檢查,若有輸出就代表已經安裝。

OpenWRT預設是沒有安裝的,因此必須使用以下的指令進行安裝:


接著,將ocserv重啟,讓它讀取新的設定檔:


按照ocserv.conf.template的說明,有些人可能會誤以為只要在「/etc/ocserv/config-per-user/klting」新增「route-add-cmd = "ip route add 192.168.2.0/24 dev vpns0"」就可以。

但筆者測試時怎麼測就是不行,甚至還去找ocserv的原始碼來看,以確認是不是route-add-cmd這個指令並未實作,但該功能確實有實作。後來是安裝了syslog-ng套件後,在「/var/log/messages」檔案中看到下列字串,這才確認這個功能並不是加在使用者帳號中的。


因此,也建議安裝syslog-ng模組,便於後續查修,所以接著執行如下的指令:


確認Reverse Route產生

接著,回到Client端重新建立連線,並確認Server端的路由表中有192.168.2.0出現:


建立連線後,在Server端以ping的方式進行測試,以確認Reverse Route在Server端是否生效:


減少輸入參數

在建立連線時,OpenConnect會提示沒有匯入CA憑證,可以使用--no-cert-check指令來減少所需輸入的項次:


在此,設定不進行憑證驗證(--no-cert-check),並提供使用者名稱(--user=klting)。若以此指令進行連線,只需要輸入密碼即可。

檢查連線狀態

在連線建立之後,使用occtl查看連線建立時的 狀態:



追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!