雙網卡 DRBL伺服器架設心得

URL Link //n.sfs.tw/13142

2019-03-08 09:25:11 By 杜子

緣起

學校有三間電腦教室,加上一般教室、專科教室、導師辦公室5間、專任辦公室3間,

全部電腦加起來超過 200臺。

為了有效管理,減少我一臺一臺重灌的時間,

早期是直接引入無碟系統,

當時是桌機的系統是 XP 跨入 Windows 7 時代,學校陸續買了超過 150套授權,

是為了研習的需求,因為有時上課內容需要安裝軟體需求,所以三間電腦教室我有一間是維持純硬碟運作,

這無碟系統確實讓我輕鬆的度過幾年管理教室電腦的工作,尤是一般教室,每間教室要一間一間處理,那花的時間精力真的是會讓人受不了。

但是,因為對無碟伺服器的安裝管理不甚了解,有問題就一定要找代理商,

心裡總是覺得不踏實,說穿了就是本人不喜歡抑仗於人的感覺!

 

重點來了,

去年,臺中市的中小學網路應用競賽,作業系統一律統一改為 Windows 10 ,

照例,為了讓學校的環境能統一,我又打電話請無碟系統代理商協助了,因為學校的無碟伺服器裡,裝的都是 Windows 7 ,

結果,對方的回應是,我們當初買的版本,不支援  Windows 10,得全部重新買過新的授權。

天啊!這可是一筆不小的支出耶!!

 

不得已得想個法子了,之前因為太過依賴無碟系統,所以電腦裡的還原卡我也都拔掉了(不過其實我也不喜歡用),

當時時間緊迫,加上手邊正在進行 sfs3 的改版工作,所以感謝社口國小資訊組長的協助,親自來我校架了一部 DRBL伺服器,

暫時幫我解決了電腦教室大量派送的問題。後來我又把那部伺服器複製一份,改了設定用來派送一般教室的電腦,

然後逐步把無碟系統停掉了。

 

如果不知道什麼是 DRBL , 就請到 https://drbl.nchc.org.tw/introduction/ 去看看吧!

其實,我的需求是裡面的 clonezilla , 也就是派送還原系統。

 

網路環境架構

好了,回歸今天要講的主題,今天要講的主題是,把那兩部 DRBL伺服器整併成一部主機。

先看一下本校的網路架構,你就會知道為何一開始需要兩部 DRBL 伺服器了。

 

原本朋友幫我處理的 DRBL伺服器作業系是 ubuntu 16.04 ,有個問題是去年配發電腦教室的新電腦,因為網卡較新,無法派送,

所以趁這次自己重做一台,一併解決這個問題。

 

使用主機

Genuline捷元伺服器,型號我不知道,總之就是原本的無碟伺服器,裡面有兩張 Intel 網卡

我的想法是 一張接 192.168.1.x 網段, 一張接 192.168.2.x 網段, 這樣一部主機就能解決兩個網段的派送問題。

 

作業系統選擇

因為不熟悉 ubuntu  , 所以還是安裝我自己比較熟一點的 CentOS 7.6

 

CentOS 7.6 安裝

1. 先去 http://ftp.tc.edu.tw/ 下載 ;;;;;;;; CentOS 7.6 的 ISO 檔
2. 使用 Win32 Disk Imager 進行 USB 開機碟製作 https://freewarehome.tw/pc/win32-disk-imager/

這個要講一下 , 一開始用了其他的 USB 碟製作工具 , 會造成安裝失敗的錯誤訊息。

好像是 USB 碟製作方式的不同造成的, 忘了把錯誤訊息記下來。


3. 插入 USB , 捷元這台, 開機時要按 F6 選擇 USB 開機
有兩張網卡

上 : 原本接 192.168.1.x 一般教室
下 : 接 192.168.2.x 電腦教室

4. CentOS 7 安裝  (安裝過程略過)

5. #yum update 

6. 安裝常用指令 ( firewalld 不要裝 )
yum install mlocate wget zip unzip ntpdate –y

7. 停用SELINUX
vi /etc/sysconfig/selinux

改 SELINUX=disabled

