:::

pfSense 安裝dns-server的方法

pfSense 安裝dns-server的方法

2011-08-09_230254 logo

我最近研究以pfSense架設路由器,並安裝dns-server套件的方法。由於套件語法有點問題,安裝會發生「 Parse error: syntax error, unexpected '&', expecting T_VARIABLE or '$' in /usr/local/pkg/tinydns.inc on line 880 」錯誤。我想到一種方法可以繞過錯誤,雖然作法不是很漂亮,不過還是記錄一下。


pfSense簡介

pfSense是一套具備路由器、防火牆等多功能的網管系統。它是基於FreeBSD維基百科)、可以空機安裝的完整系統,也是開放原始碼可供人自由下載、安裝。pfSense具備網頁管理介面,可直接用瀏覽器控制、監控系統狀況。而且可以安裝各種套件(package)擴充pfSense的功能。

kidz在Mobile01上有好幾篇介紹pfSense安裝與設定的教學,想知道到如何使用pfSense的人可以參考看看。


pfSense安裝dns-server失敗

2011-08-12_161415 package list - draw

我使用的pfSense是1.2.3版。而pfSense的套件之一「dns-server」是搭配TinyDNS軟體修改而成的整合套件,目前版本是1.0.6.14。

2011-08-12_161601 error message

但是安裝dns-server的過程會發生錯誤,套件無法順利安裝。錯誤訊息寫在網頁最下方,有時候會不小心略過。訊息內容為:

Parse error: syntax error, unexpected '&', expecting T_VARIABLE or '$' in /usr/local/pkg/tinydns.inc on line 880

這個意思是,/usr/local/pkg/tinydns.inc的880行程式錯誤。

我下載該程式來檢查,原本的880行附近的程式如下(878行到884行):

/* Uncompress the v6 IP so we have all of the sections we need */
$fullip = explode(":", Net_IPv6::uncompress($ip));

/* Expand even more so we have a digit in every possible place */
foreach ($fullip as & $q) {
$q = sprintf("%04s", $q);
}

foreach裡面多了一個「&」,我以紅字粗體標示,這就是發生錯誤的原因。

修正後878行到884行的程式如下:

/* Uncompress the v6 IP so we have all of the sections we need */
$fullip = explode(":", Net_IPv6::uncompress($ip));

/* Expand even more so we have a digit in every possible place */
foreach ($fullip as $q) {
$q = sprintf("%04s", $q);
}

我把修正後檔案上傳到SkyDrive供人下載,網址如下:

雖然我想把這個錯誤報告回報給pfSense,但是論壇不知為何不能註冊,甚至有人在論壇上已經提過相同的問題了,但還是沒有解決。期待好心人士能夠幫忙反應一下吧。


修正pfSense安裝dns-server

不過光是修正檔案沒有用,這樣還是無法安裝到pfSense中。於是我想到一個替代的方法:在pfSense下載tinydns.inc之後、準備要安裝dns-server之前,將tinydns.inc替換成修正版本。

這樣不是很漂亮,但至少可以讓它安裝成功。而短時間內我也找不到更漂亮的方法了。

以下介紹操作步驟:

1. 下載tinydns.inc修正檔、開啟pfSense的SSH

tinydns.inc的修正檔網址如上所述,請從SkyDrive空間下載。

2011-08-12_171807 ssh

傳送檔案的方法,我使用的是sftp,這要先開啟pfSense的SSH通訊協定才行。設定的位置是在Adcanced中的Secure Shell,請勾選「Enable Secure Shell」,再按下「Save」按鈕儲存。

試著用FileZilla Client之類的軟體以SFTP連線看看,順利的話應該能夠連到pfSense。

2. 準備sftp連線

2011-08-12_162325 upload tinydns.inc - mask

先準備好FileZilla中本機目錄與遠端目錄的路徑。左邊是你的本機目錄,也就是要上傳的tinydns.inc修正檔的位置;右邊則是pfSense檔案系統中存放tinydns.inc的位置, 預設是在/usr/local/pkg目錄底下。

待會就要上傳了,這個視窗先放著待命。

3. pfSense開始安裝套件

2011-08-12_164334 download

回到pfSense的套件列表,並安裝dns-server。

請觀察它的安裝訊息,確定「Additional files… tinynds.inc」訊息已經處理完畢(通常很快,這是第一個下載的檔案),然後馬上進入下個步驟。

4. 上傳修正版tinydns.inc

再回到FileZilla,上傳tinydns.inc。

5. dns-server安裝成功

2011-08-12_172544 installation complated

然後安裝過程就會順利地進行,看到「Installation completed」的訊息,表示安裝已經成功。


使用dns-server

 2011-08-09_231223 DNS Server

如果要設定dns-server,你可以從導覽列「Services」中的「DNS Server」進入。

2011-08-09_231258 DNS Server Setting

設定內容也挺複雜的,我還要研究看看就是了。


結語

pfSense感覺還不錯用,很容易上手。介面其實有簡體中文版本,但這樣子常常會被翻譯術語混淆,所以我個人比較喜歡用英文版。

這個方法不是很漂亮,如果有更好的作法,歡迎大家建議指正,感謝。

(more...)

學校實驗室的伺服器虛擬化方案評比(三):綜合比較

學校實驗室的伺服器虛擬化方案評比(三):綜合比較

5BE1364F-74A0-9288-304C-124E9DD7732Awallpaper

經過前面個別測試安裝六個伺服器虛擬化方案之後,接下來我先綜合比較各個方案的功能,再來決定要選擇哪個方案。


綜合比較

由於評比的時間並不長、使用的功能也沒有很完整地評估,在此我只看成本、虛擬化技術、安裝、管理介面安裝、管理介面操作、虛擬機器網路、虛擬裝置支援等七個面向。

成本

由於我是先以免費或開放原始碼方案來挑選,所以這七個方案基本上都可以免費取得。

其中,下載、安裝之後可以自由使用的是OpenNode、Proxmox VE。它們都是開放原始碼軟體,各基於不同的Linxu發佈版整合而成。

Oracle VM也是可以免費取得、安裝,應該也是不需要輸入認證序號就能使用。

VirtualBox也有OSE(開放原始碼版本),但通常大家用的都是具有VRDP跟USB 2.0支援的普通版本,在商業使用上需要收費,個人及教育用途則沒有任何限制。

VMware ESXi跟Citrix XenServer都要申請免費的序號。其中XenServer每年都要申請一次;ESXi只要輸入一次序號就可以永久使用,但輸入序號後就從60天評估版降低到免費版,功能有所縮減。

虛擬化技術

這幾個伺服器虛擬化方案往往整合了多種虛擬化技術,以因應不同的虛擬化需求。然而,在沒有VT-x / AMD-V硬體虛擬化技術的輔助下,各方案可以支援客端電腦就有很大的差別。

即使沒有VT-x / AMD-V也能進行全虛擬化的VirtualBox以及半虛擬化技術的VMware ESXi(感謝網友指正,關於全虛擬與半虛擬技術詳細可以參考TKG的說明)都可以安裝Windows作業系統,可以支援大多數的作業系統。其中,ESXi是空機安裝特製的伺服器,比起VirtualBox容易受到主端電腦作業系統影響,ESXi的效率較高。

沒有VT-x / AMD-V輔助,只能使用半虛擬化的方案為Citrix XenServer、Oracle VM。在半虛擬化的限制之下,客端電腦也僅能安裝特定版本的Linux而已,而且通常搭配要安裝修改核心的工具才能發揮客端電腦的真正效能。儘管如此,效能還是比全虛擬化還要高些。

OpenVZ技術的容器虛擬化不需要VT-x / AMD-V的輔助,OpenNode、Proxmox這兩個方案也只能製作特定版本的Linux客端電腦。效能運作較高,從虛擬裝置/樣板建立虛擬機器的手續也相當簡單。

反過來說,如果實體機器有VT-x / AMD-V技術支援的話,那麼採用Xen與KVM技術的方案就可以使用全虛擬化,全部就都能安裝Windows作業系統,因此虛擬化技術的差異就不是很大了。

安裝

空機安裝是建立虛擬電腦伺服器的最佳方案,你可以讓主端電腦能夠在預先配置好的最佳狀態中執行虛擬機器。提供空機安裝的方案有VMware ESXi、Citrix XenServer、OpenNode、Proxmox VE、Oracle VM。

大部分的方案也同時提供安裝檔供人安裝於特定作業系統中,VirtualBox是了個人用的桌面虛擬化應用程式,因此僅有提供安裝檔,可以安裝於Windows與多數Linux中。但是由於安裝VirtualBox之前,必須要先準備好作業系統才能安裝Virtual,配置上比較麻煩。

管理介面安裝

一般來說,管理虛擬機器的工作都不會在本機的電腦螢幕上進行,而是由遠端的電腦(通常是Windows作業系統)來管理。各方案的管理介面都有所不同,光是在安裝、配置管理介面的方式,就有很大的差異。

安裝完虛擬機器軟體之後,就能從瀏覽器直接啟用是最簡單的作法,這是Proxmox VE的特色。

安裝完虛擬機器之後,需要再安裝額外的客戶端管理程式。Citrix XenServer、VMware ESXi跟VirtualBox都是如此。其中VirtualBox的遠端管理程式是裝在伺服器上的網站系統phpVritualBox,比起前兩者的Windows安裝精靈來說安裝起來更複雜。

為了能達到進階的管理,許多方案採用建立獨立管理伺服器的方式。你可以將管理伺服器建置成虛擬機器,不過要注意到管理伺服器的硬體要求通常不低。OpenNode跟OracleVM都要建立管理伺服器,才能讓管理者遠端控制虛擬機器。其中我在OracleVM的管理伺服器時失敗了,也無從評估OracleVM的使用細節。

