這個部份說明如何在 ZeroShell 設定並啟用 VPN 的服務。
由於 ZeroShell 使用 OpenVPN 來建構 VPN 的服務,因此首先要先瞭解設定 OpenVPN 的需求;基本上大概就是幾個部份,分別是:
- 憑證(certificate)的管理與發放
- 使用者認證的方式
- VPN tunnel 的 routing 相關設定
憑證(certificate)的管理與發放
要連線到 OpenVPN server,每個 client 都需要兩個憑證,分別是:
- OpenVPN server 的 CA 憑證(裡面包含了 server 的 public key)
- client 專屬的 CA 憑證(裡面包含了 public key & private key)
CA 的部份,若是沒有上游的 CA 檔案可以匯入,ZeroShell 就會自己扮演 self-CA 的角色來簽署憑證,而 server private key 的部份,ZeroShell 會自行處理好。
1、安裝 OpenVPN client
這個部份需要下載 OpenVPN GUI 來安裝,安裝時並不需要進行額外的設定。
2、取得 OpenVPN server CA 憑證
首先進入 ZeroShell 的 web 登入畫面,點選「CA」:
接著會出現 CA 憑證的資訊,選擇輸出(Export)為「PEM」格式:
接著把下載的檔案放到「C:\Program Files\OpenVPN\config」目錄中即可。
3、增加使用者(client)
目前除了 admin 之外,沒有其他使用者,因此這邊要新增一位,選擇「USERS –> Users –> Add」:
接著輸入使用者相關資訊:(包含帳號、密碼 … 等等)
使用者相關資訊填寫完畢後,按下 Submit 後使用者就新增完成了!
4、取得 client CA 憑證
使用者新增完成後,隨即會出現憑證相關資訊:
同樣的,格式的部份選擇「PEM」,並按下「Export」將 client 的 CA 憑證匯出,將憑證修改名稱為「client.pem」,並放到「C:\Program Files\OpenVPN\config」目錄。
若是之後想要另外在輸出使用者憑證,可以選擇「USERS –> Users –> 使用者名稱 –> X509」,進入憑證資訊畫面進行輸出:
5、下載連線設定檔
設定檔的部份要到官方網站下載,下載後放入「C:\Program Files\OpenVPN\config」(以 Windows 為例,其他的 OS 的設定方式請參考官方網站的文件 - OpenVPN client configuration for Windows, Linux, Mac OS X and Windows Mobile for Pocket PC)
以下是設定檔的內容:
;OpenVPN server 位址
remote zeroshell.example.com 1194proto tcp
auth-user-pass
;OpenVPN server CA 憑證存放位置
ca CA.pem;OpenVPN client 憑證存放位置
;cert client.pem
;key client.pemcomp-lzo
verb 3
mute 20
resolv-retry infinite
nobind
client
dev tap
persist-key
persist-tun
但為了符合我們的實驗環境設定,修改成如下:
;OpenVPN server 位址
remote 10.1.16.222 1194proto tcp
auth-user-pass
;OpenVPN server CA 憑證存放位置
ca CA.pem;OpenVPN client 憑證存放位置
cert client.pem
key client.pemcomp-lzo
verb 3
mute 20
resolv-retry infinite
nobind
client
dev tap
persist-key
persist-tun
如此一來就完成了! 透過右下角的 OpenVPN GUI 圖示按右鍵,選擇「zeroshell –> Connect」,輸入 client 的帳號密碼(在新增 user 時所輸入的帳號密碼),就可以順利連到 OpenVPN server 囉! (前提是 OpenVPN server 的服務有正確啟動)
VPN 服務的設定
這個部份則包含了之前提到的兩點:
- 使用者認證的方式
- VPN tunnel 的 routing 相關設定
在 ZeroShell 系統中選擇「NETWORK –> VPN」:
上面個畫面中有幾個需要注意的部份:
- 通訊協定與 port number
這個部份預設為 TCP 1194,若有更動的話,設定檔也必須連同更動。
- 認證方式
基本上搭配憑證的話,選擇「Only X.509 Certificate」即可,除非另外要搭配 Kerberos 或是 RADIUS 的密碼驗證,才需要選擇有 Password 的選項。
- VPN client 的網段設定
這部份的設定決定 VPN client 連線後所取得的 IP,而 routing table 的部份,基本上 ZeroShell 會 push 給 client,因此當 client 取得新的 IP 後,連同 routing table 也會更著變動。
- 密碼認證
在本實驗架構中並無搭配 Kerberos 或是 RADIUS,因此省略。
最後記得勾選「Enabled」並按下「Save」儲存設定,服務才會啟動。
連線前後 routing table 的改變
上面有提到,當連線到 VPN server 之後,VPN client 的 routing table 會隨之改變,以便可以連到內部網路中。
以下是 VPN client 原本的 routing table:
從上圖看得到 Default Gateway 的設定還是在網路卡上的設定。
但是當 VPN tunnel 建立起來後,routing table 就會變更如下:
除了 Default Gateway 有變更外,也會額外附加一些由 VPN server push 過來的 routing 設定。
比較需要注意的是,Default Gateway 被改變了,因此到 192.168.1.0/24 與 192.168.100.0/24 兩個網段的封包,由於不在 routing table 內,因此都會改走 Default Gateway,而這些封包都會自動由 ZeroShell 導引至正確的網路介面。
沒有留言:
張貼留言