8. 網卡設定
因為是兩張網卡, 要設定 geteway 是跑哪一張
#ifconfig 
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.253  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::8db3:bdb3:c090:c7a  prefixlen 64  scopeid 0x20<link>
        ether 00:1e:67:fc:ad:6c  txqueuelen 1000  (Ethernet)
        RX packets 3145  bytes 249513 (243.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 176  bytes 19019 (18.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xb1200000-b127ffff

eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.253  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::57bb:6396:b793:4fea  prefixlen 64  scopeid 0x20<link>
        ether 00:1e:67:fc:ad:6d  txqueuelen 1000  (Ethernet)
        RX packets 705  bytes 55501 (54.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 77  bytes 6400 (6.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xb1100000-b117ffff
確認兩張網卡分別是 eno1 及 eno2

#cd /etc/sysconfig/network-scripts/
#vi ifcfg-eno1

確認網卡的 ONBOOT=yes , 還有以下這幾個值

IPADDR="192.168.1.253"
PREFIX="24"
GATEWAY="192.168.1.254"
DNS1="163.17.43.18"

#vi ifcfg-eno2
確認網卡的 ONBOOT=yes , 還有以下這幾個值

IPADDR="192.168.2.253"
PREFIX="24"
GATEWAY="192.168.2.254"
DNS1="163.17.43.18"

因為我學校的電腦一律進行 Windows AD 網域管理, 所以 DNS 是指向 AD


#cd ..
#vi network

加入內容 
GATEWAYDEV=eno1

也就是因為裝了兩張網卡, 必須告訴 CentOS 要上網要走哪張網卡。

重開機, 兩張網卡正常啟動


9.系統校時
ntpdate time.stdtime.gov.tw | hwclock -w

 

到此算是把作業系統裝完了, 下一步就是安裝 DRBL 伺服器軟體到系統裡,讓這台主機可以進行派送工作。

安裝 DRBL 

1.安裝DRBL的金鑰
#rm -f GPG-KEY-DRBL 
#wget http://drbl.nchc.org.tw/GPG-KEY-DRBL
#rpm --import GPG-KEY-DRBL

2.先設定好相關的 yum 的環境喔
vim /etc/yum.repos.d/drbl.repo
加入以下內容
[drbl]
name = Diskless Remote Boot in Linux
baseurl = http://free.nchc.org.tw/drbl-core/x86_64/RPMS.drbl-stable/
gpgcheck = 0
enabled = 1

3.開始安裝 DRBL
#yum clean all
#yum install drbl clonezilla syslinux tftp-server tftp dhcp bind bind-chroot

到此,  DRBL 裝完了, 但是後續需要設定才能使用。

 

使用 drblsrv 設定好所有的 DRBL 所需服務

這一段可參考 http://linux.vbird.org/linux_enterprise/0130drbl_clonezilla.php#drbl_install 這網址
#drblsrv  -i
你要設定代理伺服器嗎?
[y/N] n
你是否要使用 DRBL "不穩定版"中的程式
[y/N] n
你是否要使用 DRBL "測試版"中的程式
[y/N] n
你是否要安裝一些網路安裝的開機檔案使得用戶端的電腦可以透過網路安裝Linux
Y
你的 DRBL 用戶端的電腦是否要使用序列終端機(Serial Console)?
N
如果你不清楚什麼序列終端機的話,就回答"N",否則有可能造成用戶端電腦螢幕無法顯示!
[y/N] n
你是否要升級你的作業系統?
[y/N] y
如果 glibc 與 openssl 有較新版本,是否要升級?
0 -> 不升級 glibc 與 openssl.
1 -> 只升級 openssl,
2 -> 只升級 glibc,
3 -> 升級 glibc 與 openssl (預設),
警告!!!!! glibc 極為重要,請務必確定升級 glibc 後您的系統能正確執行無誤
[3] 3

在 server 上建置 client 的檔案系統

接下來要做的動作是產生 /etc/drbl/drblpush.conf 這個檔案, 主要是要告訴 drbl 如何還原各工作站系統, 原則上只要做一次, 

#cd /etc/drbl
#drblpush -i
這是一個交談模式,在設定DRBL環境的過程中,您必須提供相關資料
以下是會詢問的問題, 視情況填入及選擇, 然後就會進行安裝設定。


請輸入網域名稱(DNS domain),例如drbl.sf.net:

請輸入NIS/YP網域名稱:

請輸入用戶端電腦名稱的前置字元:

選擇可連接到 Internet 的網卡 :

  因為有兩張網卡, 選擇  eno1 為對外的網卡 (事實上, 對本校架構而言沒意義)

是否每次都發給用戶端電腦相同 ip 位址:

發送 ip 位址的起始值:

無碟 Linux 模式:[2] 不要提供無碟Linux服務給用戶端使用  (因為我的目的只是要用於大量派送 Windows 系統, 只需 Clonezilla Server 功能)

Clonezilla再生龍有4個模式:[1] 再生龍盒模式(Clonezilla box mode)

使用再生龍的時候,你要把印象檔存在此台機器的那個目錄:[/home/partimag]

是否設定用戶端開機密碼:N

用戶端開機後,可否選擇所要的系統:Y

用戶端開機提示符號等待時間:50

用戶端開機時使用圖形背景選單:Y

DRBL 伺服器是否也提供 NAT 服務:N (雖然我裝了兩張網卡, 但是目前是希望可以派送兩個網段, 而不是讓 client 透過這部主機來上網) 

警告! 你如果繼續取行, 防火牆規則將會被改掉:Y

當然是繼續執行, 執行完畢, 檢查一下 /etc/drbl/drblpush.conf 這個檔是否存在

#vi /etc/drbl/drblpush.conf 

最後面幾行可以看到 drbl 僅針對 eno2 這張網卡進行監控 (派送) 

#Setup for eno2
[eno2]
interface=eno2
mac=macadr-eno2.txt
ip_start=51
 

說明一下, 我的主機的兩張網卡 

eno1 的 IP 是 192.168.1.253

eno2 的 IP 是 192.168.2.253

而學校整個環境的 gateway 是 192.168.2.254 , 並沒有要透過這部主機上網,

而且我希望 192.168.1.x 的網段也能被派送, 所以上面的內容要再加內容

#Setup for eno2
[eno2]
interface=eno2
mac=macadr-eno2.txt
ip_start=51
gateway=192.168.2.254
#Setup for eno1
[eno1]
interface=eno1
mac=macadr-eno1.txt
ip_start=101
gateway=192.168.1.254

 

上面的內容裡, 192.168.2.x 的client IP , DHCP是從 192.168.2.51 開始配發,  192.168.1.x 的 client IP 則是 192.18.1.101 開始配發

這樣子當之後下指令 drblpush -c /etc/drbl/drblpush.conf 時, DRBL 即會從  macadr-eno1.txt 及 macadr-eno2.txt 這兩個檔案裡所記載的 mac 進行 client 資料輸出,

及產生 dhcp 設定檔, 以便進行派送工作。

還有個地方也要改 , 否則 dhcp server 不會針對兩張網卡配發 IP

#vi /etc/sysconfig/dhcpd

DHCPDARGS="eno2 eno1"

把 eno1 也加進去

收集各 client 主機的 mac

以下這兩個檔案 , 分別把 client 主機的 mac 乖乖的收集好填入 , 網路上有很多工具可以收集, 在此略過.

/etc/drbl/macadr-eno1.txt

/etc/drbl/macadr-eno2.txt

內容差不多是這樣子 , 一筆資料一行, 不能斷行, 跳行, 也不能加 # 做註解

啟用 drbl 指令

#drbl-all-service start
#drblpush -c /etc/drbl/drblpush.conf

啟用後, 系統會根據 macadr-eno1.txt 及 macadr-eno2.txt 這兩個檔案重建各 client 的設定檔及 dhcp 設定 (因為前面有限制每個 mac 都配固定 ip)

重建完會提示現在可以執行 dcs 執行 DRBL , 

然後...... 

怎麼操作, 這裡就不再說明了....

原則上, 如果 macadr-eno1.txt 及 macadr-eno2.txt 都沒有改, 啟用  drbl 後, 可以不需停用,

要派送時就執行 dcs 進行功能選擇.

不過, 怕 client 端不小心用了 PXE 開機, 然後一直自我還原就不好了, 所以以下提示停用指令.

停用 drbl 指令

#drbl-all-service stop
#service dhcpd start  (因為此主機提供 dhcp 功能, 所以停用服務後要單獨再把 dhcp 服務啟用)
 

 

Client 端的操作

1. 先做好一台範本機

2. 安裝 drbl-winroll 參考 http://drbl-winroll.nchc.org.tw/

 因為裝這個, 當系統派送到另一台時, 才能自動配製主機的名稱

裝完後, 不要重開機, 先修改  

c:\cygwin\drbl_winroll-config \hosts.conf  (每個 mac 或 IP 要對應的電腦名稱)

c:\cygwin\drbl_winroll-config\winroll.conf