管理介面操作

好的管理介面能夠控制主端電腦的開關機與網路、控制虛擬機器的建立與設定、以及各種效能的監控。更重要的是,操作起來也要流暢。VMware ESXi、Citrix XenServer與Proxmox VE都有達到基本的要求。其中Proxmox VE的操作方式與前兩者有很大的差異,但是至少操作上都沒什麼問題,整合度也相當高。

相反地,VirtualBox的phpVirtualBox與OpenNode的OMS操作起來十分不流暢,OracleVM管理伺服器建置失敗,因此都不合格。

虛擬機器網路

本來我以為各種虛擬化方案都會提供NAT模式,但事實上似乎只有個人用的桌面虛擬化應用才會有這樣的功能。

在這次評比的方案中,只有VirtualBox有提供NAT與各種常見的網路模式,其他五個方案都只有虛擬內部網路與橋接模式。

虛擬裝置 / 樣板支援

有時候我們建立虛擬機器的目的只是為了架一些常見的網站,像是WordPress、Joomla、DSpace(這在我們實驗室還蠻常見的),而不是真的想要搞一台Linux主機或Windows主機讓你慢慢設定、調整。

虛擬裝置 / 樣板的應用,可以讓你快速建立起需要的虛擬機器。其中虛擬裝置支援數量最多的應該就是普遍受到市場歡迎的VMware系列,雖然我不清楚是不是ESXi也可以使用,但應該是可以吧?而VirtualBox兼容VMware的虛擬機器,所以一樣可以使用VMware的虛擬裝置。

如果是要求簡單、高效率的虛擬裝置,Proxomox也提供了一系列各種網站的虛擬裝置可供下載取用,而且安裝也是十分方便。

OpenNode也有OpenVZ提供的Linux樣板,可以建立各種Linux發佈版,但是空空的作業系統還是不如已經有內建特定應用的虛擬裝置來得方便。

Citrix XenServer跟Oracle VM也有樣板,但是我並沒有成功使用過,因此評語保留。


最終決定

經過以上考量之後,最後我選擇的是Proxmox VE。選擇的理由是基於以下幾點:

  • 適合舊硬體:老舊伺服器只有記憶體2G、硬碟空間256GB,不適合安裝需要吃太多資源的Windows,還是建立Linux虛擬機器拿來架架網站即可。
  • 簡單高效率:Proxmox VE整合度相當高、操作步驟簡單、OpenVZ可以動態調整虛擬機器的資源。
  • 快速建置:當有人需要快速建立常見的網站時,Proxmox VE是最簡單的選擇。

其他議題

預設網路環境有NAT路由器比較好

經過這次比較之後,我發現大多數的伺服器虛擬化方案都需要直接配給IP。然而考量到高可用、負載平衡等機制的需求上,我想他們應該都是配置在一個內部網路中,以DHCP配置內部IP、透過NAT路由器來連線。

原本我這邊的網路環境是要配給獨立的公開IP,但經過這次架設的經驗之後,我也想用pfSense架一個NAT路由器了。

管理介面的安全性

管理虛擬機器時大多都是在遠端電腦進行,但這個遠端電腦可不能毫無限制地讓任何電腦都可以連線,我們可不希望有莫名其妙的人嘗試連線到虛擬機器搞破壞。

雖然管理介面都有帳號與密碼的認證機制,但這只是防君子不防小人,真的有心的駭客可以用暴力法猜測密碼,帳號密碼被猜到的可能性依然存在。

最好的方法還是限定內部網路或特定IP能夠連線到虛擬機器伺服器進行管理,防止不認識的電腦嘗試登入,這樣就能大幅提高安全性。

大部分防火牆都能做到這種限制,例如iptables。有些基於Linux的方案,例如OpenNode,就能夠安裝iptables來提高安全性。其他的方案能不能做到,則還需要謹慎的評估。


結語

終於寫完啦!粗淺的評估提供給他人的價值不多,但是對自己來說,這是學習虛擬化技術的一個成果交代。

然後,就繼續鑽研吧。

題外話,我好想要一台有VT-x / AMD-V的伺服器啊……

(more...)

學校實驗室的伺服器虛擬化方案評比(二):方案比較

學校實驗室的伺服器虛擬化方案評比(二):方案比較

image

我先從維基百科的虛擬機器比較表格中KVM管理工具選擇伺服器虛擬化方案,再以免費、開放原始碼、客端電腦可運作的作業系統等條件篩選,然後再選擇活躍的、知名度較高的方案來安裝,並用用看各種功能。由於時間並不多,我主要關注安裝、管理、虛擬機器的建立與網路設定等部分功能,並沒有將每個方案的所有細節都摸透。詳細請看下面各方案的評比內容。

這一週多的時間內,我評比了7個方案,包括VirtualBoxHyper-V Server 2008 R2VMware ESXiCitrix XenServerOpenNodeProxmox VEOracle VM,不過實際安裝到能夠成功使用的只有其中5個而已。以下一一介紹:


VirtualBox

2011-08-06_165936 VirutalBox Version

簡介

Oracle VirtualBox是由德國InnoTek軟體公司出品的虛擬機器軟體,現在則由甲骨文公司進行開發,是甲骨文公司xVM虛擬化平臺技術的一部份。它提供使用者在32位元或64位元的Windows、Solaris及Linux 作業系統上虛擬其它x86的作業系統。使用者可以在VirtualBox上安裝並且執行Solaris、Windows、DOS、Linux、OS/2 Warp、OpenBSD及FreeBSD等作業系統作為客端電腦。

與同性質的VMware及Virtual PC比較下,VirtualBox獨到之處包括遠端桌面協定(RDP)、iSCSI及USB的支援,VirtualBox在客端電腦上已可以支援USB 2.0的硬體裝置,不過要安裝 virtualbox extension pack.。

VirtualBox跟Oracle VM Server的差異在於,前者是個人用的桌面虛擬化軟體,後者才是伺服器虛擬化的用途。因此跟以下我安裝的幾個伺服器虛擬化方案比起來,VirtualBox的功能有很大的差異。

豐富的網路設定

對我來說,我覺得VirtualBox最好用的地方在於網路設定:NAT模式。VirtualBox預設使用了NAT模式(Network Address Translation),客端電腦僅需要以DHCP設定網卡,就能從VirtualBox取得IP、連到網路,而幾乎所有客端電腦作業系統都預設採用這種方式連上網路。比起大多數虛擬機器都僅有提供橋接模式(Bridged Networking),安裝客端電腦時還需要特定配給IP、做額外的網路設定,擁有NAT模式的VirtualBox架設虛擬機器時就方便許多。

桌面虛擬化應用

此外,VirtualBox的3D加速與無接縫(seamless windows)功能相當實用,可以將模擬出來的虛擬機器當做Windows中的一個應用程式來使用。但是這個特色主要是用於個人的桌面虛擬化應用的目的,並不是伺服器虛擬化所關注的焦點。

即時遷移:Teleportation

VirtualBox在3.1版之後已經有即時遷移的功能,叫做「Teleportation」。與大多數提供即時遷移的虛擬機器一樣,都需要一個共享儲存環境作為暫存的角色。但是在使用即時遷移的時候,多伺服器整合的監控管理介面是很重要的工具,而Teleportation目前卻仍是以指令列操縱為主,也沒有高可用的相關技術可以一起搭配使用,因此實用度有待評估。

phpVirtualBox簡介

VirtualBox提供了本機端的圖形化管理介面,但也僅有供本機端使用。儘管我們可以用遠端桌面、VNC等遠端操控伺服器的工具來管理,但仍有所不便。為了遠端管理VirtualBox,phpVirtualBox提供了一套管理系統,並成為VirtualBox專案中相當火熱的焦點議題。

如果要用大量管理虛擬化伺服器的角度來評比VirtualBox,那麼應該要連phpVirtualBox也一併介紹才行。

2011-08-06_171137 VBox test-xenserver 2011-08-06_171159 phpVBox test-xenserver

VirtualBox管理介面

phpVirtualBox管理介面

phpVirtualBox幾乎把VirtualBox圖形化管理介面都模擬出來了,還加上了遠端管理時需要有的權限控管功能:除了帳號密碼設定之外,還能規範哪個IP的電腦才能連到phpVirtualBox進行管理,這點相當貼心。

phpVirtualBox的限制

phpVirtualBox必須搭配apachePHP執行環境才能運作,此外也要一併開啟VirtualBox的VBoxWebSrv功能。安裝phpVirtualBox前置作業較為繁雜,而必須額外開啟VBoxWebSrv才能順利連線,這又是為自動運作為目標的伺服器加上了額外的麻煩。

phpVirtualBox支援多台VirtualBox伺服器的整合管理。例如我有三台設有VirtualBox的伺服器,那麼我可以在phpVirtualBox的設定中將這三台伺服器列入管理設定,登入時就能夠一併管理。

但是由於phpVirtualBox需要對應VirtualBox的版本才能正常運作,如果我們要管理的伺服器各別安裝了不同版本的VirtualBox,例如一台是3.x版本、另一台是4.1.0版本,那麼就不能用一個phpVirtualBox來整合管理這些伺服器了。不過這只要規劃時有所考量,就不會是什麼問題。

VirtualBox安裝過程

Windows中安裝

