:::
顯示具有 Zentyal 標籤的文章。 顯示所有文章

用OpenVZ安裝Zentyal失敗記錄

用OpenVZ安裝Zentyal失敗記錄

openvz

為了繼續之前提出的DLLL-CIAS第四版架構,我開始試著在Proxmox VE 3.2上用OpenVZ來安裝Zentyal (附帶一提,Proxmox VE本身是以VirtualBox架設的,因此是全部都在虛擬機器下運作)。我以ubuntu-14.04-x86_64.tar.gz為基礎,用apt-get來安裝Zentyal。過程很順利,但問題卻卡在最後的網路上:無法建立具有內網與外網的NAT。我嘗試了很多方法來解決這個問題,但總歸來說,無法建立的原因可歸納為兩個門檻:1. OpenVZ的veth網卡只能連到未公開的虛擬網路;2. OpenVZ的veth與venet之間無法轉遞封包。以下來說明我遇到的這兩個問題。


1. OpenVZ的veth網卡只能連到未公開的虛擬網路

image

在討論這個問題之前,我們必須先釐清OpenVZ的兩種網路模式:venet跟veth。下表是veth跟venet的差異比較:

veth跟venet的差異
Feature
特徵
veth venet
可使用的虛擬機器類型 OpenVZ
KVM
OpenVZ
可透過網頁管理
直接配置網路IP
No Yes
MAC address
網卡位置
Yes No
Broadcasts inside CT
封包會在虛擬機器間廣播
Yes No
Traffic sniffing
封包攔截
Yes No
Network security
網路安全
Low High
Can be used in bridges
可否用於橋接器
Yes No
IPv6 ready
可否使用IPv6
Yes Yes
Performance
效能
Fast Fastest

OpenVZ預設使用的是venet (Virtual NETwork),可以直接給定IP,速度非常快。但是venet沒有MAC位址,使用上較為受限,可能不適合作為Zentyal的網路。因此這次我選擇使用veth (Virtual ETHernet)來架設,veth是用模擬真實的網卡的方式,可給虛擬機器安裝如「eth0」的虛擬網卡,因此配置上會比較貼近我們真實使用情境下安裝Zentyal的模式。

我原本是這樣想,但很遺憾的是,veth並沒有照我想的去運作。建立的veth網卡只能在虛擬機器之前彼此連線,但是卻無法連上網際網路。

用KVM的方式新增veth:失敗

我是以Ubuntu 14.04來建立虛擬機器(又稱為container),一開始是用類似KVM的方式來新增網卡,但沒有成功。大致上步驟如下:

  1. 將虛擬機器關機。
  2. 新增veth網卡,Bridge設為vmbr0 (預設),其他參數、包括MAC位址,全由Proxmox VE自動指定。
  3. 虛擬機器開機。
  4. 在console端進入虛擬機器的指令列,設定網路。 (因為網路尚未設定好,所以沒辦法用SSH連入)
    以下都是虛擬機器 (container) 中的操作。
  5. /etc/network/interfaces中設定eth0:
    auto eth0
    iface eth0 inet static
            address 192.168.11.118
            netmask 255.255.255.0
            gateway 192.168.11.99
  6. 重新啟動網路:
    [container]# /etc/init.d/networking restart
  7. 使用ifconfig,確認eth0有正常啟動
  8. 使用ping,無法連到網際網路。
參考OpenVZ的veth說明來設定:失敗

由於用KVM設定veth的方法失敗了,所以我改找OpenVZ官方網站的veth說明來操作。該網頁介紹了很多方法,從簡單的設定使用IPv4的直接路由使用IPv6的直接路由、或是建立橋接器(brdige)等等。我按照上面的指示操作,但大部分都失敗了。

在OpenVZ的介紹中有幾個動作是之前沒有做過的:

  • 確保vzethdev載入:
    modprobe vzethdev
  • 開啟網路卡的forwarding跟proxy_arp

    [host-node]# ifconfig veth101.0 0
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/forwarding
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/veth101.0/proxy_arp
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
    [host-node]# echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

