2008年11月24日 星期一

[Untangle] OpenVPN 設定

鼎鼎有名的 Untangle 應該不用詳加說明了吧?

它是一套 open source 且功能很強大的 UTM(Unified Threat Management),對於預算不夠卻想要建置 UTM 的單位,是很合適的選擇。

另外,如果想瞭解 VPN 是什麼,以及 OpenVPN 的相關概念,可以參考之前的幾篇文章:

  1. 虛擬私有網路(VPN)服務介紹

  2. Certificate Authority(CA) 簡介

  3. OpenVPN 簡介

 

要設定 Untangle 中的 OpenVPN,有幾個步驟是必須要完成的:

設定 OpenVPN 類型

在 Untangle 的 OpenVPN 設定中,可以將其設定為:

  1. VPN Server

    此設定可以讓 Untangle 的管理者自行決定開放哪些後方的電腦或是區域,以提供給外部的 openvpn client 可以連線進行存取相關資源。

  2. VPN Client

    此設定則是讓 Untangle 變成連線到其他 OpenVPN Server 的 client,至於可以透過 vpn tunnel 取得哪些資源,則是視對方管理者的設定而定。

【備註】若是有需求,Untangle 也可以同時設定為 VPN server 與 client 喔!

 

Generate Certificate

由於在 vpn tunnel 的資料傳輸需要加密,而加密需要金鑰,金鑰的驗證需要靠 CA。

因此在這個步驟中必須輸入相關資訊以產生 CA 的憑證。(此時 Untangle 扮演一台 Self-Signed CA,並自行產生憑證)

 

Add Address Pools

address pool 的設定就是要設定 VPN server(這裡指的是 Untangle) 配發給 vpn client 的 private IP address 範圍。

 

Add Exports

這個部份則是設定 VPN server(這裡指的是 Untangle) 要開放給外部 VPN client 可以連線的內部網段;要注意的是,這邊設定的不是 address pool 中設定的網段,而是內部實際的網段喔!

透過 IP address 與 Netmask 的設定,可以決定開放存取的範圍;基本上為了安全性考量,盡量還是僅開放確定要提供給 vpn client 存取的網段即可。

 

Add VPN Clients

在這個步驟中,要設定可以連線到 VPN server 的 client。

剛開始設定時,僅能設定 client name 並指定其屬於哪個 address pool。因為 address pool 可能不只一個,而多個 client 的話可能會分別屬於不同的 address pool。

若是有針對不同使用者群組來分成不同網段的話,就可以透過將 client 指定給不同的 address pool 的方式來達成。

 

Add VPN Sites

此功能是用於與其他的 VPN server 對連時的設定,目前還尚未用到,因此先略過,之後再來補充…

 

金鑰檔的傳輸

金鑰檔傳輸的方面,Untangle 可以用 E-Mail 或是 USB 的方式;但 E-Mail 只會給下載連結,但如果 Untangle Server 沒有 Public IP 以及 Domain Name 的話,根本就連不到,這時候可能就需要 USB 了!

但如果都不行呢? 那就只好進去終端機了…(預設 ssh 是沒開的,但可以到本機把服務打開!)

使用者的金鑰檔都存在「/usr/share/untangle/conf/openvpn/client-packages」資料夾中,檔名為「config-xxxx.zip」,其中 xxxx 為使用者名稱;知道檔案位置以後,就可以透過 scp 傳到自己的主機上囉!
 

 

連線至 OpenVPN server

取得金鑰檔之後,就可以透過 OpenVPN client 軟體連線至 VPN server 囉! 以 OpenVPN GUI 為例,要將金鑰檔案放到「C:\Program Files\OpenVPN\config」目錄中,連線時不需要輸入帳號密碼,連線後可從 VPN server 中取得一組虛擬 IP,並可透過 VPN tunnel 連線至內部主機。

 

問題處理

在設定完 OpenVPN 之後,卻發生了連上 OpenVPN server 後,無法連進 Internal Network 的問題,經過以下檢查:

  1. 檢查 Address Pools => 沒有問題

  2. 檢查 Exports => 也沒有問題

  3. Firewall => 根本都還沒安裝,所以不會是 firewall 的問題

  4. Packet Filter => 所有 VPN 相關的 Accept 選項統統勾選了

到底是為何呢? 當初也是百思不得其解;後來另外找台 NB 來測試,卻發現通了! 後來在原來的 client 上 run 一個 virtual machine,簡單裝個 Windows 2003,也通了!

我想原因應該是公司在電腦上安裝了會影響 OpenVPN 封包的軟體吧!

在 Untangle 的論壇上也有人有同樣情形,不過他是更換網路卡就好了!

所以可能會發生這樣情況的原因似乎不少,但設定照上面說明的就沒錯了! 

 

參考資料

  1. Untangle - OpenVPN

3 則留言:

  1. 他的金鑰檔裡面包含了需要的金鑰與所需的OpenVPN clinet端安裝程式,我是直接安裝完成後,在工具列上會出現紅色的VPN圖示,按右鍵選連線就連線就成功了,另外也可以設定連線密碼
    另外一個要注意的地方,是Untangle的主機名稱,會影響他包出來的VPN Client端設定檔,如果你是設定Untangle主機使用FQDN,並不是一個有效的FQDN,或是該主機處於區網內,導致該FQDN無法成功由外部網路解析到,就會連線失敗
    節覺得方法有二:a.將Untangle主機改名為外部有效的Public IP,如此產生出來的OpenVPN Client設定檔就會預設連線到外部Public IP而無須解析 b.在安裝好的VPN Client 工具列紅色圖示上按右鍵,修改設定檔的最後一行,改為連線到Untangle的public IP即可

    回覆刪除
  2. 嗯,謝謝您的意見,這個我知道,我也有把 IP 改為 Untangle server 的 IP。

    但還是不能連,至於為何會這樣,真正原因我也不清楚。

    但換了一台電腦(或是在虛擬機器上安裝)後,就正常了。

    回覆刪除
  3. 還有另外一個可能的狀況,在複製金鑰擋到USB key的過程中發生問題,我有一次因為這樣,安裝完成後一直無法連線,百思不得其解,後來重新複製一次才解決

    新的6.xx版以上好像因為這個問題,把USB key複製金鑰檔的功能取消了

    回覆刪除