我在Windows 7作業系統中安裝VirtualBox,然後再把phpVirtualBox配置到Apache中。配置phpVirtualBox的時候遇到了些問題,像是phpVirtualBox版本跟VirtualBox不合、不小心用管理者模式開啟VBoxWebSrv.exe等自己操作的錯誤,都不是什麼大問題。搞定後就可以開啟phpVirtualBox來管理VirtualBox了。

phpVirtualBox太慢了

2011-08-06_170543 phpVbox非常慢

但是phpVirtualBox的開啟速度可說是出乎意料的慢。我自認為我現在用的四核心電腦並不差,而且目前也沒有執行太多需要吃資源的軟體。但即使如此,從登入phpVirtualBox到看到操作畫面,至少讓我等了個5分鐘左右吧。而裡面要做任何的動作,也都要等相當久才有反應。

此外,虛擬機器主控台的功能也無法順利開啟,真不知道是我哪裡架設錯誤了,十分讓人灰心。

然而光是緩慢的問題,就足以讓人決定捨棄VirtualBox與phpVirtualBox的組合方案了。


Hyper-V Server 2008 R2

2011-08-07_003240 logo

Microsoft Hyper-V Server 2008 是一項獨立的產品,提供了空機安裝的方式,達到簡易、可靠、符合成本效益且最佳化的虛擬化解決方案,協助公司提升伺服器的使用率並降低成本。

它可將工作負載整合至單一實體伺服器;提供適用於開發與測試環境的基本簡易虛擬化解決方案;支援現有的 IT 基礎結構,協助公司降低成本、提升使用率,及佈署新的伺服器;充分利用現有的修補 / 佈署 / 管理與支援工具 / 程序。

Windows的管理介面

在官方介紹中看不太出來Hyper-V跟其他產品有啥差別。最大的決定性差異,應該就是管理介面使用了大家熟悉的Windows 2008。你可以用熟悉的方式進入Windows、設定防火牆等工作。這對已經習慣Linux的我來說,這並不是什麼特別的優勢,但對未來的管理者來說應該還是一件好事。

相較於大多數虛擬化技術對於Windows支援較差,XenServer等方案在沒有VT-x / AMD-V的加持之下甚至是不能以全虛擬化安裝Windows,Hyper-V絕對是Windows作業系統使用者的不二選擇。

Windows授權

Hyper-V的另一個優勢,就是虛擬機器中客端主機的Windows授權是包含在Hyper-V當中的。以VMware為例,安裝Windows的客端主機時,每一個客端主機理論上都需要獨立的授權(例如序號之類的)。但是一台Hyper-V企業版伺服器,就包含了四台客端主機的Windows授權。可以想像成買一份Windows又送你四份Windows的感覺。

詳細的授權細節我並不是很瞭解,因為實驗室這邊的Windows基本上都是使用學校的大量授權,因此並不需要特別在意授權數量上的限制。

Linux支援不足

不過相對的,Hyper-V在Linux作業系統支援就顯得薄弱:它只能安裝SUSE企業版伺服器、Red Hat Linux。常用的Debian卻不在名單上。

本篇主要需要架設的伺服器中,Linux佔了相當大的比重,因此這成為我並沒有選用Hyper-V的主要原因。


VMware ESXi

ESX02-2011-06-27-16-03-17 

VMware的伺服器虛擬化方案為VMware vShpere,這是一個綜合多種元件與軟體的綜合性大型方案,提供虛擬機器、集中管理、虛擬網卡與虛擬儲存裝置、即時遷移與高可用等功能。

免費的VMware ESXi