其他設定網卡的方法大致上類似。但是很遺憾的是,這些設定依然是無法讓veth網卡連線到網際網路。

奇妙的是,網路上許多人在OpenVZ中使用veth看起來都很順利,可是我自己使用OpenVZ從以前到現在就沒有veth順利連線的印象,這究竟是怎麼會是呢?如果有高手看到我這篇的話,希望能夠在下面留言欄為我解惑解惑。


2. OpenVZ的veth與venet之間無法轉遞封包

由於veth未能照預期的形式運作,所以我改轉用venet來設定網卡。

Zentyal只能抓到venet一張網卡

image

儘管虛擬機器可以設定兩個venet的IP,各別配置對外網路用的IP: 192.168.11.117跟對內網路用的IP: 10.0.0.254,但結果會如上圖所示,Zentyal只能抓到一個venet網卡。

這是因為venet網卡只有venet0,兩個IP是用虛擬網路卡的方式模擬出來的。我們可以用ifconfig來觀察虛擬機器的設定:

image

[container]# ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:200 errors:0 dropped:0 overruns:0 frame:0
          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:10000 (10.0 KB)  TX bytes:10000 (10.0 KB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:35 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4480 (4.4 KB)  TX bytes:6905 (6.9 KB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:192.168.11.117  P-t-P:192.168.11.117  Bcast:192.168.11.117  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

venet0:1  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.0.0.254  P-t-P:10.0.0.254  Bcast:10.0.0.254  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

 

Zentyal設定邏輯中對外網路與對內網路有相當大的差異,若使用venet會導致Zentyal無法判斷那一張網卡是對外網路(External, WAN)還是對內網路,因此並不是一個可行的方案。

venet可連上網際網路,但無法架設NAT

即使如此,若使用venet的兩個IP來設定,對內網路依然連得到對內網路的虛擬機器、對外網路則可以讓網際網路的電腦來連線。不過光是這樣依然無法做成NAT的網路架構。

一般使用情境下,只要在Zentyal當中設定好對外網路與對內網路的網卡,Zentyal就會自動設定成NAT。若是不仰賴套裝軟體,也可以用iptables來實作NAT。我參考Ubuntu Server 12.04 LTS 設定 iptables 實現 NAT Server這篇的做法來做,關鍵的設定是在設定 IP Forwarding and Masquerading:
iptables --table nat --append POSTROUTING --out-interface venet0:0 -j MASQUERADE
iptables --append FORWARD --in-interface venet0:1 -j ACCEPT

但是很遺憾的是,依然無法成功。然後我試著用veth來作為內部網路的網卡,結果反而連venet都無法連線。我猜是因為Zentyal會蓋掉Proxmox對虛擬機器的網路設定,兩者導致了衝突。


結論:應該使用KVM來架設Zentyal

直到剛剛我都還在嘗試各種設定,但是總是該設一個期限。當我把這篇失敗的記錄寫完之後,我想也差不多該終止以OpenVZ架設Zentyal的研究,而回歸到原本使用KVM架設的規劃

想來還是有點不甘心,以OpenVZ架設的Zentyal壓縮後的備份檔案大小只有800MB不到,而且啟動速度又快。回去使用KVM的話,虛擬網卡會有網路轉換的額外負荷,只能說是「可以用」但稱不上是「很有效率」。只是因為伺服器虛擬化之後管理起來比較方便而已。

好吧,雖然不是一篇成功的研究,不過總是該打起精神,這條路就先到此為止吧。

(more...)

DLLL-CIAS介紹 / DLLL-CIAS Introduction

DLLL-CIAS介紹 / DLLL-CIAS Introduction

image

這篇發佈我在2014年6月底的「雲端科技與圖書館行動服務研習班」中課程「雲端平台基礎設施建置實務──DLLL-CIAS介紹」的課程投影片。

This article is the slide of my course “Cloud Technology and Library Mobile Service Workshop” in July, 2014. Finally is my thought of this workshop.


DLLL-CIAS是什麼? / What is DLLL-CIAS

DLLL-CIAS是政大圖檔所數位圖書館與數位學習實驗室中我所開發的開放原始碼雲端平台方案。主要目的是希望能夠讓經費不多的中小型單位也能夠用現有伺服器資源架設好用的IaaS雲端平台。其他介紹請看「DLLL-CIAS雲端平台架設與使用專題目錄」。

課程投影片 / Course Slide

Google Drive的原始版本投影片 / Slide Original Version on Google Drive

另外值得一提的是,這篇投影片是一開始是以Google Drive投影片製作。

image

雖然Google Drive投影片製作起來並不如Power Point一般的精緻(另一方面也是因為這個版本是供列印用的,所以特別以高對比黑白相間的範本製作),但是Google Drive投影片製作功能卻是相當足夠使用。更重要的是,Google Drive的協同製作跟註解(comment)完全贏過Windows的OneDrive。

這學期我大量使用Google Drive的協同編輯功能,像是跟人一起編修論文計劃書、規劃投影片內容,這份投影片也是從Google Drive開啟編輯起。我先規劃投影片大綱,記錄每一張投影片欲講述的內容,以及相關參考資料的來源。然後各張投影片的內容則是跟實驗室各位助理一起填寫資料,接著我再重整資料內容。當投影片內容確定之後,最後我再下載成Power Point檔案作進一步的排版美化。

image

最後排版而成的版面就是這樣子了。

Google Drive與Power Point轉換編輯注意事項 / Difference Between Google Drive and Power Point

使用Google Drive製作投影片跟Power Point製作投影片有幾個重點差異需要注意:

  • Power Point匯入到Google Drive時樣式容易跑掉,但相反的從Google Drive匯入到Power Point問題卻不大。
  • Google Drive不支援投影片頁碼、不支援陰影、不支援連接線的折線。這幾種功能都是投影片常用的重要特色,請自行斟酌。
  • 請善加利用「投影片母片」(Power Point用詞)、「主投影片」(Google Drive用詞),可以保持投影片格式一致。

有機會我再詳細聊一下Google Drive協同編輯的心得吧。


結語:終於把研習班課程完成了 / Conclusion: The Experience of Workshop

這份投影片發佈之後,研習班的工作總算是告一段落了。

這次研習班跟其他研習班最大的差異,就是在於有很多實作的內容,而不是一直坐著聽老師授課。這次研習班主要兩個實作課程,一個是KALS合作標註閱讀學習,另一個則是這個DLLL-CIAS實作,這兩個實作都讓我煞費苦心。DLLL-CIAS要架設許多虛擬機器伺服器這點顯而易見,而KALS要弄到讓學員能夠在系統上順利操作,這背後其實也修改了許多細節。之前去IMLF 2014時就已經拖延了許多工作,然後之後投入在這研習班上,課程的部分就有點顧不住了,真是對不起老師啊。

雖然期末與這研習班整個像是災難一樣鋪天蓋地而來,但最後總算能夠過去。上課過程中有些兵荒馬亂,感謝各位助理大力相挺,沒有你們我一個人真的完成不了這些東西,這也包括了之前寫的幾篇DLLL-CIAS的細部操作文章

研習班上課過程中,我本來以為這麼硬的內容,應該會讓大家聽到一片瞌睡。結果時候聽完還蠻多人跑來跟我比較他們圖書館使用的VMware方案之間的差異,也有平時不碰技術的人跟我表達這堂課讓他獲益,有些人甚至想要在自己家裡架起這套方案。即使是客套話,我也覺得很開心。

希望下次能夠吸取這次的經驗,然後再帶給大家更好的課程內容吧。

(more...)

設定Zentyal DHCP伺服器 / Setup DHCP Server in Zentyal

設定Zentyal DHCP伺服器 / Setup DHCP Server in Zentyal

image

這一份教學說明如何設定ZentyalDHCP伺服器,以提供動態IP給區域網路中的伺服器使用。

In this article, I will describe the steps to setup DHCP server in Zentyal. DHCP server could provide dynamic network configuration for servers in DLLL-CIAS local network.

  • 對應講義:PART-2-STEP-1-3-2
  • 主題:設定Zentyal DHCP伺服器 

教學目錄 / Table of Contents

  1. Zentyal 3.0.2安裝準備
  2. 安裝Zentyal 3.0.2
  3. DLLL-CIAS之Zentyal網路設定
  4. [目前在此篇 >> ] 設定Zentyal DHCP伺服器
  5. Zentyal安裝DLLL-CIAS Router雲端網路模組
  6. Zentyal設定DLLL-CIAS Router雲端網路模組

DHCP伺服器 / About DHCP Server

DHCP是一種用於區域網路中的通訊協定。當區域網路中有伺服器需要設定網路時,該伺服器會查詢區域網路中是否有DHCP伺服器,並跟該DHCP伺服器請求IP設定,最後設置到自己的伺服器上。關於DHCP的運作方式詳細可以看鳥哥的說明

在DLLL-CIAS中,我們也要架設DHCP伺服器,讓區域網路的虛擬機器能夠方便地連上網路。雲端網路模組也需要搭配DHCP伺服器來依據虛擬機器的MAC網卡位址固定他分配的IP位址。因此以下教學將帶大家在Zentyal中設定DHCP伺服器。


啟用DHCP模組 / Enable DHCP Module

  1. 先登入Zentyal網頁管理介面。
    image_thumb1
  2. 進入左邊導覽列的Module Status (模組狀態)
  3. 將DHCP的Status (狀態)打勾
    2014-06-24_141121
  4. 出現確認事項,按「ACCEPT」按鈕確認。
    2014-06-24_141238

DHCP伺服器設定 / Setup DHCP Server

  1. 在左邊導覽列下面找到DHCP進入。
    2014-06-24_141154
  2. DHCP中會有兩張網卡,我們關閉eth0 對外廣域網路的設定,取消前面Enabled的打勾;然後進入eth1 對內區域網路的COnfiguration,點選齒輪按鈕。
    2014-06-24_141340
  3. 這是eth1網卡的DHCP設定畫面,我們要設定的地方在下面,請往下捲動。
    2014-06-24_141351
  4. 找到Ranges (範圍),按下「+ Add new」按鈕。
    2014-06-24_141410
  5. 接著設定要配給的IP範圍。請照以下設定
    - Name: dlll-cias-dhcp
    - From: 10.10.0.1
    - To: 10.10.0.254
    然後按下「ADD」按鈕
    2014-06-24_141449
  6. 確認設定已經新增了。
    2014-06-24_141500
  7. 到左上角按下「Save changes」,將設定確實存入Zentyal之中。這樣DHCP伺服器就設定完成了。
    2014-06-24_141509

下一篇:Zentyal安裝DLLL-CIAS Router雲端網路模組 / Install DLLL-CIAS Router Module in Zentyal

為了更方便管理DLLL-CIAS雲端平台的網路,我們還需要為Zentyal安裝我自行開發的DLLL-CIAS Router雲端網路模組。詳細請看下一篇!

下一篇:「Zentyal安裝DLLL-CIAS Router雲端網路模組」。

(more...)

DLLL-CIAS雲端平台架設與使用專題目錄 / DLLL-CIAS Cloud Platform Installation & Usage Catalog

DLLL-CIAS雲端平台架設與使用專題目錄 / DLLL-CIAS Cloud Platform Installation & Usage Catalog

image

DLLL-CIAS是政大圖檔所數位圖書館與數位學習實驗室中我所開發的開放原始碼雲端平台方案。我預定於103學年的「雲端科技與圖書館行動服務研習班」中介紹此方案,希望能夠讓經費不多的中小型單位也能夠用現有伺服器資源架設好用的IaaS雲端平台。這篇將列出DLLL-CIAS雲端平台架設與使用相關文章的目錄。

DLLL-CIAS is an open source IaaS solution for my laboratory, Digital Library and Learning Laboratory in  National Chengchi University Graduate Institue of Library, Information and Archival Studies. I will introduce DLLL-CIAS in a workshop at June 2014. DLLL-CIAS is very suitable for small organization to build a low-cost, powerful and easy to use IaaS cloud platform. This catalog will list articles of DLLL-CIAS build and usage instruction.


DLLL-CIAS介紹 / DLLL-CIAS Introduction

DLLL-CIAS安裝(1):網路管理伺服器 / DLLL-CIAS Installation (1): Network Management Server

DLLL-CIAS安裝(2):資料儲存伺服器 / DLLL-CIAS Installation (1): Storage Server

DLLL-CIAS安裝(3):虛擬機器管理伺服器 / DLLL-CIAS Installation (1): Virtual Machine Management Server

DLLL-CIAS使用 / Usage of DLLL-CIAS

DLLL-CIAS的未來發展 / DLLL-CIAS Next Version

(more...)

Zentyal 3.0.2安裝準備 / Zentyal Installation Preparation

Zentyal 3.0.2安裝準備 / Zentyal Installation Preparation

zentyal-logo

這一份教學是在說明Zentyal 3.0.2安裝前需注意的事項,包括Zentyal的介紹、下載、硬體需求等等。

In this article, I will describe the preparation to install Zentyal 3.0.2. There are introduction of Zentyal, CD-ROM ISO file download link, hardware requirements for installation.

  • 對應講義:PART-2-STEP-1-1
  • 主題:Zentyal 3.0.2安裝前準備

教學目錄 / Table of Contents

  1. [目前在此篇 >> ] Zentyal 3.0.2安裝準備
  2. 安裝Zentyal 3.0.2
  3. DLLL-CIAS之Zentyal網路設定
  4. 設定Zentyal DHCP伺服器
  5. Zentyal安裝DLLL-CIAS Router雲端網路模組
  6. Zentyal設定DLLL-CIAS Router雲端網路模組

Zentyal介紹 / Introduction of Zentyal

Zentyal是基於Linux伺服器的開放原始碼網路管理系統,適合中小型企業網路環境使用。他的特色在於容易安裝(雖然在這篇教學中,他顯然地比Proxmox VE和FreeNAS複雜很多),也提供了易於上手的網頁管理介面,可使用瀏覽器在遠端調整系統設定。

Zentyal分成開放原始碼社群版本與收費版本,也有提供免費註冊的訂閱服務,可以讓你的Zentyal伺服器設定上傳到Zentyal公司提供的雲端備份空間。不過這可能會涉及把你單位中的私密網路設定貢獻給別人公司,使用時得在便利性與隱私性的平衡上進行考量。

Zentyal能安裝不同功能模組以因應各種不同環境所需的功能。例如:

  • 網路閘道:防火牆連接埠轉遞VPN
  • 網路服務:DNSDHCP
  • 辦公室支援:檔案分享、印表機共享、資料備份與還原

Zentyal也支援自行開發模組,我之前有寫過一篇開發SSH模組的入門介紹,本教學中也會提到為了DLLL-CIAS開發的DLLL-CIAS Router雲端網路模組。

Zentyal下載 / Download Link of Zentyal

官方連結:

Zentyal 3.0.2 64位元ISO光碟映像檔案備份:

以下的教學全部都是以Zentyal 3.0.2 64位元教學。教學畫面使用VirtualBox安裝。

安裝硬體設備需求 / Hardware Requirements

在本教學的Zentyal安裝中,您的伺服器必須符合以下需求:

  • 2張網路卡:一張網路卡對外廣域網路連線、一張網路卡對內區域網路連線。
  • 網路卡速度至少為GbE網路等級以上,如果支援10GbE等級更佳。網路等級的介紹,詳情請看維基百科
  • CPU必須支援64位元

在本教學中使用VirtualBox安裝的設定如下圖所示:(初始安裝的時候,要記得把Zentyal的ISO光碟檔案掛載到存放裝置的光碟機中喔。)

image_thumb[1]


下一篇:安裝Zentyal 3.0.2 / Install Zentyal 3.0.2

準備好安裝軟硬體之後,下一篇就要正式開始安裝啦。

下一篇:「安裝Zentyal 3.0.2」。

(more...)

Zentyal設定DLLL-CIAS Router雲端網路模組 / Configuration of DLLL-CIAS Router

Zentyal設定DLLL-CIAS Router雲端網路模組 / Configuration of DLLL-CIAS Router

PART-2-STEP-6-zentyal-reverse-proxy-002

這一份教學我專為Zentyal自製的DLLL-CIAS Router雲端網路模組的操作說明,主要是在描述雲端平台會用到的Back End功能。

In this article is a manual for DLLL-CIAS Router module’s Back End function. DLLL-CIAS Router for Zentyal is the core component for the network management of DLLL-CIAS platform.

(more...)

Zentyal安裝DLLL-CIAS Router雲端網路模組 / Install DLLL-CIAS Router Module in Zentyal

Zentyal安裝DLLL-CIAS Router雲端網路模組 / Install DLLL-CIAS Router Module in Zentyal

image

這一份教學是介紹如何在Zentyal上安裝我自行開發的DLLL-CIAS Router雲端網路模組。這個模組是DLLL-CIAS架構中管理網路的核心元件。

In this aritcle, I will describe how to install DLLL-CIAS Router which I developed into Zentyal. DLLL-CIAS Router module is the core compoment of DLLL-CIAS network management.

(more...)

DLLL-CIAS之Zentyal網路設定 / Zentyal’s Network Configuration for DLLL-CIAS

DLLL-CIAS之Zentyal網路設定 / Zentyal’s Network Configuration for DLLL-CIAS

image

這一份教學是在說明如何設定Zentyal 3.0.2的網路成為DLLL-CIAS的一部分,讓虛擬機器管理伺服器 (Proxmox VE) 跟資料儲存伺服器 (FreeNAS) 可以直接用IP來連線管理。

In this article, I will describe how to configure network for DLLL-CIAS. This configuration will let administator use IP to connect virtual machine manager server (Proxmox VE) and storage manager server (FreeNAS) directly.

(more...)

安裝Zentyal 3.0.2 / Install Zentyal 3.0.2

安裝Zentyal 3.0.2 / Install Zentyal 3.0.2

2014-06-15_153924

這一份教學是在說明Zentyal 3.0.2的安裝歷程。包括從光碟安裝的階段、在桌面端設定的階段、以及開啟遠端管理功能的設定。

In this article, I will describe the installation steps of Zentyal 3.0.2. There are installation from CD-ROM, configuration of Zentyal’s modules and enable remote web administation configuration.

(more...)

Zentyal 3.0動手做模組入門 / Zentyal 3.0 Module Development

Zentyal 3.0動手做模組入門 / Zentyal 3.0 Module Development

image

Zentyal是一個強大的路由器套裝軟體,他也提供了客製化製作模組的功能。我參考Zentyal的說明建立了一個修改SSH連接埠的功能,並記錄一下製作模組時的一些步驟。

Zentyal is a powerful Router and could install custom module. Base on Zentyal module development tutorial, I created a SSH module for modifying SSH port. Following is my create steps.


安裝Zentyal / Install Zentyal & Configuration

image

我安裝的是zentyal-3.0-2-amd64.iso,Zentyal 3.0 64位元版本。安裝在VirtualBox上,並配置兩張網卡:eth0為Host-only,設定為內網;eth1為NAT,作為外網。

我將預設帳號設為Linux的root群組,以省去每次都要sudo的困擾。所以下指令我都不用sudo,因為已經假設是root權限了。

然後我也關閉了Zentyal的桌面功能,作法參考這篇,語法是:

sudo mv /etc/init/lxdm.conf /etc/init/lxdm.conf.nostart

最後我安裝了pound作為後續研究的需要,語法是:

apt-get install pound

Zentyal雖然不難裝,但是也有些稜稜角角的小細節需要額外下指令去克服。詳細安裝細節此處就省略。

Zentyal模組開發教學 / Zentyal module development tutorial

Zentyal已經提供了模組開發教學的網頁文件。我大致上是照著這個步驟來操作,不過有遇到一些問題,此篇一一記錄細節。

安裝開發環境 / Development Environment

要開發Zentyal的模組需要安裝很多東西,以下列出我安裝的東西:

apt-get install build-essential gcc zbuildtools fakeroot

然後在家目錄中下載Zentyal的鷹架工具skel,並調整鷹架工具的權限:

wget https://raw.github.com/Zentyal/zentyal/master/extra/scripts/zentyal-module-skel
chmod +x zentyal-module-skel

這樣就準備好可以開發了。

建立SSH模組鷹架 / SSH Module Scaffolding

我們可以用鷹架工具skel來建立SSH模組鷹架。現在位置是在家目錄(cd ~)底下,指令為:

./zentyal-module-skel SSH ssh

然後就冒出一個空的模組啦。這到這邊為止的進度是教學中的Scaffolding

修改SSH模組 / Revise SSH Module

鷹架模組無法正常運作,所以我們要進行修改。修改的方式教學中寫得很清楚,請看這個網頁。修改之後的結果請看我上傳到GitHub的程式碼

主要修改的程式為:

跟教學文件相比,修改的差異在於設定檔是SSH的/etc/ssh/sshd_config,而參數的樣板service.conf.mas也差異很大。

必須特別要說明的是在參數樣板中要加入#開頭的註解文件時,必須要用以下語法來加入:

% print "# the setting of \"PermitRootLogin without-password\".\n";

注意雙引號""中間要記得脫逸,還有最後要加上\n表示換行。

編譯並安裝SSH模組 / Compile & Install SSH Module

編譯的方法是先移動到模組目錄,然後輸入zentyal-package指令:

cd ~/ssh
zentyal-package

編譯成功的話,模組目錄底下會冒出debs_ppa,裡面是可以安裝的檔案。再來就是安裝編譯好的檔案:

dpkg -i ~/ssh/debs-ppa/zentyal-ssh_3.0_all.deb

如果安裝時沒有特別的錯誤,那就是安裝完成了。我猜這個安裝檔應該可以轉給其他Zentyal系統,讓他們也能安裝你自己製作的模組。

啟用SSH模組 / Enable SSH Module

image

安裝好SSH模組之後,導覽列Core底下會出現SSH。但是它目前還沒啟動,要先到Module Status中,在SSH的Status裡打勾,然後再右上角Sava changes。

這樣就之後就可以正常使用SSH模組了。


結語:只是開始 / Conclusion: Just Begin…

摸了一整天總算搞懂怎麼修改Zentyal。意外地發現它的工具寫得很好用,也不難理解。只是一些細節它沒有說明,讓我試誤了好一陣子。這些細節解決之後,我想要開發新功能應該是得心應手吧。

我目前想要做一個整合pound反向代理伺服器的功能。然後再做一個DNS + NAT Port Forwarding + Reverse Proxy綜合控制的介面,讓管理者可以一口氣在一個介面設定這些東西。

不過目前進度到這邊得暫停來做一下開會的準備了orz

(more...)