第五章 网络服务

1.DHCP服务

1.1DHCP定义

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。它是一种流行的Client/Server协议,一般用于为主机或者为路由器等指定相关的配置信息。DHCP服务在企业和家庭中得到了大量的应用,它能够自动分配ip地址以及一些其他的相关信息,整个过程对客户透明。

1.2实验规划

image-20231017115116277

该实验需要两台虚拟机,一台作为DHCP服务器另一台做为主机用来验证dhcp服务是否可用.

首先新增一个网卡将他的DHCP服务关掉,将主机的网卡设置为VMnet2

image-20231017115527925

1.3实验过程

  1. 服务端

    1.安装DHCP服务

    yum -y install dhcp*

    2.修改dhcp配置文件

    [root@gzh-cs8 ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example  /etc/dhcp/dhcpd.conf
    [root@gzh-cs8 ~]# vim /etc/dhcp/dhcpd.conf

    在下面添加下面的内容

    subnet 192.168.145.0 netmask 255.255.255.0 {
            range 192.168.145.100 192.168.145.200;
    }

    3.修改VMnet2的网卡配置给一个静态ip

    [root@gzh-cs8 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens160 /etc/sysconfig/network-scripts/ifcfg-ens224
    [root@gzh-cs8 ~]# nmcli con show 
    NAME        UUID                                  TYPE      DEVICE 
    有线连接 1  3ffd2935-0618-301b-a04e-4738c579c9c5  ethernet  ens224 
    ens160      af04ba70-cb39-4017-afed-3f23f616c00c  ethernet  ens160 
    [root@gzh-cs8 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens224 
    [root@gzh-cs8 ~]# nmcli c reload

    4.重启网卡并启动dhcp服务

    nmcli c reload 
    systemctl start dhcpd
  2. 主机

    1.修改网卡配置文件将BOOTPROTO改成dhcp

    image-20231017120243183

    2.重启网卡

    systemctl restart network

1.4实验结果

image-20231017121550201

[root@gzh-cs8 ~]# ping 192.168.145.100
PING 192.168.145.100 (192.168.145.100) 56(84) bytes of data.
64 bytes from 192.168.145.100: icmp_seq=1 ttl=64 time=0.356 ms
64 bytes from 192.168.145.100: icmp_seq=2 ttl=64 time=0.387 ms
64 bytes from 192.168.145.100: icmp_seq=3 ttl=64 time=0.600 ms
^C
--- 192.168.145.100 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2049ms
rtt min/avg/max/mdev = 0.356/0.447/0.600/0.111 ms

2.DNS服务

2.1配置静态ip地址

vim /etc/sysconfig/network-scripts/ifcfg-ens160

image-20231017200551993

2.2 安装服务软件包

[root@gzh-cs8 ~]# yum install -y bind bind-chroot bind-utils
上次元数据过期检查:9:33:52 前,执行于 2023年10月16日 星期一 22时33分11秒。
软件包 bind-32:9.11.26-6.el8.x86_64 已安装。
软件包 bind-chroot-32:9.11.26-6.el8.x86_64 已安装。
依赖关系解决。
==========================================================================================================
 软件包                    架构                版本                          仓库                    大小
==========================================================================================================
安装:
 bind-utils                x86_64              32:9.11.26-6.el8              AppStream              451 k
安装依赖关系:
 python3-bind              noarch              32:9.11.26-6.el8              AppStream              150 k
 python3-ply               noarch              3.9-9.el8                     base                   111 k

事务概要
==========================================================================================================
安装  3 软件包

总下载:712 k
安装大小:1.9 M
下载软件包:
(1/3): python3-ply-3.9-9.el8.noarch.rpm                                    21 kB/s | 111 kB     00:05    
(2/3): python3-bind-9.11.26-6.el8.noarch.rpm                               27 kB/s | 150 kB     00:05    
(3/3): bind-utils-9.11.26-6.el8.x86_64.rpm                                 80 kB/s | 451 kB     00:05    
----------------------------------------------------------------------------------------------------------
总计                                                                      126 kB/s | 712 kB     00:05     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                           1/1 
  安装    : python3-ply-3.9-9.el8.noarch                                                              1/3 
  安装    : python3-bind-32:9.11.26-6.el8.noarch                                                      2/3 
  安装    : bind-utils-32:9.11.26-6.el8.x86_64                                                        3/3 
  运行脚本: bind-utils-32:9.11.26-6.el8.x86_64                                                        3/3 
  验证    : python3-ply-3.9-9.el8.noarch                                                              1/3 
  验证    : bind-utils-32:9.11.26-6.el8.x86_64                                                        2/3 
  验证    : python3-bind-32:9.11.26-6.el8.noarch                                                      3/3 

已安装:
  bind-utils-32:9.11.26-6.el8.x86_64  python3-bind-32:9.11.26-6.el8.noarch  python3-ply-3.9-9.el8.noarch 

完毕!

2.3 配置DNS

2.3.1修改主配置文件

vim /etc/named.conf

image-20231017201124527

image-20231017201725583

named-checkconf # 检查是否有错误

2.3.2 修改区域配置文件

复制系统提供的zones文件为我们自己的,这里的文件名要和上图红框中所写的文件名保持一致, 注意复制时,使用参数-p保持文件权限属性一致。

 cp -p /etc/named.rfc1912.zones /etc/named.gzh.zones

复制后查看复制的文件,查看文件所属组是否为named,这里如果为root的话启动服务器会失败。

[root@gzh-cs8 ~]# ll /etc/named.gzh.zones 
-rw-r-----. 1 root named 1029 8月  24 2021 /etc/named.gzh.zones

修改区域配置文件 /etc/named.gzh.zones

vim /etc/named.gzh.zones

image-20231017212520803

  • 位置1处的“gzh.co”必须为我们向上一级域名机构所申请的域名,此处内容不能随便乱写。

  • 位置2处的为正向查找(即由域名查找主机IP地址)区域所在的文件名,文件名可以任意制定,但 是必须和下面步骤所配置的正向查找区域文件名一致。

  • 位置3处的“88.168.192”为反向查找区域(即由IP地址查找域名)网络地址的反向书写,例子中的 就是网络地址192.168.88.0/24网络,该区域指定的IP地址只能是这个网段的。

  • 位置4处为反响查找区域所在的文件名,文件名可以任意制定,但是必须和下面步骤所配置的反向 查找区域文件名一致。

2.3.3 修改正向解析文件

配置正向查找区域,配置文件/var/named/named.gzh.co

如果文件不存在,可以复制现有的实例文件,注意加参数-p

[root@gzh-cs8 ~]# cp -p /var/named/named.localhost /var/named/named.gzh.co
[root@gzh-cs8 ~]# ll /var/named/named.gzh.co 
-rw-r-----. 1 root named 152 8月  24 2021 /var/named/named.gzh.co

配置此文件

image-20231017212440817

2.3.4 修改反向解析文件

配置反向查找区域,配置文件/var/named/named.18.168.192

如果文件不存在,可以复制现有的实例文件,注意加参数-p

[root@gzh-cs8 ~]# cp -p /var/named/named.loopback /var/named/named.88.168.192
[root@gzh-cs8 ~]# ll /var/named/named.88.168.192 
-rw-r-----. 1 root named 168 8月  24 2021 /var/named/named.88.168.192

配置该文件

image-20231017203456371

修改/etc/sysconfig/named文件

添加

OPTIONS="-4"

启动named

systemctl start named

注意:如果你的named服务启动失败一定要检查一下配置文件是否出错

例如:

[root@gzh pub]# named-checkconf -z /etc/named.conf
zone gzh.co/IN: loaded serial 20231117
zone 88.168.192.in-addr.arpa/IN: loaded serial 20231117
zone 0.in-addr.arpa/IN: loaded serial 0

出现这种字段的是没有问题的,如果出现其他类型的说明你的配置文件就有点问题.

下面是几个配置文件的关系

image-20231018185225219

首先named.conf中调用了named.gzh.zones文件,也就是include,然后named.gzh.zones里面写的内容对应的是后面的两个文件,如果你检查出错误了,一定要在这四个文件里面去找是否哪个地方写错了,最好是逐级去找.

2.5 客户端测试

2.5.1 安装工具包

yum install -y bind-utils

dns1与服务端配置的保持一致

image-20231017205957610

2.5.3 测试

[root@localhost ~]# nslookup news.gzh.co
Server:         192.168.88.137
Address:        192.168.88.137#53

Name:   news.gzh.co
Address: 192.168.88.40

[root@localhost ~]# dig -x www.gzh.co

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 <<>> -x www.gzh.co
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 45238
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;co.gzh.www.in-addr.arpa.       IN      PTR

;; Query time: 0 msec
;; SERVER: 192.168.88.137#53(192.168.88.137)
;; WHEN: 二 10月 17 21:43:33 CST 2023
;; MSG SIZE  rcvd: 52

如果测试失败,把防火墙关掉.

3.电子邮件服务

1.设置hostname并更新 /etc/hosts

[root@gzh ~]# hostnamectl set-hostname gzh.com
[root@gzh ~]# vim /etc/hosts
[root@gzh ~]# cat /etc/hosts 
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.88.137 gzh.com

2.安装并启用 Postfix 服务

[root@gzh-cs8 ~]# yum -y install postfix
[root@gzh-cs8 ~]# systemctl start postfix
[root@gzh-cs8 ~]# systemctl enable postfix
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.

3.安装 mailx 邮件客户端

在配置 Postfix 服务器之前,我们需要安装 mailx

yum -y install mailx

4.配置 Postfix 邮件服务器

Postfix 的配置文件位于 /etc/postfix/main.cf 中。我们需要对配置文件进行一些修改.

vim /etc/postfix/main.cf
# 更新如下
myhostname = mail.gzh.com
mydomain = gzh.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.88.0/24, 127.0.0.0/8
home_mailbox = Maildir/

完成后,保存并退出配置文件。重新启动 postfix 服务以使更改生效

systemctl restart postfix

5.测试邮件服务

首先,创建一个测试用户

useradd gzh
passwd gzh

安装telnet

yum -y install telnet

测试服务

[gzh@gzh ~]$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.gzh.com ESMTP Postfix
ehlo localhost # 向服务器表明身份
250-mail.gzh.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
halo mail.gzh.com 
502 5.5.2 Error: command not recognized
helo mail.gzh.com 
250 mail.gzh.com
mail from:root # 设置寄件人
250 2.1.0 Ok
rcpt to:gzh # 设置收件人
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
hello world!
.
250 2.0.0 Ok: queued as 38D0A61F84DB
quit
221 2.0.0 Bye
Connection closed by foreign host.

4.FTP服务

4.1 安装vsftpd+ftp

yum install -y vsftpd
yum install -y ftp # 测试使用,搭建FTP服务器只需要vsftpd

4.2 开启服务

systemctl start vsftpd

4.3 修改配置文件

配置文件默认为/etc/vsftpd/vsftpd.conf

vim /etc/vsftpd/vsftpd.conf

首先修改anonymous_enable=YES,再添加一行anon_upload_enable=YES

image-20231018182255023

第一行的意思是允许匿名登录,第二行的意思是允许匿名上传,接着重启服务:

systemctl restart vsftpd

4.4测试准备

安装部分就算完成了,下面是测试。

在测试之前先创建测试文件:

[root@gzh ~]# cd /var/ftp/pub
[root@gzh pub]# vim test
[root@gzh pub]# cat test
my name is gzh

在主机上测试ftp

如图所示:

image-20231018183331808

在测试之前要关闭防火墙和关闭SELinux

[root@gzh pub]# systemctl stop firewalld
或者是开启21端口对应的服务
firewall-cmd --add-port=21/tcp --permanent
[root@gzh pub]# setenforce 0 # 临时关闭

用户登录测试

在地址栏输入ftp://gzh@192.168.88.137,这里可以选择是否匿名登录

image-20231018183808819

还有其他ftp的测试方式可以根据书本上所说的自行测试,这里只简单做个测试.

还有一点就是我这里用的是我上面做邮件服务时新增的用户登陆的,里面存放着maildir文件夹

image-20231019103641042

image-20231019103753344

这个路径下存放的就是我们在邮件服务中发送的内容了.

5.注意事项

在做DHCP服务的时候要确定好自己服务端的网卡配置,服务端是两张网卡,客户端是一个网卡.

在做DNS服务的时候,一定要仔细检查修改的文件有没有问题,哪怕一个字符错了都会导致你DNS服务失败.