VMware大部分元件都是要收費的,只有最底層的元件:伺服器虛擬化主端電腦VMware ESXi(以下簡稱為ESXi)可供免費下載、安裝。你只要輸入可免費取得的序號,就能夠延長ESXi的使用期限。

        ESXi是以空機安裝的方式配置,你可以從VMware網站上下載ISO光碟來安裝。安裝完之後ESXi有著經過設計的文字介面主控台,可以快速設定伺服器的網路、密碼等。ESXi本身是個精簡型的Linux,許多Linux常見的套件都沒有安裝,因此較難對ESXi動手腳,也確保ESXi運作的穩定性。

        VMware vShpere Client

        虛擬機器的管理上則是以獨立的管理軟體VMware vShpere Client(以下簡稱vShpere Client)進行。供人免費使用的vShpere Client一次只能連線到一台ESXi主機,它可以調整ESXi伺服器的設定、檔案傳送(上傳ISO或虛擬裝置)、虛擬機器的監控、記錄與控制,也可以開啟虛擬機器主控台。

        虛擬機器的新增與設定都與以往常見的VMware Workstation很像,在全虛擬化技術的支持下,你可以控制虛擬機器的大部分硬體設定,就像是組一台電腦一樣。

        不過ESXi的網路模式跟Workstation有很大的差別,它只有提供虛擬交換器(vSwitch)跟VMkernel。後者是用來配置ESXi相關服務,像是vMotion(類似即時遷移等)。ESXi沒有NAT伺服器,所以沒辦法自動分配IP給客端電腦,這點必須自己想辦法。

        豐富的資源

        VMware系列產品在虛擬化技術中廣為人知,相關的資源與應用也非常多。VMware上提供了1799種虛擬裝置可以馬上下載來使用。我之前研究的DSpace也有提供VMware的虛擬裝置

        此外,VMware提供的免費工具VMware vCenter Converter Standalone也具備了相當高相容性的P2V、V2V功能。P2V是指實體機器轉換成虛擬機器,而V2V則是虛擬機器轉換成另一種虛擬機器。你甚至可以將Norton GhostAcronis True Image的硬碟映像檔轉換成VMware的虛擬機器。

        VMware ESXi安裝過程

        安裝過程十分順利

        我使用了ESXi 4.1版進行空機安裝。因為在VirtualBox上怎樣進了安裝畫面,所以我是用實體機器來安裝ESXi。
        安裝過程只有硬碟分割、密碼等少數設定需要輸入,大部分都由系統自行去判斷。大概不到五分鐘就安裝完畢了,令人訝異的輕快。

        然後是下載vShpere Client並連線到ESXi管理,ESXi也支援全虛擬化,所以也可以安裝Windows。但是它的網路設定有點複雜,直到現在我也只能理解vSwitch的運作而已。

        簡單安裝幾個虛擬機器之後很快就上手了,網路上也有很多圖文並茂的心得文,例如挨踢人的VMware vSphere 4安裝試用不專業網管筆記的VMware ESXi實戰全記錄,再此就不再額外記錄。

        手動建立NAT內部網路

        至於NAT的問題,我參考RomanT.net的Configuring NAT on ESX and ESXi一文,在ESXi中架設一個pfSense伺服器以提供DHCP、NAT的功能,而其他虛擬機器則透過pfSense來進行連線。這種方式會讓ESXi跟pfSense都各別佔據一個IP,還不算是理想的解決方案。但這種方案不管是用在ESXi還是XenServer等類似的虛擬內部網路架構中都能夠適用。

        VMware GO無法使用

        vShpere Client只能管理一台伺服器,而另一個管理方案VMware GO則是可以管理多台ESXi。它是架設在VMware網站上的網站服務,而不是我們可以自行安裝、架設的伺服器,所以必須連到VMware進行操作。

        2011-08-08_232614 vmware go (mask)

        然而,我在VMware GO新增ESXi的動作卻一直都沒有成功過,不知道是哪裡設定錯誤。網路上看得到的VMware GO文章好多都是官方的廣告說明,例如伺服器虛擬化管理服務─VMware GO,但內容都大同小異。實際上用VMware GO的人好像不多的感覺,不知道是不是我的錯覺?


        Citrix XenServer

        2011-08-08_135631 logo

        簡介

        Citrix XenServer 是一種全面而易於管理的伺服器虛擬化平臺,建構於強大 Xen Hypervisor 程式之上。Xen 技術被廣泛視為業界最快速、最安全虛擬化軟體。XenServer 是為了高效率管理 Windows® 和 Linux® 虛擬伺服器所設計,可提供符合成本效益的伺服器整合和業務連續性。

        XenServer有著與VMware vShpere、Hyper-V 2008 Server R2等類似的功能,但是XenServer在免費版就能使用很多其他廠商方案中需要付費才能使用的功能,像是即時遷移、高可用等伺服器虛擬化所需要的技術。

        XenServer是基於知名的開放原始碼虛擬機器技術:Xen。許多Linux發行版中就能預先安裝Xen,鳥哥也有介紹如何在Linux中使用Xen。Citrix XenServer也是利用Xen的虛擬電腦技術,製作出整合型的管理方案。

        網路心得豐富

        儘管市面上電腦圖書不常看到XenServer的介紹,但是網路上研究XenServer的文章卻還蠻容易找到的。

        射手科技採用XenServer作為他們的虛擬化應用方案,對於為何採用XenServer的理由以及使用XenServer時遇到的瑣事做了詳細的記錄,是官方說明之外的另一種角度的使用者說明。

        一個低調而不張揚的角落黃小瀞的學習筆記也有介紹XenServer的安裝過程,圖文並茂相當詳細,我在安裝XenServer的許多障礙都可以從這邊找到解答。

        Citrix XenServer安裝過程

        可以安裝在VirtualBox中

        2011-08-08_160517 vbox設定

        VirtualBox的設定細節

        XenServer必須安裝在64位元的電腦中。剛好我的VirtualBox可以模擬64位元的電腦,所以我就用VirtualBox來安裝XenServer,並直接讓AP配給它IP。

        空機安裝

        2011-08-08_155330 console

        XenServer是採空機安裝的方式,安裝過程沒什麼問題。安裝好之後很快就能看到XenServer的主控台。接著先用瀏覽器連線到XenServer,它會提示你下載XenCenter安裝檔,好用來管理XenServer。

        2011-08-08_161110 xencenter

        Citrix XenCenter

        在此使用的是Windows環境中使用的版本。安裝過程也十分簡單,請看黃小瀞的學習筆記的說明即可。

        半虛擬化的限制

        在安裝虛擬機器時遇到了一些麻煩。由於VirtualBox無法提供VT-x / AMD-V給XenServer,所以XenServer只能用半虛擬化(Paravirtualization)模式建立虛擬機器。

        2011-08-08_161659 template

        XenServer半虛擬化支援的樣板,但是Windows在安裝過程中必須全虛擬化進行

        半虛擬化技術最為人詬病的地方,就是必須使用特定的作業系統,並修改該作業系統的核心,這樣才能順利運作。XenServer提供了許多Linux發佈版跟Windows的樣板,不過Windows在安裝過程中需要全虛擬化,所以我連新增都不能新增。Linux發佈版中也限定了版本,我下載了許多CentOS,到最後還是用CentOS 5才能順利運作。直到安裝XenTool之後,整個新增虛擬機器的工程才算是完成。

        網路上可以找到供XenServer使用的樣板,像是Ubuntu 9.10,可是我下載之後卻無法使用,令人感到灰心。

        網路設定

        2011-08-08_162313 Netwrok

        網路的部份,XenServer也只有提供橋接模式與內部網路模式。如果要用NAT模式的話,可以參考三块石头的Citrix XenServer上实现NAT介紹。其作法是建立虛擬路由器、虛擬網卡,然後用iptables來做NAT連接埠的轉遞。這樣還沒有DHCP服務,所以必須手動分配虛擬機器的IP。雖然這都是Linux網路的基礎技巧,但是由於操作還是太過繁雜,所以我並不打算這樣做。

        另一個作法是像ESXi一樣建立pfSense路由器,不過也會有多佔據一個IP的缺點就是。

        小結

        XenServer有著不輸給VMware ESXi的伺服器虛擬化方案,免費版就能使用許多功能,令人感到興奮。但是因為我的伺服器沒有VT-x / AMD-V技術,新增虛擬機器的過程中老是綁手綁腳,令人難以適應。最後還是放棄不使用XenServer了。


        OpenNode

        2011-08-07_024309 logo

        OpenNode雲端平台(OpenNode Clode Platform)是一個開放原始碼伺服器虛擬化與管理方案,它包括了以下幾個元件:

        虛擬化技術

        OpenNode採用了KVM的全虛擬化與半虛擬化技術,同時也用了OpenVZ的容器虛擬化技術。這種虛擬化技術組合在開放原始碼專案中似乎很常見,Proxmox也是採用了類似的方案。

        空機安裝

        基於CentOS的空機安裝ISO檔,支援OpenVZ容器虛擬化與新興的KVM全虛擬化技術。OpenNode的命令列管理也使用了OpenNode CLI Utility與廣為人知的virsh與vzctl技術。

        OpenNode Management Server(簡稱OMS)

        OMS是以虛擬裝置打包(OpenVZ的半虛擬化技術),可以輕易安裝到OpenNode伺服器中整合運作。

        管理主控台

        OpenNode管理主控台,在這邊通常稱為管理介面,稱之為「FuncMAN」。它是次世代網頁式AJAX管理主控台,具備非常簡單與整齊的版面設計。在OpenNode伺服器的虛擬機器實體管理上,採用了以HTML5為基礎的VNC與SSH虛擬機器主控台。OpenNode管理主控台是含括在管理伺服器中。

        整合不如Proxmox

        基本上,OpenNode採用的技術與Proxmox很像。虛擬機器可設定的部分都一樣,網路設定也只有虛擬內部網路、橋接模式,沒有NAT。但整體來說,Proxmox的整合程度比起OpenNode高很多,以下敘述我安裝與使用的過程。

        OpenNode安裝過程

        有如CentOS的空機安裝

        2011-08-07_030940 裸機安裝

        十分精美的安裝介面

        OpenNode伺服器的安裝很簡單,就跟安裝CentOS一樣……因為他本來就是基於CentOS去修改的。安裝畫面很漂亮,但是安裝所需時間卻也跟CentOS一樣長,跟VMware ESXi比起來就差很多。

        安裝OMS與連線配置

        2011-08-07_032452 主控台

        OpenNode的文字介面主控台

        安裝完OpenNode伺服器之後,接下來要在OpenNode伺服器的主控台中安裝OpenNode Management Server(簡稱OMS)。安裝時是下載OpenVZ的虛擬裝置打包檔,將OMS建立成伺服器中的虛擬機器。因此你還需要給OMS額外的IP,讓他能夠連到網路供人連線,這是我覺得很麻煩的缺點。

        OMS必須要以完整的FQDN(Fully qualified domain name,就是完整的網域名稱啦)來解析、連線。舉例來說,OMS的IP如果是192.168.56.101,那麼我必須給他一個FQDN,例如「opennode.dlll.nccu.edu.tw」,這樣才能連線,這似乎是SSL安全認證的需求。

        FQDN的設定通常要搭配DNS伺服器來指定,不過也可以修改要客戶端的網域解析hots檔案,讓客戶端手動辨識FQDN、連到對應的OMS的IP上。Windows請修改C:\Windows\System32\drivers\etc\hosts;Linux通常是修改/etc/hosts,詳情請參考鳥哥的教學

        OMS匯入OpenNode伺服器

        2011-08-07_034317 oms

        連線到OMS時需要輸入帳號密碼,帳號是root,密碼則是剛剛建立OMS時設定的資料。然後OMS會要你安裝安全憑證,以SSL方式跟OpenNode連線,提高安全性。

        2011-08-07_034702 funcManOMS剛安裝完的時候看不到任何主機,我們必須手動匯入OpenNode伺服器。

        2011-08-07_034937 register

        使用手冊上講述兩種方法,我是用OpenNode文字主控台登入,然後再到OMS中選擇要匯入的主機。

        2011-08-07_035009 import selected

        匯入的過程要等待很久,我想應該有10分鐘左右吧,而OMS卻不會有任何運作提示。一開始我一直以為是我輸入錯誤了,等很久之後,才看到OpenNode伺服器成功匯入OMS。

        2011-08-07_035338 loading成功匯入一台OpenNode伺服器之後,OMS就時常需要讀取伺服器的資料,而且讀取速度非常慢,操作並不太順暢。儘管如此,還是比phpVirtualBox還要快就是了。

        從樣板建立虛擬機器

        由於這台OpenNode沒有VT-x / AMD-V技術,虛擬化的部分只能使用OpenVZ的容器虛擬化,因此必須要下載虛擬裝置才能建立新的虛擬機器。

        2011-08-07_035551 templates OpenNode下載虛擬裝置的操作是在伺服器主控台中,可以選擇的虛擬裝置都是乾淨各個Linux發佈版,這似乎是OpenVZ預設的虛擬裝置。相較之下,Proxmox有些虛擬裝置會預先安裝好服務,較為實用。而Proxmox在網頁端就執行下載虛擬裝置的動作,整合度更勝OpenNode。

        2011-08-07_100818 create new OVZ VM

        下載好虛擬裝置之後,就能夠在OMS建立虛擬機器。建立的方式與Proxmox雷同,畢竟都是使用同樣的OpenVZ技術。建立時需要花點時間,但是OMS卻像是沒有回應一樣的呆滯住,操作起來實在是不怎麼流暢,強調AJAX技術卻沒有帶來相對應的優勢啊。

        2011-08-07_100940 console 虛擬機器的主控台稱之為「WebShell」,是以HTML5技術寫成的,頗為特別。但老實說不太好用,不如Proxmox的Java Applet還容易上手。

        小結

        稍微操作了一下,感覺上,要用OpenNode不如用Proxmox吧。


        Proxmox VE

        800px-Screen-startpage-with-cluster 

        簡介

        在一小時裡面建立完整的虛擬伺服器平台」。這個Proxmox的願景可不是痴人說夢話,而是一個可行性相當高的方案──而且還是免費的開放原始碼專案!

        Proxmox使用了KVM的全虛擬化與半虛擬化技術,以及OpenVZ的容器虛擬化技術(只能供Linux的客端電腦使用)。然而KVM需要有Intel VT-x / AMD-V技術支援,我目前只能測試OpenVZ的容器虛擬化。

        虛擬裝置應用

        真的只要一個小時,你不僅可以將一台空的伺服器安裝成Proxmox,然後快速地建立起郵件伺服器(Proxmox Mail Gateway)、內容管理平台(Joomla)等各種常見的虛擬裝置。一個可以馬上使用的網站系統就這樣完成了!

        操作門檻低

        Proxmox不僅是快,而且是個高度整合的方案,換句話說,他用起來非常簡單!習慣用VirtualBox或是更複雜的VMware的我,在一開始就為它過於簡單的操作方式而感到困惑。但經過短時間的摸索、閱讀安裝文件、熟悉Proxmox的使用方式之後,現在則是對它高度整合的成果感到十分敬佩!

        接著我就介紹一下Proxmox的安裝、使用過程吧!

        Proxmox VE安裝過程

        空機安裝

        Proxmox提供了空機安裝的方式,讓你快速建立起基於Debian的虛擬機器伺服器,內含用瀏覽器就能連線的網頁管理平台,一應俱全。

        2011-08-06_215904 Login

        網頁管理平台的帳號密碼是與Proxmox的Linux系統結合在一起,因此你不需要設定太多套帳號,這是高度整合的具體表現。

        從虛擬裝置建立虛擬機器

        由於我只能用容器虛擬化技術,所以我必須從虛擬裝置來建立虛擬機器。Proxmox最特別的地方,就是它準備了一堆的虛擬裝置(Virtual Appliance)──就是將已經安裝好、配置好的作業系統,上面甚至會安裝好特定的應用工具,然後包在一起供人下載取用。

        2011-08-06_220221 templates download 虛擬裝置可以從Proxmox的網站下載,不過Proxmox的管理介面就內建下載清單了。

        2011-08-06_220256 start download

        你可以從管理介面直接將虛擬裝置下載到Proxmox VE伺服器中,操作起來一氣呵成、不需要多餘的步驟。

        下載完之後就能在建立虛擬機器中選擇該虛擬裝置作為範本,同時可以為他設定基本常用的參數,包括root的密碼。大概只要兩分鐘,一台全新可用的虛擬機器就建好了。

        虛擬機器設定

        建立虛擬機器的部份,跟其他虛擬機器平台比起來,特別是超複雜的VMware ESXi或是比較像個人電腦的VirtualBox來說,Proxmox建立虛擬機器中可以自訂的設定非常少,一開始使用時讓我有點不知道該如何下手。

        2011-08-06_220331 create

        不過重要的設定該有的還是都有,像是硬碟容量、記憶體、網路。我後來才知道,大部分Open VZ的虛擬機器都是如此。其中網路設定的部份,他也只有橋接模式,只是Network Type要選Virtual Network (venet),用橋接網卡反而無法運作,奇怪。

        以Java Applet實作虛擬機器主控台

        2011-08-06_220856 enter console 在主控台操作方面,Proxmox是以Java Applet元件,利用VNC來連線。操控上出乎意料地簡單,按鍵也不會被捕捉鎖定(例如VMware預設要用ctrl + alt來解除捕捉鎖定),感覺就像是在用PieTTY操控主控台一樣的容易。不過,可惜複製貼上這種動作還是做不到的啦。

        小結

        Proxmox的設定太過簡單了,似乎沒辦法像VMware一樣弄出複雜的網路結構。不過換個角度想,簡單也是一件好事,正符合本篇所需要的容易管理優點。我很中意這個方案。


        OracleVM

        vm_general_info

        • 專案網站:Oracle VM Overview
        • 維基百科:Oracle VM
        • 下載網頁(Oracle VM要先註冊登入才能下載,註冊是免費的。)
        • 使用版本:Oracle VM 2.2.2 Media Pack(內含OracleVM-Server-2.2.2.iso與OracleVM-Manager-2.2.0.iso)
        簡介

        Oracle VM為甲骨文公司(Oracle)所發行的企業級開放原始碼虛擬機監視器,其建基於Xen。其免費供應於大眾下載、使用與發布,並為使用者提供有償支援。

        Server與Manager

        Oracle VM分成Server跟Manager兩個元件,它都是提供ISO檔供人免費下載。其中Server是空機安裝,Manager則是要依附作業系統來安裝。

        Manager硬體要求條件最少2GB記憶體、4GB的硬碟空間,因此可能難以裝在預設的虛擬機器中,這是需要注意的地方。

        網路

        Oracle VM的網路似乎只有提供橋接模式,因此它在文件中建議我們在Oracle VM前面設置好DHCP伺服器,再來進行虛擬機器的安裝。

        樣板

        Oracle VM提供了樣板安裝,這是已經安裝好了作業系統,只要下載、放到Oracle VM中,就能夠直接使用。

        Oracle VM安裝過程

        實體機器安裝

        由於我在VirtualBox跟VMware ESXi中都無法順利進入Oracle VM Server的安裝畫面,所以我把它燒成光碟後,放到實體機器上安裝。

        實體機器上的安裝過程十分順利,很快就架設好Oracle VM Server。然後我才想起來還要安裝Oracle VM Manager

        安裝Oracle VM Manager

        本來我想把Oracle VM Manager裝在Orcale VM Server的電腦上,但是它的安裝器不知道是哪裡搞錯了,跟我講說硬碟空間不足,明明安裝完Oracle VM Server之後還有18x GB的空間。
        因此我只好另外架設虛擬機器,先安裝CentOS 5作業系統,再來安裝Oracle VM Manager。

        Oracle VM Manager安裝過程照文件進行操作即可,大致上沒什麼問題。在安裝過程中會安裝許多工具,而它會一一要你設定密碼,這點十分煩人。

        無法連線到Manager

        Manager安裝完之後,應該可以透過「http[s]://IP_address:port/OVS」連接到Oracle VM Manager的管理介面。

        儘管看起來各元件都正常啟動了,防火牆也開啟所需要的連接埠,但我卻怎樣都連線不了,一直看到「錯誤 102 (net::ERR_CONNECTION_REFUSED): 伺服器拒絕連線。」的問題。

        我嘗試以上步驟安裝了第二次,還是一樣無法使用Orcale VM Manager。因此許多功能都還沒嘗試使用,Oracle VM就被我放棄了。

        (more...)

        學校實驗室的伺服器虛擬化方案評比(一):背景需求

        學校實驗室的伺服器虛擬化方案評比(一):背景需求

        2011-08-08_215458 manage virtual machine

        我所在的教學單位實驗室中一直有著大量伺服器的需求,因此我最近開始研究起虛擬機器技術。這一篇事先敘述為什麼實驗室需要伺服器虛擬化方案來解決伺服器的需求,以及一些基本的虛擬機器相關技術名詞。

        本篇要講的內容頗多,我預計拆成三篇文章來敘述,這一篇主要描述背景需求與相關名詞解釋。

        背景需求

        我們實驗室在進行實驗時,往往會需要伺服器來安裝網站、提供服務,主要使用的作業系統是Windows(因為很多系統是以ASPMSSQL實作),此外普通架站時常常使用的則是Linux。另一方面,在學生畢業之後,我們也要典藏學校畢業論文的系統,供後續研究發展的用途。

        但是不管實驗室經費再多,伺服器的數量也不能滿足永無止盡的實驗、典藏需求。所以我們需要借助伺服器虛擬化方案的力量,將不常用、測試用的伺服器需求轉換成虛擬機器來運作,以達到節省經費成本、機器空間的效益。

        具體來說,這種伺服器虛擬化的需求有兩種:一種是實驗用的短時間伺服器,可以讓人在虛擬機器裡面胡搞瞎搞,搞壞了也不會影響到其他虛擬機器的運作;另一種是展示用的長時間伺服器,這是在偶爾需要展示系統功能一下時才會連線使用的系統,效能不是第一考量,但需要長時間保持運作、易於備份才行。

        由於我們是教育單位的實驗室,人力跟經費都不比外面的企業公司,因此方案的考量點都是開放原始碼、免費的方案為主。

        目前我打算將虛擬機器架在一台老舊的伺服器上,它連VT-x / AMD-V的硬體協助虛擬化技術都沒有,這會造成之後選擇虛擬化方案上的限制。

        在網路環境方面,這邊要配置獨立、公開的IP才能連線到網際網路。然而大部分伺服器虛擬化方案的前提,都在於已經有大量IP可以使用,或是已經架設在有DHCP服務的內部網路中、可透過NAT路由器進行連接埠轉遞。這些差異在之後評比時會再進行說明。

        最後,最麻煩的是人力方面。這邊並不是理工科系,不太能期待學生能擁有網管的技能。學生一屆一屆地交替,複雜的管理技術也會難以轉交。因此整個伺服器虛擬化方案必須簡單,能夠有圖形化介面進行操作,盡量不用記憶文字型指令。

        基於以上背景需求,我大概花了一週多的時間研究、比較各種伺服器虛擬化方案的運作方式。比較其優缺點,並從中決定最後要採用的最佳方案。

        而接下來幾篇也就是記錄各種伺服器虛擬化方案的評比過程。


        名詞解釋

        由於本篇會用到一些虛擬機器與網路技術的專有名詞,在此先解釋一下常用名詞的意思。

        主端電腦 / 客端電腦 (HostOS / GuestOS)

        在虛擬機器的角色中,用來安裝虛擬機器軟體的作業系統稱為主端電腦(Host OS),被模擬出來、安裝在虛擬機器上的作業系統,稱為客端電腦(Guest OS)。我們通常是在一個主端電腦上建立多個客端電腦的虛擬機器提供服務。

        而在伺服器虛擬化方案中,常常會將多台主端電腦結合成一個集叢(Cluster),以進行即時遷移、高可用等技術的實作。

        名詞解釋:虛擬化技術

        本篇評比的方案中,大致上會用到幾種虛擬化技術。

        全虛擬化(Full-Virtualization)

        虛擬機器軟體模擬出所有硬體設備與可操作的指令,客端電腦安裝在虛擬機器時就像是安裝在一個普通的機器硬體上。VMware、VirtualBox都是採用這種全虛擬化技術。

        客端電腦發出的硬體指令會經過擷取、轉換,並於主端電腦上實作,虛擬化的效能較差。相對的,全虛擬化可以模擬出完整的電腦環境,可以安裝的客端電腦種類也比較多,不論是Linux或Windows都可以安裝。

        半虛擬化(Para-Virtualization)

        虛擬機器軟體模擬出部分硬體設備與指令,而部分硬體不進行模擬、客端電腦會直接使用主端電腦的硬體。因為這種部分硬體模擬的方式,所以中文常以「半虛擬化」稱之。英文原名的意思是「在旁邊的虛擬化」,意思是客端電腦的執行實際上是部分仰賴於主端電腦的虛擬化。

        為了讓客端電腦能夠順利融入主端電腦中並進行半虛擬化的作業,通常需要修改客端電腦的核心。這通常是半虛擬化為人所詬病的缺點。但有人認為半虛擬化中客端電腦可以直接操作硬體,因此虛擬化損耗的效能較低、運作效率較高。

        硬體協助虛擬化 Intel VT-x / AMD-V

        在x86虛擬化的硬體支援中,Intel跟AMD都個別開發出虛擬化擴充的功能。他們彼此並不直接相容,但大部分功能卻都相同。VT-x / AMD-V技術可以讓主端電腦擷取客端電腦發出的低特權態部件的敏感指令,因此半虛擬化技術就不需要修改客端電腦的核心、全虛擬化也不用轉換客端電腦的執行代碼,這種硬體協助技術在某些方面來說可視為已經抵消了這兩種虛擬化技術的差別,而都可以視為全虛擬化技術。

        藉由VT-x / AMD-V的協助,XenKVM等多種虛擬機器就能夠以全虛擬化模擬或是支援64位元的客端電腦。

        然而,由於VT-x / AMD-V允許客端主機對記憶體的直接取用(Direct Memory Access,DMA),容易造成安全管理上的問題。因此Citrix XenServerMicorsoft Hyper-VVMware ESX等不同虛擬化方案會在系統服務安全上有著不同的性質,這也是他們之間會有明顯差異的地方。

        容器虛擬化(Container-based virtualization)

        容器虛擬化是在主端電腦中將部分資源、程序區隔成獨立的虛擬環境。容器中的客端電腦與主端電腦一樣的硬體設備,但是與主端電腦、其他客端電腦之間有很好的隔離性與安全性。

        OpenVZ是容器虛擬化技術中相當知名的開放原始碼專案,它不需依賴硬體虛擬化技術VT-x / AMD-V的支援,可攜性也很高,而且允許你在客端電腦執行中直接動態調整客端電腦的資源(硬碟大小、記憶體等)。有不少人認為容器虛擬化的效能相當地高。

        容器虛擬化技術要建立虛擬機器時,通常是要從虛擬裝置(Virtual Appliance),或是樣板(Template)中建立。例如你可以下載一個CentOS作業系統的虛擬裝置,然後基於這個虛擬裝置來建立一個全新、可以馬上執行的CentOS──大概只要三分鐘。

        容器虛擬化最大的限制在於支援的作業系統很少、可選擇的類型不多,OpenVZ就只能從Linux主端電腦去模擬Linux客端電腦,並不能使用Windows。

            名詞解釋:虛擬機器應用

            有些與虛擬機器安裝、建立、操作時的相關技術名詞,在此也先解釋定義。

            空機安裝(Bare-metal installer)

            空機安裝是指在電腦上透過光碟或網路直接進行安裝,架設起一個包含作業系統與虛擬機器的完整電腦,這樣就不需要仰賴其他作業系統。

            為了讓伺服器虛擬化能夠穩定運作,主端電腦盡量是精簡服務、專心在虛擬機器運作上就好。空機安裝採用了預先規劃好的作業系統與虛擬機器服務設定,提供必要的功能,也減少安裝時額外設定的麻煩。

            許多方案都有提供空機安裝的ISO光碟映像檔。就像安裝普通的作業系統一樣,你可以把空機安裝的ISO檔燒成光碟、放到實體電腦光碟機上安裝,也可以掛載到虛擬機器上、在虛擬機器進行空機安裝。

            空機安裝的系統通常包括作業系統與虛擬機器軟體。有些開放原始碼專案的作業系統是採用常見的CentOS、Debian等Linux發佈版,允許使用者能再作業系統上加工。也有的作業系統單一功能的精簡版,除了虛擬化工作與基本設定之外沒有什麼能夠調整的地方,就像安裝了一個嵌入式系統一樣,例如VMware ESXi。

            虛擬裝置 / 樣板(Virtual Appliance / Template)

            將虛擬機器打包之後供人下載、使用,這就是一個「虛擬裝置」(Virtual Appliance),通常翻譯成「虛擬設備」。虛擬裝置就像是一台完整的、可以獨立運作的客端電腦,你只需要把它放到主端電腦中,以虛擬機器開啟、設定一下參數與網路,就能夠直接使用。

            在容器虛擬化的OepnVZ或半虛擬化的Xen中,通常是稱之為「樣板」(Template)。使用者可以以一個樣板為基礎產生多台同時運作的客端電腦。

            VMware的虛擬裝置市場有著1799個虛擬裝置可供下載,OpenVR也有許多Linux作業系統的樣板,而Proxmox也提供了各種網站伺服器的虛擬裝置

            利用虛擬裝置快速建立客端電腦,比起從光碟安裝作業系統更有效率。有些對應的技術也可將客端電腦轉換成虛擬裝置或樣板,供大量配置使用。

            虛擬機器主控台(Virtual Machine Console)

            2011-08-09_150658 console - mask

            VMware vShpere Client的虛擬機器主控台,裡面是一個Windows的虛擬機器。

            虛擬機器的操作介面稱為主控台(Console)。有些虛擬機器會模擬顯示卡,因此主控台可以看到漂亮的圖形化操作介面,類似平常我們在實體機器與螢幕上操作電腦一樣。但也有些虛擬機器並不模擬顯示卡,操作全部都以無頭模式(Headless Mode)進行,你只能在僅有鍵盤的情況以文字指令操作客端電腦。雖然這大致上跟Linux的指令列模式差不多。

            而主端電腦虛擬機器顯示客端電腦主控台畫面的方式有很多種,通常可以在虛擬機器管理介面開啟,VirtualBox可以用特有的VRDP虛擬遠端桌面協定,用Windows的遠端桌面開啟客端電腦的主控台。

            主控台為了模擬真實的操作環境,有時候會在開啟時捕捉鍵盤與滑鼠的操作。被捕捉的鍵盤與滑鼠只能在客端電腦主控台中進行操作,要脫離捕捉狀態時必須按下特殊按鍵組合,以VMware來說就是「Ctrl + Alt」。而虛擬機器無法捕捉特殊的按鍵組合「Ctrl + Alt + Del」(這會在Windows伺服器登入時使用),因此會有一些功能按鈕可以讓使用直接送出這個組合。

            似乎很少虛擬機器相關技術會在意這個基本的功能,但我真的覺得不同方案的主控台技術之間有很大的差異。

            名詞解釋:虛擬機器與網路

            虛擬內部網路(Virtual Intranet Network)

            許多方案都能夠建立虛擬的網路環境,就像是建立一個虛擬的交換器(switch),讓虛擬機器的網路卡與他連線,進而構築出複雜的網路結構。VMware及某些方案稱之為「vSwitch」,VirtualBox稱之為「Internal Network」(intnet),使用起來差不多都是類似的概念。

            橋接網路(Bridged Network)

            在這種網路型態之下,客端電腦會透過虛擬橋接器與主端電腦的實體網卡相連接。在這個網域中,主端電腦跟客端電腦都會被視為兩台獨立的電腦,可以各別配給IP、連上網路。

            NAT (Network Address Traslation)

            NAT是路由器常使用的技術,通常會搭配DHCP服務、連接埠轉遞機制一起使用。

            VirtualBox提供了NAT的網路模式,客端電腦會連到VirtualBox建立的虛擬路由器上,由虛擬路由器透過DHCP配給客端電腦內部IP,客端電腦責是透過虛擬路由器連線到網際網路。當網際網路的電腦要連到客端電腦時,則需要搭配連接埠轉遞機制,將指定的連接埠轉移到客端電腦中。

            NAT的網路功能不僅在個人使用時很容易就能建立一個可以連上網際網路的客端電腦(相較之下,其他模式都要自行指定IP),更可以讓你只要用一個IP、多個不同的連接埠,就能同時讓許多客端電腦提供服務。但是在伺服器虛擬化方案中,幾乎看不到內建NAT網路的功能。

            名詞解釋:伺服器虛擬化應用

            要進行大量虛擬機器的管理時,必須配合多種網路技術搭配,才能做到服務穩定、容易管理的目標,也是各個方案都想要實作的技術。在此舉兩個常見的技術:

            遷移(migration)

            遷移是讓伺服器管理者將虛擬機器轉移到不同的實體主端電腦上。當主端電腦需要維修、停機時,遷移功能可以快速將虛擬機器轉移到其他主端電腦再繼續執行。

            要進行遷移的先決條件是要有多台具有虛擬機器軟體的主端電腦。大部分的伺服器虛擬化方案中,遷移是在特定的管理介面中進行。你必須要先將多台主端電腦都結集成叢集,而且需要準備一個遷移時暫存的空間,這樣才能進行遷移的動作。

            即時遷移(Live migration)則強調遷移過程中虛擬機器運作不會中斷,而客戶端的網路服務也不會因此斷線。由於這還牽涉到網路技術,因此並不只是單純的虛擬化技術就能完成。許多伺服器虛擬化方案都會強調他們具有即時遷移的功能,而成為各家競爭的賣點之一。

            高可用性(High Availability,簡稱HA)

            高可用性是指為了縮短日常維護操作和突發系統崩潰的停機時間,配置多個相同的系統,而在其中某些停機的時候短時間內轉移到其他可用的系統中。

            在網路架構中,高可用性通常會與負載平衡、同步備份、服務監控與故障排除等技術一起使用。而在虛擬機器應用上,可以輕易地部屬多台相同功能與內容的虛擬機器,而以低成本實現高可用性的優勢。在伺服器虛擬化方案中,高可用性也是各家主打的賣點之一。

            (more...)

            Linux的iptables防火牆設定記事

            Linux的iptables防火牆設定記事

            2011-07-22_160136 view_iptables

            iptables是Linux作業系統中常見的防火牆套件,中文的維基百科也有介紹iptables。它可以用來設計靈活的過濾規則,並以簡單的語法進行設定,是Linux的網管人員必須學習操作的套件。架設伺服器時,為了防止被惡意攻擊、入侵,網管人員都必須要一併設定防火牆。但是高靈活性的iptables設定起來門檻也相當的高,往往讓初學者不知該從何設起。

            我最近鑽研iptables的設定,參考了Linux網管人員必讀的鳥哥的Linux私房菜中的iptables實際設定,並根據身邊的網路伺服器環境做了些修改,想辦法讓iptables的設定與使用讓人簡單易懂。

            這一篇就是分享我設定iptables的腳本檔,介紹安裝與使用方法,供其他人設定iptables時作為參考。


            iptables腳本檔防火牆設定概述

            這些腳本檔是參考鳥哥的iptables實際設定修改而成,iptables腳本檔可以從以下網址下載:

            在pulipuli.iptables.zip裡面有六個檔案。以sh副檔名的三個檔案是可以執行的腳本檔,其他三個則是設定檔。

            以下簡單敘述這些腳本檔的目的,稍後會再詳細介紹腳本檔的內容與用法。

            • iptables.rule.sh:設定iptables的主要規則。以下三個檔案是依附此腳本的設定檔:
              • iptables.deny:設定要阻擋的IP。
              • iptables.allow:設定要允許的IP。
              • iptables.service:設定要允許的連接埠。
            • reset_iptables.sh:清除iptables的設定。
            • view_iptables.sh:觀察iptables的設定。
            iptables.rule.sh的功用

            其中,主要的設定都集中在iptables.rule.sh中,裡面設定了相當多常見的防火牆規則。以下我簡單地敘述它的綱要:

            • 設定核心的網路功能
            • 重設防火牆設定:包括阻擋所有INPUT封包
            • 開放 lo 本機網路卡
            • 開放由本機發出的回應封包
            • 阻擋指定的IP:使用iptables.deny設定檔
            • 允許指定的IP連入:使用iptables.allow設定檔
            • 允許 0 3 3/4 4 11 12 14 16 18 ICMP封包進入
            • 允許指定的連接埠連入:使用iptables.service設定檔
            • 儲存防火牆設定

            以下是iptables.rule.sh的內容:

            #!/bin/bash

            # 請先輸入您的相關參數,不要輸入錯誤了!
            EXTIF="eth0" # 這個是可以連上 Public IP 的網路介面
            RULE_PATH="/root/iptables" #iptables的設定路徑,最後不要有「/」
            export EXTIF RULE_PATH

            # 第一部份,針對本機的防火牆設定!##########################################
            # 1. 先設定好核心的網路功能:

            # 防止SYN Flloding的DoS攻擊
            echo "1" > /proc/sys/net/ipv4/tcp_syncookies

            # 防止ping的Dos攻擊
            echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

            #rp_fileter:啟動逆向路徑過濾(Reverse Path Filtering)
            #log_martians:記錄不合法的IP來源到/var/log/meesages
            for i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; do
            echo "1" > $i
            done

            # 以下建議關閉
            # accept_source_route:來源路由
            # accept_redirects:IP相同時採用最短路徑
            # send_redirects:與前者類似,發送ICMP redirect封包
            for i in /proc/sys/net/ipv4/conf/*/{,accept_source_route,accept_redirects,send_redirects}; do
            if [ -f $i ]; then
            echo "0" > $i
            fi
            done

            # 2. 清除規則、設定預設政策及開放 lo 與相關的設定值
            PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
            iptables -F
            iptables -X
            iptables -Z
            iptables -P INPUT DROP
            iptables -P OUTPUT ACCEPT
            iptables -P FORWARD ACCEPT

            #接受lo本機介面網路卡
            iptables -A INPUT -i lo -j ACCEPT

            #接受由本機發出的回應封包
            iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

            # 3. 啟動額外的防火牆 script 模組
            if [ -f $RULE_PATH/iptables.deny ]; then
            sh $RULE_PATH/iptables.deny
            fi

            if [ -f $RULE_PATH/iptables.allow ]; then
            sh $RULE_PATH/iptables.allow
            fi

            # 4. 允許某些類型的 ICMP 封包進入
            # 詳細請參考ICMP協定 http://linux.vbird.org/linux_server/0110network_basic.php#tcpip_network_icmp
            AICMP="0 3 3/4 4 11 12 14 16 18"
            for tyicmp in $AICMP
            do
            iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
            done

            # 5. 允許某些服務的進入,請依照你自己的環境開啟
            if [ -f $RULE_PATH/iptables.service ]; then
            sh $RULE_PATH/iptables.service
            fi

            # 6. 最終將這些功能儲存下來吧!
            /etc/init.d/iptables save

            各個指令的意義請參考鳥哥的Linux私房菜 第九章、防火牆與NAT伺服器介紹,在此不贅述。以下我就直接介紹如何安裝、設定與使用這些腳本檔。


            1. iptables腳本檔安裝

            iptables的設定必須以 root 管理者 的身分操作,因此這一篇所有的動作都請以 root 進行吧。

            另外,為了避免防火牆配置錯誤導致伺服器無法遠端連線,建議請在可以直接控制本機的時候再進行設定。以免設定錯誤導致伺服器無法連線的時候,再遠端也無能為力啊。

            1-1. 檔案下載與配置

            請下載以下檔案:

            將該zip檔案上傳到伺服器的指定目錄「/root/」。並以unzip解壓縮。unzip解壓縮的指令如下:

            [root@dspace-dlll ~]# unzip pulipuli.iptables.zip -d /root

            iptables的腳本檔就會出現在「/root/iptables」目錄中。

            當然,你也可以在其他電腦解壓縮之後再上傳到「/root/iptables」目錄。

            1-2. 修改sh權限為700

            為了要讓副檔名為sh的腳本檔可以執行,必須將他們的權限設為700,意思是只有擁有者root才能執行。

            設定權限的指令如下:

            [root@dspace-dlll ~]# chmod 700 /root/iptables/*.sh


            2. iptables腳本檔設定

            在主要設定中,我們會先讓iptables阻擋所有外來連線。因此我們要在以下三個檔案中設定特別阻擋或允許的IP與連接埠設定。以下主要設定的有三個檔案,他們的優先順序也是由先到後:

            1. iptables.deny:設定要阻擋的IP。
            2. iptables.allow:設定要允許的IP。
            3. iptables.service:設定要允許的連接埠。
            2-1. iptables.deny 設定要阻擋的IP

            檔案的內容如下,紅字的部份是要阻擋的IP

            #!/bin/bash

            # 這份設定要搭配iptables.rule.sh運作

            # 底下填寫的是『你要抵擋的IP!』

            # iptables -A INPUT -i $EXTIF -d members.lycos.co.uk -j DROP #不能使用Domain Name,會被iptables轉換成IP
            iptables -A INPUT -i $EXTIF -s 213.131.252.251 -j DROP #阻止後門程式連入
            iptables -A INPUT -i $EXTIF -d 213.131.252.251 -j DROP #阻止後門程式連出

            在此範例中,我將「213.131.252.251」這個IP列為阻擋的對象。一個IP有兩條設定,一個是加上「-s」參數的阻擋連入,一個是加上「-d」參數的阻擋輸出。如果你要擋下其他的IP的話,可以據此依樣畫葫蘆建立相同的設定,然後更換IP即可。

            2-2. iptables.allow 設定要允許的IP

            檔案的內容如下,藍字的部份是要允許一定範圍的IP紅字部分是要允許的IP

            #!/bin/bash

            # 這份設定要搭配iptables.rule.sh運作

            # 底下則填寫你允許進入本機的其他網域或主機

            #iptables -A INPUT -i $EXTIF -s 140.119.61.0/255.255.255.0 -j ACCEPT #140.119.61.*的電腦,不建議開放
            iptables -A INPUT -i $EXTIF -s 140.119.61.254 -j ACCEPT #允許指定IP連線

            此例中,我設定「140.119.61.0/255.255.255.0」,也就是「140.119.61.*」這個範圍的IP都可以允許連線,不論是用哪種連接埠。(因為連接埠的設定iptables.service是在iptables.allow之後執行)但是這種大範圍的允許規則比較危險,除非你非常信任這個區域網路,否則不建議開放。因此我將此條規則前面加上「#」註解掉,讓它無法生效。

            另外我指定「140.119.61.254」這個IP,允許他連線到伺服器,而不論是用哪種連接埠。如果你通常使用固定IP來管理這台伺服器,那麼我比較建議使用這種用法。

            2-3. iptables.service 設定要允許的連接埠

            檔案的內容如下,紅字的部份是要允許的連接埠藍字的部份是連接埠預設對應的服務名稱

            #!/bin/bash

            # 這份設定要搭配iptables.rule.sh運作

            # 5. 允許某些服務的進入,請依照你自己的環境開啟
            #iptables -A INPUT -p TCP -i $EXTIF --dport 21 --sport 1024:65534 -j ACCEPT # FTP
            #iptables -A INPUT -p TCP -i $EXTIF --dport 22 --sport 1024:65534 -j ACCEPT # SSH 不建議直接開放,請允許IP即可
            #iptables -A INPUT -p TCP -i $EXTIF --dport 25 --sport 1024:65534 -j ACCEPT # SMTP
            #iptables -A INPUT -p UDP -i $EXTIF --dport 53 --sport 1024:65534 -j ACCEPT # DNS
            #iptables -A INPUT -p TCP -i $EXTIF --dport 53 --sport 1024:65534 -j ACCEPT # DNS
            iptables -A INPUT -p TCP -i $EXTIF --dport 80 --sport 1024:65534 -j ACCEPT # WWW
            #iptables -A INPUT -p TCP -i $EXTIF --dport 110 --sport 1024:65534 -j ACCEPT # POP3
            #iptables -A INPUT -p TCP -i $EXTIF --dport 389 --sport 1024:65534 -j ACCEPT # LDAP
            #iptables -A INPUT -p TCP -i $EXTIF --dport 443 --sport 1024:65534 -j ACCEPT # HTTPS SSL
            #iptables -A INPUT -p TCP -i $EXTIF --dport 8080 --sport 1024:65534 -j ACCEPT # Tomcat
            #iptables -A INPUT -p TCP -i $EXTIF --dport 10000 --sport 1024:65534 -j ACCEPT # Webmin

            在iptables.rule.sh中,我們先將所有連線都擋掉,而以白名單的方式設定要允許的連接埠。這邊設定的連接埠,可以讓任何電腦藉此連線到伺服器。

            然而,我們一般伺服器開放的服務並沒有這麼多,通常只有開放WWW網頁伺服器而已,因此大部分的服務我都用「#」註解掉不使用。請依照你的需求來決定是否要開放。

            必須要注意的是,我並不建議在此開放管理用的連接埠,像是ssh用的22、Webmin用的10000。我建議應該要設定 iptables.allow 指定允許的IP連線即可,這些IP不會受到iptables.service的連接埠設定限制。不要將管理用的連接埠開放到網際網路,是比較安全的作法。


            3. 執行iptables腳本檔

            3-1. 執行iptables.rule.sh:設定生效

            設定完上述三個檔案之後,接下來執行 iptables.rule.sh 腳本檔,設定才會生效。

            執行的指令與正常運作的訊息如下:

            [root@dspace-dlll ~]# /root/iptables/iptables.rule.sh
            正在儲存防火牆規則到 /etc/sysconfig/iptables: [ 確定 ]

            3-2. 執行view_iptables.sh:檢查設定

            為了確認iptables的設定是否有正常寫入,你可以執行 view_iptables.sh 這個腳本檔。其實它的內容只是「iptables –L –n -v」 ,也就是iptables查詢設定的指令。為了簡便記憶,我把它連同參數一起寫成 view_iptables.sh 這個腳本檔。

            執行 view_iptables.sh 的指令與正常運作的訊息如下:

            [root@dspace-dlll ~]# /root/iptables/view_iptables.sh
            Chain INPUT (policy DROP 0 packets, 0 bytes)
            pkts bytes target prot opt in out source destination
            65 5564 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
            55 3344 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
            0 0 DROP all -- eth0 * 213.131.252.251 0.0.0.0/0
            0 0 DROP all -- eth0 * 0.0.0.0/0 213.131.252.251
            0 0 ACCEPT all -- eth0 * 140.119.61.254 0.0.0.0/0
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 0
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 3
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 3 code 4
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 4
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 11
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 12
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 14
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 16
            0 0 ACCEPT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 icmp type 18
            0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp spts:1024:65534 dpt:80

            Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
            pkts bytes target prot opt in out source destination

            Chain OUTPUT (policy ACCEPT 98 packets, 8728 bytes)
            pkts bytes target prot opt in out source destination

            看到設定都有順利存入iptables之後,防火牆設定就大功告成囉!

            reset_iptables.sh:清除iptables設定

            有時候防火牆設定並不如人意,你又不確定是哪裡設定錯誤的時候,你可以用 reset_iptables.sh 來暫時清除所有防火牆的設定。

            reset_iptables.sh的檔案內容如下。

            #!/bin/bash

            # 清除iptables的所有設定,並允許所有連線
            iptables -F
            iptables -X
            iptables -Z
            iptables -P INPUT ACCEPT
            iptables -P OUTPUT ACCEPT
            iptables -P FORWARD ACCEPT

            # 儲存設定
            #/etc/init.d/iptables save #先不儲存,重開機之後就會恢復之前的設定

            請注意最後一行,我將儲存設定的指令註解掉,因此清除iptables設定的動作並不會永久儲存,下次重新開機或重新啟動iptables的時候,之前的設定就會恢復。如果你有必要永久儲存的話,請取消這一行的註解吧。

            reset_iptables.sh 的執行指令如下:

            [root@dspace-dlll ~]# /root/iptables/reset_iptables.sh


            結語

            網路上對iptables規則設定的討論相當多,由於每台伺服器所在的網路環境都有所不同,因此似乎沒有能夠完美應對所有環境的設定。

            我也還在鑽研iptables中,這個腳本檔也可能有些問題。在此歡迎大家多多指教。

            (more...)

            OSSIM 初步使用之知識管理功能( Knowledge DB)感想

            布丁布丁吃布丁

            OSSIM 初步使用之知識管理功能( Knowledge DB)感想

            2011-07-21_173525 test(mask)

            我簡單地利用OSSIM在Asset新增一台伺服器,並馬上掃描這台伺服器上的服務服務,運作很順利。在初步把玩OSSIM的過程中中,我特別關注知識管理功能(Knowledge DB),然後我馬上就遇到了一些問題。

            以下我想簡單地敘述一下我遇到的問題,以及我對OSSIM的知識管理功能的看法。


            操作問題

            基於中文語系的使用者,我當然是先關注OSSIM能不能順利使用中文。

            介面沒有中文語系

            image

            image

            在Profile裡面可以設定User language為Traditional Chinese,Configuration裡面也可以設定Language為Traditional Chinese,但是介面仍然是英文,這讓我感到非常奇怪。

            Knowledge DB無法上傳檔案

            image

            知識管理功能可以上傳檔案,但是在上傳檔案的時候出現了以下PHP錯誤:

            Warning: mkdir() [function.mkdir]: Permission denied in /usr/share/ossim/www/repository/repository_attachment.php on line 78

            Warning: copy(/usr/share/ossim/uploads/2/2_2.jpg) [function.copy]: failed to open stream: No such file or directory in /usr/share/ossim/www/repository/repository_attachment.php on line 79

            雖然檔案有存進資料庫,但其實並沒有成功上傳。

            後來我調整了一下「/usr/share/ossim/uploads」檔案權限(777全開)、設定php.ini的upload_tmp_dir = /usr/share/ossim/uploads之後,不知為何突然就可以上傳了。總之詳情不太知道為何,網路上也很少人討論到OSSIM這個問題,怪哉。

            Knowledge DB刪除檔案問題

            如果在知識管理功能上傳的檔案部分檔名包含「-」或某些特殊符號,將會導致OSSIM不能順利刪除該檔案,只能將該檔案從資料庫中移除而已。不過這純粹是PHP寫法的問題就是了。

            Knowledge DB無法處理中文

            image

            雖然文件的標題(Title)、內文(Text)、關鍵字(Keyword)可以輸入中文,但偶爾會出錯,不知道是不是卡到「許功蓋」的PHP萬年老問題。

            此外,上傳文件檔案時如果檔名為中文,則會被替換成「?」。因此OSSIM上傳檔案不可以使用英文數字以外的文字。

            image

            而且搜尋時也無法處理中文,更別提什麼斷詞處理與中文的全文檢索了。


            知識管理功能初步評估

            初次接觸OSSIM的時候,會被他複雜的操作方式震撼到。它是比Spiceworks還要複雜的管理系統,要操作它並不是這麼容易的一件事情。

            不過,比起OSSIM複雜的掃描偵測、記錄、報告、警示功能,我仍然比較在意的是它的知識管理功能(Knowledge DB)是否實用。

            除了上述的中文、上傳、刪除問題之外,OSSIM知識管理功能還有分類功能相當薄弱的問題:

            • 他的知識管理功能可以搜尋,但卻沒有分類資料夾可用;
            • 儘管可以Link到指定Host、卻沒辦法反向找到Link的文件,這樣就不能從指定Host找到相關的所有文件,因此不能用Link來進行分類。

            相較之下,Spiceworks至少還可以自己編寫入口網站(Portal)來組織內容,以及為每一台主機撰寫筆記跟附加一些文件,知識管理功能比起OSSIM來得強大。

            我最近研究幾個類似的網管軟體,大部分的軟體都只實作掃描、偵測、通知等功能,至多只有給被掃描的伺服器簡單的純文字敘述欄位。在這些網管軟體中,Spiceworks跟OSSIM是裡面少數具備可以上傳文件的系統,讓網管人員可以確實地將伺服器的各種細項記錄。然而,這兩個軟體的知識管理功能都還不太實用就是。


            結語

            也許有人會覺得奇怪,雖然我是在使用一個網路設備管理軟體,但為何我卻如此在意它的知識管理功能呢。

            儘管網路掃描工具已經可以掃描伺服器上的大多數資訊,但是仍有許多背後的知識,是靠這些工具無法掃描、記錄的。我需要一個可以為每台伺服器保留額外撰寫記錄的場所,這樣我就可以把一些常用的文件,像是Linux常用指令速查手冊、iptables防火牆規則等資料保留下來,留給後人查閱。

            儘管我也可以獨立架設一個知識管理系統,而讓他跟伺服器之偵測、掃描、通知等工具分開設定,但那又覺得不太像是一個管理中心,似乎仍有不少管理上的麻煩。

            最近我實在是為此感到苦惱且迷惑,我到底該怎麼做好呢……

            (more...)