Raspberry Pi是目前非常熱門的開放硬體,價格低廉且用途廣泛,對此本文將示範如何在Raspberry Pi上使用OpenWRT以最低的成本架設基於OpenConnect的SSL VPN。
接著會安裝luci-app-ocserv套件,它提供了ocserv在網頁進行設定的功能,以減少設定時的困難度。順帶說明一下,luci是OpenWRT的網路介面元件。可以利用網頁介面進行設定,以減少手動進行相關設定時的痛苦。
點選Sytem裡面的Software,然後點選Update lists以進行相關套件資訊的更新(筆者發現在重開機後若要安裝軟體,需要先做Update,否則會找不到軟體)。
在更新後,目前的位置應該是在Actions裡。在Filter的部分輸入ocserv,並按下〔Find package〕按鈕,如圖8所示。找到ocserv及luci-app-ocserver,依序點選前方的Install連結進行安裝。
|
▲圖8 安裝SSL VPN相關套件。 |
安裝完成後,上方的選單會出現Services選項,點進去後,可以看到OpenConnect VPN的按鈕。到此前置作業完成,接著來完成OpenWRT端Firewall的相關設定。
設定Interface及Firwall Zone
為了便於日後管理,此處將SSL VPN對應的介面建立一個獨立的Firewall Zone,並賦予其獨立的Interface。
先點選Network裡面的Interface,新增一筆名為vpn的值,Protocol的部分選擇Unmanaged,而Cover the following interface指定為Custom interface,並且自行輸入vpns+,最後點選〔Submit〕送出,操作過程如圖9所示。
|
▲圖9 新增vpn interface。 |
然後點選Network裡面的Firewall,找到Zones的部分(大約在畫面的最下方),裡面有一個〔Add〕按鈕,點選它來新增一個Zone。Name的部分輸入vpn,在Covered network方面則選擇vpn(把滑鼠移到右邊的網卡插線圖示上,可以看出它的Ethernet adapter是vpns+),如圖10所示。
|
▲圖10 新增vpn zone。 |
緊接著設定Inter-Zone Forwarding,此設定的目的是限制封包所能流動的區域,找到Allow forward to destination zones設定項目,將lan勾選。讓vpn zone的流量可以往lan zone通過,如圖11所示。
|
▲圖11 設定Inter-Zone Forwarding。 |
接著不要忘記按下〔Save & Apply〕。回到General Setting,調整LAN zone forwarding的設定。這裡選擇lan(左邊綠色方塊裡有lan的字樣),並按下〔Edit〕按鈕,如圖12所示。
|
▲圖12 編輯lan zone設定。 |
在Allow forward to destination的部分,則勾選VPN,如圖13所示。
|
▲圖13 設定lan zone的Inter-Zone Forwarding。 |
最後,再按一下〔Save & Apply〕按鈕套用剛剛的設定。
筆者希望能做到全網頁化作業,但有一個部分實在沒有辦法透過網頁完成,請讀者自行以SSH登入OpenWRT並編輯「/etc/config/firewall」檔的內容。
找到以下這一段,並新增粗字那一行。如果沒有做這個動作的話,在建立連線後,用戶端只能連線至OpenWRT,而無法連線其他設備或其他網段。最後完成的結果將如圖14所示。
|
▲圖14 Zones相關設定。 |
OpenConnect VPN—Server端相關設定
點選Services→OpenConnect VPN,將會進入General Settings。Enable server記得要打勾,好讓Server啟動。Firwall Zone設定預設為lan,請改為vpn。Port的部分由於想要偽裝成HTTPS的封包,因此填入443(預設是4443)。
VPN IPv4-Network-Address指的是建立連線之後取得的IP網段,請自行調整,在此使用預設的192.168.100.1。關於DNS servers部分,如果建立連線後需要以hostname或hostname + domain name連接至內部主機,那麼請自行修改為內部的DNS伺服器。