(1)准备3台虚拟机,一台Windows虚拟机PC1(不限制win7或者win10);一台Linux服务器server1(IP是172.16.100.100/24)、一台网卡为DHCP类型的Linux服务器server2和一台空虚拟机server3。虚拟机网络使用仅主机模式。
(2)server1提供DHCP服务给PC1和server2分配对应网段的IP地址。
(3)server1提供PXE服务,能够使server3可以自动安装Centos7 Linux操作系统。
(4)在server1安装和启动httpd服务对外提供Web服务,并搭建DNS服务负责解析域名www.kgc.com 为172.16.100.100,使得PC1能够使用域名www.kgc.com访问Web服务器。
(5)在server2安装NFS服务,提供共享目录/share ,在/share目录中创建文件index.html,文件内容自定义。把server2的/share目录通过NFS挂载到server1的/var/www/html目录下,使得PC1访问Web服务时能够显示自定义的内容。
server1
[root@clr ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7acafc56-e5b0-4abd-9a96-27db5a96e4b9
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.100.100
NETMASK=255.255.255.0
GATEWAY=172.16.100.2
DNS1=172.16.100.2
注意:
此时由于更改了虚拟机的IP地址,使用Xshell或者MobaXterm将无法连接虚拟机,即使修改为正确的IP地址,依然无法连接;这是因为虚拟机server1修改后的网段为172.16.100.0,与宿主机不在同一个网段。解决办法:
设置虚拟机为仅主机模式,并将虚拟机和宿主机的VMnet都设置在同一网段172.16.100.0,即可解决问题。
第一问中,只要将server1的IP地址修改为题目指定的IP地址,并且Xshell或者MobaXterm能够连接到虚拟机server1就可以了。
server1
[root@clr ~]# systemctl stop firewalld #临时关闭防火墙
[root@clr ~]# setenforce 0
[root@clr ~]# mount /dev/sr0 /mnt #将光盘/dev/sr0挂载到/mnt目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@clr ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 394M 28K 394M 1% /run/user/0
/dev/sr0 4.4G 4.4G 0 100% /mnt #新挂载的光盘
[root@clr /mnt]# yum install -y dhcp
[root@clr /etc/dhcp]# vim dhcpd.conf
# see /usr/share/doc/dhcp*/dhcpd.conf.example #原始的dhcpd.conf配置文件中内容为空,需要将这个文件下面的/usr/share/doc/dhcp*/dhcpd.conf配置文件复制到dhcpd.conf
[root@clr ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf #将/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example这个文件中的内容复制到/etc/dhcp/dhcpd.conf这个文件中
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@clr ~]# systemctl start dhcpd #开启dhcp服务器
[root@clr ~]# vim /etc/dhcp/dhcpd.conf
option domain-name-servers 172.16.100.100; #切记此处一定要指定DNS服务器的地址为server1的IP地址,否则server2无法通过server1的DHCP服务自动获取IP地址和默认网关
default-lease-time 600000; #增大此处此处DHCP服务的租约时间,防止实验过程中由于租约到期,而导致server2没有ip地址
max-lease-time 7200000;
#网段声明
subnet 172.16.100.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 172.16.100.110 172.16.100.210; #设置地址池
option routers 172.16.100.100; #指定默认网关地址,也就是server1的IP地址
}
server2
[root@myhost2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=57f3a172-be68-4537-b551-761a3086b4f8
DEVICE=ens33
ONBOOT=yes
[root@myhost2 ~]# ifconfig
ens33: flags=4163,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.100.110 netmask 255.255.255.0 broadcast 172.16.100.255
inet6 fe80::7426:183f:1077:c9d4 prefixlen 64 scopeid 0x20
ether 00:0c:29:e2:4b:fe txqueuelen 1000 (Ethernet)
RX packets 13052 bytes 1173848 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6099 bytes 711656 (694.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
server1
(1)安装并启用 TFTP 服务
[root@clr ~]# systemctl stop firewalld
[root@clr ~]# setenforce 0
[root@clr ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
安装xinetd和tftp-server服务;
修改/etc/xinetd.d/tftp配置文件;
[root@clr ~]# vim /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = no
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
###开启tftp和xinetd服务,并设置为开机自启动
[root@clr ~]# systemctl start tftp
[root@clr ~]# systemctl enable tftp
[root@clr ~]# systemctl start xinetd
[root@clr ~]# systemctl enable xinetd
(2)启用 DHCP 服务
[root@clr ~]# vim /etc/dhcp/dhcpd.conf
option domain-name-servers 172.16.100.100; #切记此处一定要指定DNS服务器的地址为server1的IP地址,否则server2无法通过server1的DHCP服务自动获取IP地址和默认网关
default-lease-time 600000;
max-lease-time 7200000;
# Use this to enble / disable dynamic dns updates globally.
ddns-update-style none;
next-server 172.16.100.100;
filename "pxelinux.0";
subnet 172.16.100.0 netmask 255.255.255.0 {
range 172.16.100.110 172.16.100.210;
option routers 172.16.100.100; #定义DHCP服务的网关,也就是server1的IP地址 此处默认网关地址一定要指向TFTP服务器的IP地址
}
[root@clr ~]# systemctl start dhcpd #开启dhcp服务,并设置为开机自启动
[root@clr ~]# systemctl enable dhcpd
(3)准备 Linux 内核、初始化镜像文件
[root@clr ~]# cd /mnt/images/pxeboot #已事先把光盘挂载到/mnt目录中
[root@clr ~]# cp vmlinuz /var/lib/tftpboot/ #复制Linux系统的内核文件 到TFTP根目录下
[root@clr ~]# cp initrd.img /var/lib/tftpboot/ #复制 初始化镜像文件(linux引导加载模块)到TFTP根目录下
(4)准备 PXE 引导程序
安装syslinux软件;
将pxelinux.0文件复制到tftp的根目录/var/lib/tftpboot/中;
[root@clr ~]# yum -y install syslinux #PXE引导程序由软件包 syslinux 提供
[root@clr ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #复制 PXE引导程序 到TFTP根目录下
(5)安装FTP服务,准备CentOS 7 安装源
[root@clr ~]# yum -y install vsftpd #安装TFTP服务
[root@clr ~]# mkdir /var/ftp/centos7
[root@clr ~]# mount /dev/sr0 /var/ftp/centos7 #将光盘镜像文件挂载到ftp根目录下的centos7目录中
[root@clr ~]# systemctl start vsftpd #开启ftp服务,并设置为开机自启动
[root@clr ~]# systemctl enable vsftpd
(6)配置启动菜单文件
###默认的启动菜单文件在TFTP根目录的 pxelinux.cfg子目录下,文件名为default
[root@clr ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@clr ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto #指定默认入口名称
prompt 0 #设置是否等待用户选择,“1”表示等待用户控制
label auto #图形安装(默认)引导入口,label用来定义启动项,指定入口类型
kernel vmlinuz #kernel 和 append用来定义引导参数,kernel指定内核文件
append initrd=initrd.img method=ftp://172.16.100.100/centos7
#append用于指定系统的引导文件,initrd用于设置系统引导参数,method用于指定安装源的软件包
(7)实现Kickstart无人值守安装
准备安装应答文件,安装system-config-kickstart 工具
[root@clr ~]# yum install -y system-config-kickstart
应答文件中安装方法选项如下:
应答文件中引导装载程序选项如下:
应答文件中分区信息选项如下:
分配/boot分区;
分配swap分区;
分配根目录;
分配后的内存信息;
应答文件中网络配置选项如下:
应答文件中验证选项保持默认配置,不做任何操作;
应答文件中显示配置选项如下:
应答文件中显示配置保持默认操作,此处不做配置;
应答文件中软件包选择选项如下:
应答文件中安装后脚本选项如下:
保存配置文件;
配置图形化脚本文件;
[root@clr ~]# vim /var/ftp/ks.cfg
reboot
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$n82FaQp2$UbGYQRTr4Dyzue1GLWfqe1
# System language
lang zh_CN
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Firewall configuration
firewall --disabled
# Network information
network --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Africa/Abidjan
# Use network installation
url --url="ftp://172.16.100.100/centos7"
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=500
part swap --fstype="swap" --size=4096
part / --fstype="xfs" --grow --size=1
%post --interpreter=/bin/bash
mkdir /etc/yum.repos.d/repo.bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo.bak
echo [local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0 > /etc/yum.repos.d/local.repo
%end
%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony
%end
将生成的自动应答文件ks.cfg文件复制到ftp的根目录中;
添加自动应答文件ks.cfg的位置;
[root@clr ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://172.16.100.100/centos7 ks=ftp://172.16.100.100/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://172.16.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://172.16.100.100/centos7
(8)验证一键自动化装机是否成功;
server1
(1)安装http并启动http服务;
[root@clr ~]# yum install -y httpd
[root@clr ~]# systemctl start httpd
[root@clr ~]# systemctl enable httpd
(2)安装并修改DNS的主配置文件;
[root@clr ~]# yum install -y bind #同时安装DNS服务(软件名叫bind)
已加载插件:fastestmirror, langpacks
[root@clr ~]# vim /etc/named.conf #修改主配置文件
options {
listen-on port 53 { 172.16.100.100; }; #监听53号端口,并使用172.16.100.100(也就是本机server1的ip地址)提供DNS域名解析服务
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; }; #允许所有网段使用本服务器的DNS解析服务
(3)修改区域配置文件,添加正反向区域配置;
[root@clr ~]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
};
zone "100.16.172.in-addr.arpa" IN {
type master;
file "kgc.com.zone.local";
};
(4)配置正反向区域数据文件;
[root@clr ~]# cd /var/named
[root@clr /var/named]# ls
data dynamic named.ca named.empty named.localhost named.
[root@clr /var/named]# cp -a named.localhost kgc.com.zone #配置正向区域数据文件,并保留源文件的权限和属主的属性复制
[root@clr /var/named]# cp -a named.localhost kgc.com.zone.local #配置反向区域数据文件,并保留源文件的权限和属主的属性复制
[root@clr /var/named]# ls
data dynamic kgc.com.zone kgc.com.zone.local named.ca named.empty named.localhost named.
[root@clr /var/named]# vim kgc.com.zone #修改并配置正向区域数据文件
$TTL 1D
@ IN SOA @ admin.kgc.com. ( #“@”符号表示当前的DNS区域名,末尾的‘.’是根域的意思,切记不可省略
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 172.16.100.100 #记录主机IP地址
www IN A 172.16.100.100 #记录正向解析www.kgc.com对应的IP为172.16.100.100
ayu IN A 172.16.100.201 #记录正向解析ayu.kgc.com对应的IP为172.16.100.201
[root@clr /var/named]# vim kgc.com.zone.local #修改并配置反向区域数据文件
$TTL 1D
@ IN SOA kgc.com admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS kgc.com. #记录当前区域的DNS服务器名称
A 172.16.100.100 #记录主机IP地址
100 IN PTR www.kgc.com. #记录反向解析172.16.100.100对应的域名为www.kgc.com
201 IN PTR ayu.kgc.com.
#记录反向解析172.16.100.201对应的域名为ayu.kgc.com
[root@clr /var/named]# systemctl start named #启动DNS服务
[root@clr /var/named]# systemctl enable named #设置DNS服务开机自启动
客户端win10
(1)关闭客户端NAT模式中的使用本地DHCP服务将IP地址分配给虚拟机;
(2)更改网络连接设置,选择自动获取IP地址和DNS服务器地址;
(3)验证DHCP和DNS服务器是否生效;
server2
(1)安装软件,启动服务
服务端安装并启动nfs-utils、rpcbind软件包;
[root@clr ~]#yum -y install nfs-utils rpcbind
[root@clr ~]#systemctl start rpcbind #切记一定要先启动rpcbind服务,再启动nfs服务
[root@clr ~]#systemctl start nfs
[root@clr ~]#systemctl enable rpcbind #将rpcbind服务和nfs服务设为开机启动
[root@clr ~]#systemctl enable nfs
(2)准备共享目录
修设配置文件,设置共享目录;
[root@clr ~]#mkdir -p /opt/share
[root@clr ~]#echo 234 >> /opt/share/index.html #在共享目录/opt/share/index.html中写入自定义内容234
[root@clr ~]#vim /etc/exports
/opt/share 172.168.100.0/24(rw,sync,no_root_squahs)
[root@clr ~]# systemctl restart nfs #重新启动nfs服务
[root@clr ~]# showmount -e 172.16.100.110
Export list for 172.16.100.110:
/opt/share 172.16.100.0/24
server1
(1)安装软件,启动服务
客户端安装并启动rpcbind软件包;
[root@clr ~]#yum -y install rpcbind
[root@clr ~]#systemctl start rpcbind #启动rpcbind服务
[root@clr ~]#systemctl enable rpcbind #将rpcbind服务设为开机启动
(2)在客户端创建指定挂载目录,并将172.16.100.100:/opt/sharel挂载到server1的/var/www/html目录下;
[root@clr ~]# showmount -e 172.16.100.110 #查看nfs服务端是否已经成功将指定目录共享出来
Export list for 172.16.100.110:
/opt/share 172.16.100.0/24
[root@clr ~]# mkdir /opt/mydata
[root@clr ~]# mount 172.16.100.100:/opt/share /var/www/html #将172.16.100.100:/opt/sharel共享目录挂载到server1的/var/www/html目录下
客户端win10