之前文章已經介紹過如何透過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查看連線建立時的
狀態: