本節所講內容:
- 搭建無人執守安裝服務器服務器常見概念
- 搭建無人執守安裝服務器服務器安裝及相關配置文件
- 實戰:為公司內網搭建一個搭建無人執守安裝服務器
- 服務端:hack63.cn IP:192.168.0.63
- 客戶端:hack64.cn IP:192.168.0.64
需要使用到的服務:PXE + DHCP+TFTP+ Kickstart+ FTP
運行原理如下圖:
原理和概念:
1、 什麼是PXE 嚴格來說,PXE 並不是一種安裝方式,而是一種引導的方式。進行 PXE 安裝的必要條件是要安裝的計算機中包含一個 PXE 支持的網卡(NIC),即網卡中必須要有 PXE Client。PXE (Pre-boot Execution Environment)協議使計算機可以通過網絡啟動。
協議分為 client 和 server 端,PXE client 在網卡的 ROM 中,當計算機引導時,BIOS 把 PXE client 調入內存執行,由 PXE client 將放置在遠端的文件通過網絡下載到本地運行。
運行 PXE 協議需要設置 DHCP 服務器 和 TFTP 服務器。DHCP 服務器用來給 PXE client(將要安裝系統的主機)分配一個 IP 地址,由於是給 PXE client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。
此外,在 PXE client 的 ROM 中,已經存在了 TFTP Client。PXE Client 通過 TFTP 協議到 TFTP Server 上下載所需的文件。
2、 什麼是KickStart
KickStart是一種無人職守安裝方式。KickStart的工作原理是通過記錄典型的安裝過程中所需人工干預填寫的各種參數,並生成一個名為 ks.cfg的文件;在其後的安裝過程中(不只侷限於生成KickStart安裝文件的機器)當出現要求填寫參數的情況時,安裝程序會首先去查找 KickStart生成的文件,當找到合適的參數時,就採用找到的參數,當沒有找到合適的參數時,才需要安裝者手工干預。
這樣,如果KickStart文件涵蓋了安裝過程中出現的所有需要填寫的參數時,安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然後去忙自己的事情。等安裝完畢,安裝程序會根據ks.cfg中設置的重啟選項來重啟系統,並結束安裝。
設置BIOS引導順序為: 硬盤,網絡
模式: C/S 模式
實驗環境:
服務端:hack63.cn IP:192.168.0.63 網卡模式: vmnet4
客戶端:hack64.cn IP:192.168.0.64 網卡模式: vmnet4
執行 PXE + KickStart安裝需要準備內容:
• DHCP 服務器用來給客戶機分配IP;
• TFTP 服務器用來存放PXE的相關文件,比如:系統引導文件;
• FTP 服務器用來存放系統安裝文件;
• KickStart所生成的ks.cfg配置文件;
• 帶有一個 PXE 支持網卡的將安裝的主機;
一、配置基本環境
安裝所需要的服務及修改相應配置文件:
1.用yum來安裝所需要的軟件包,先來搭建本地yum光盤源:(如果配置了網絡yum,這一步可以忽略)
[root@test1 ~]# mount /dev/cdrom /mnt
在/etc/yum.repos.d目錄下創建一個以.repo結尾的文件:
[root@test1 ~]# vi /etc/yum.repos.d/serverl.repo
配置內容如下:
[root@hack63 Desktop]# cat /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///mnt/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2.安裝ftp服務以及開啟服務,設置為開機自動啟動。
[root@test1 ~]# yum install vsftpd -y
[root@test1 ~]# /etc/init.d/vsftpd start
[root@test1 ~]# chkconfig vsftpd on
3.安裝TFTP,修改tftp配置文件及開啟服務
[root@hack63 ~]# yum install tftp tftp-server xinetd -y
配置tftp服務器:
vim /etc/xinetd.d/tftp
修改配置文件裡面的13,14行。改成以下內容:
server_args = -s /tftpboot # 表示服務器默認的目錄是 /tftpboot
其中,server_args = -s /tftpboot是tftp服務器運行時的參數。-s /tftpboot表示服務器默認的目錄是 /tftpboot,當你執行put a.txt時,文件會被放到服務器的/tftpboot/a.txt,省去你敲put a /tftpboot/的麻煩。你也可以加其它服務器運行參數到這,具體可以執行man tftpd命令查閱。
-c :上傳文件時,服務器上沒有。就自動創建這個文件。
默認tftp客戶端,只能上傳tftp服務器已經有的文件。也就是隻能傳上去並覆蓋服務器上的原文件。如果想上傳原來目錄中沒有的文件,需要修改tftp服務器的配置文件並重起服務。需要修改如下:
打開/etc/xinetd.d/tftp文件,在 server_args 增加-c參數,如下所示:
server_args = -s /tftpboot -c
TFTP (Trivial File Transfer Protocol),中譯簡單文件傳輸協議或小型文件傳輸協議. 大家一定記得在2003年8月12日全球爆發衝擊波(Worm.Blaster)病毒,這種病毒會監聽端口69,模擬出一個TFTP服務器,並啟動一個攻 擊傳播線程,不斷地隨機生成攻擊地址,進行入侵。另外tftp被認為是一種不安全的協議而將其關閉,同時也是防火牆打擊的對象,這也是有道理的。tftp 在嵌入式linux還是有用武之地的。需要打開防火牆,允許tftp訪問網絡。
接著重新啟動xinetd服務,然後查看服務端口是否打開。
[root@test1 ~]# /etc/init.d/xinetd restart
[root@hack63 ~]# lsof -i :69 #查看69端口正在被哪個進程使用
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 3582 root 5u IPv4 21718 0t0 UDP *:tftp
[root@hack63 ~]# netstat -antup | grep 69 #這種方法,只能看到xinetd進程
udp 0 0 0.0.0.0:69 0.0.0.0:* 3582/xinetd
4.安裝dhcp,修改配置文件及開啟服務:
[root@test1 ~]# yum install dhcp -y
配置DHCP服務器:
# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf #生成配置文件
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
給DHCP服務器添加一張VMNET4網卡,ip設置為192.168.1.10(只要是1網段都行)
[root@hack63 ~]# ifconfig eth1 192.168.1.10/24
[root@localhost ~]#vi /etc/dhcp/dhcpd.conf #只保留一個subnet {。。。} ,取掉其它subnet,改成如下內容:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option domain-name-servers 192.168.1.1;
option domain-name "internal.example.org";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.1.10;
filename "pxelinux.0";
}
配置完,先不啟動DHCP ,等所有的軟件安裝好,最好來啟動。
準備工作完成
二、配置使用PXE啟動所需的相關文件
安裝軟件:
安裝包
[root@hack63 Packages]# yum -y install system-config-kickstart #安裝此包時,會把syslinux軟件包也安裝上。
準備tftp需要共享出去的文件
[root@test1 ~]# mount /dev/cdrom /media/
[root@test1 ~]# mkdir /tftpboot
[root@test1 ~]# mkdir /tftpboot/pxelinux.cfg
[root@test1 ~]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/ #注,只有安裝了system-config-kickstart軟件包,才會有/usr/share/syslinux/目錄及目錄中的文件。
[root@test1 ~]# cp /media/images/pxeboot/initrd.img /tftpboot/
[root@test1 ~]# cp /media/images/pxeboot/vmlinuz /tftpboot/
[root@test1 ~]# cp /media/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
[root@test1 ~]# chmod 644 /tftpboot/pxelinux.cfg/default
三、修改default,指定安裝操作系統的方式和ks.cfg文件路徑
vim /tftpboot/pxelinux.cfg/default
然後修改/tftpboot/pxelinux.cfg/default的配置文件。
改:default
為 :default linux
#修改第1行,後面的linux意思是尋找下面18行的label linux 。如下:
然後修改下22行(即在後面添加ks=ftp://192.168.1.10/ks.cfg)。第22行的意思是使安裝程序通過FTP服務器訪問kickstart文件。
以上有關default配置文件的修改就是通過ftp服務器方式來訪問kickstart文件。
其中第1行:default linux表示指定默認入口名稱;
第2行:prompt 1中prompt用來設置是否等待用戶選擇,1表示等待用戶控制;
第18、23、27、31行label linux表示定義的引導入口,表示系統的不同安裝方式,如第18行定義的入口表示圖形安裝。
配置文件修改完了,要開始自動安裝,安裝程序必須能訪問kickstart文件。
有多種方法可訪問kickstart文件,其中最常用的一種方法是通過網絡服務器進行,
例如:ftp服務器、WEB服務器或NFS服務器,這種方法非常易於部署,並且也使管理更改變得十分簡單。也可以通過USB磁盤、CD-ROM或本地硬盤。如果USB或CD-ROM中的kickstart文件非常便於訪問,只需將kickstart文件放置在用來開始安裝的引導介質中。而使用DHCP服務器和TFTP及PXE配置起來更為複雜。
使安裝程序指向kickstart文件的書寫格式如下:
ks=ftp://server/dir/file 如:ks=ftp://ftp服務器IP/ks.cfg
ks=http://server/dir/file 如:ks=http://http服務器IP/ks.cfg
ks=nfs:server:/dir/file 如:ks=nfs:nfs服務器IP:/var/ftp/pub/ks.cfg
ks=hd:device:/dir/file 如:ks=hd:sdb1:/kickstar-files/ks.cfg
ks=cdrom:/dir/file 如:ks=cdrom:/kickstart-files/ks.cfg
以上有關default配置文件的修改就是通過ftp服務器方式來訪問kickstart文件。
接下來我們製作kickstart的無人值守安裝文件。
安裝system-config-kickstart軟件包:
[root@hack63 ~]# yum install system-config-kickstart -y
如果想在英文界面下打開一個軟件,讓它以中文界面顯示:
[root@hack63 ~]# echo $LANG
en_US.UTF-8
[root@hack63 ~]# LANG=zh_CN.UTF-8
[root@hack63 ~]# system-config-kickstart #執行system-config-kickstart彈出來界面。
設置自己後期無人執守安裝需要配置的參數:
我們設置下默認安裝的語言,時區,根口令,然後勾選下面的安裝後重新引導。然後選擇安裝方法。
我們配置ftp服務器的安裝方法。選擇執行新安裝。然後點擊引導裝載程序選項。
配置grub相關選項。
設置分區大小。
配置網絡,默認沒有網絡設置,點擊添加網絡,設備名稱為eth0,網絡類型為dhcp
驗證,默認就可以了。
防火牆和selinux根據自己需求選擇開啟或者禁用。我選擇關閉selinux。啟用防火牆。
安裝圖形環境
自定義軟件包。默認可能沒有勾選桌面。根據自己需求勾選。 我們為了快速度演示安裝,不選擇安裝桌面。
安裝腳本:在"預安裝腳本","安裝後腳本"對話框中,可以分別添加在安裝前、安裝後自動動行的可執行語句。此項設置可以使服務器自動化配置變得更加容易。
例如:配置客戶機在完成安裝後自動設置YUM倉庫。
寫入以下腳本內容:
rm -rf /etc/yum.repos.d/*
echo '[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///mnt/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release' > /etc/yum.repos.d/rhel6.repo
到此所有關於安裝的配置已經配置完畢,保存:
點擊左上角的文件選擇保存,選擇下保存的路徑
[root@test1 ~]#cp ks.cfg /var/ftp #複製ks.cfg文件到/var/ftp目錄下
注:ks.cfg就是無人值守安裝時要用的Kickstart文件。
要對應:/tftpboot/pxelinux.cfg/default文件中設置過ks=ftp://192.168.1.10/ks.cfg
配置基於ftp的yum源,用於客戶端安裝時,讀取軟件包用:
[root@test1 ~]#mount /dev/cdrom /var/ftp/pub #掛載RHEL6安裝光盤到/var/ftp/pub目錄下
重啟下FTP服務
[root@hack63 ~]# /etc/init.d/vsftpd restart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
[root@hack63 ~]# cd /var/ftp/
建議關閉防火牆和selinux,
如果沒有關閉的話,tftp服務會有問題。
[root@hack63 ~]# getenforce
Disabled
設置防火牆:
#iptables -F
#service iptables save
配置兩臺機器的網絡模式為:VMnet4
給server 設置一個和DHCP 定義相同網段的IP
接著啟動DHCP,設置為開機啟動
[root@test1 ~]# /etc/init.d/dhcpd start
[root@test1 ~]# chkconfig dhcpd on
修改hack64 BIOS啟動順序為網絡優先,加電後開始啟動。
下去之後瞭解下用NFS代理FTP 的方法
擴展:Cobbler比Kickstart更為簡單和智能的自動化安裝系統的工具
Cobbler 可以用來快速建立 Linux 網絡安裝環境,它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功降低到初中以下,連補鞋匠都能學會。
網絡安裝服務器套件 Cobbler(補鞋匠)從前,我們一直在做裝機民工這份很有前途的職業。自打若干年前 Red Hat 推出了 Kickstart,此後我們頓覺身價倍增。不再需要刻了光盤一臺一臺地安裝 Linux,只要搞定 PXE、DHCP、TFTP,還有那滿屏眼花繚亂不知所云的 Kickstart 腳本,我們就可以像哈里波特一樣,輕點魔棒,瞬間安裝上百臺服務器。這一堆花裡胡哨的東西可不是一般人都能整明白的,沒有大專以上學歷,通不過英語四級,根本別想玩轉。總而言之,這是一份多麼有前途,多麼有技術含量的工作啊。很不幸,Red Hat 最新(Cobbler項目最初在2008年左右發佈)發佈了網絡安裝服務器套件 Cobbler(補鞋匠),它已將 Linux 網絡安裝的技術門檻,從大專以上文化水平,成功降低到初中以下,連補鞋匠都能學會。對於我們這些在裝機領域浸淫多年,經驗豐富,老驥伏櫪,志在千里的民工兄弟們來說,不啻為一個晴天霹靂。
閱讀更多 攻防基地 的文章