您现在的位置是:首页 >其他 >搭建DHCP、PXE、DNS、HTTP以及NFS服务综合实验的超详细讲解网站首页其他

搭建DHCP、PXE、DNS、HTTP以及NFS服务综合实验的超详细讲解

陌上花开,静待绽放! 2024-06-09 00:00:03
简介搭建DHCP、PXE、DNS、HTTP以及NFS服务综合实验的超详细讲解

1.实验要求

(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服务时能够显示自定义的内容。

2.实验步骤

2.1 步骤解答问题(1)

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就可以了。

2.1 步骤解答问题(2)

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<UP,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<link>
        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

2.1 步骤解答问题(3)

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)验证一键自动化装机是否成功;

在这里插入图片描述

2.1 步骤解答问题(4)

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服务器是否生效;

在这里插入图片描述
在这里插入图片描述

2.1 步骤解答问题(5)

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

在这里插入图片描述
至此,该实验已圆满完成!

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。