了解和配置DHCP

时间:2020-03-21 11:47:27  来源:igfitidea点击:

DHCP 动态主机配置协议。

假设网络较小,并且希望网络中的所有计算机在启动时自动配置IP地址,DNS服务器地址,网关等,则DHCP可以为我们提供帮助。

在这种情况下,客户端计算机没有配置静态IP地址,而是以这样的方式配置的:客户端计算机可以查询网络中的DHCP服务器的IP地址和其他配置。

当管理员想用不同的IP地址更改网络中的所有计算机时,DHCP也很有用。
因此,管理员无需更改所有客户端计算机并配置地址,而只需更改DHCP服务器的配置即可。

让bigin安装配置dhcp服务器所需的软件包。
可以使用YUM来完成安装(redhat linux DVD确实具有安装dhcp所需的所有软件包和依赖关系。
)。

[root@myvm1 ~]# yum install dhcp

现在,安装dhcp服务器后,我们将在/etc中获得一个名为dhcpd.conf的配置文件。

典型的/etc/dhcpd.conf仅包含以下内容。
及其空白

## DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample
#

现在red hat包含了大多数软件包的文档,我们可以在/usr/share/doc /中找到它们。
我们需要在该目录下查找dhcp的正确版本,并其中找到dhcpd.conf。
示例配置文件。

现在,在我的情况下,其目录为/usr/share/doc/dhcp-3.0.5/,目录列表如下。

[root@myvm1 ~]# cd /usr/share/doc/dhcp-3.0.5/
[root@myvm1 dhcp-3.0.5]# ls
api+protocol                          IANA-arp-parameters  rfc2131.txt
dhcpd.conf.sample                     ja_JP.eucJP          rfc2132.txt
draft-ietf-dhc-authentication-14.txt  README               rfc2485.txt
draft-ietf-dhc-dhcp-dns-12.txt        RELNOTES             rfc2489.txt
draft-ietf-dhc-failover-07.txt        rfc1542.txt          rfc951.txt

该目录中的dhcpd.conf.sample文件可能对配置非常有帮助。

/var/lib/dhcpd/dhcpd.leases文件在查找服务器分配给客户端的地址时非常有用。

在大多数情况下,最好使用示例配置文件/usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample复制并覆盖/etc/dhcpd.conf文件,以便于配置。

因此,现在让我们开始配置一个简单的网络,该网络在指定的地址范围内为每个主机分配一个地址,并进行如下配置。

子网:172.16.200.0掩码:255.255.255.0

网关:172.16.200.254

电话:172.16.200.254

域名:theitroad.com

范围:172.16.200.20至172.16.200.150

因此,在这种情况下,我们的配置将如下所示。

subnet 172.16.200.0 netmask 255.255.255.0 {
        option routers          172.16.200.254;
        option subnet-mask      255.255.255.0;
        option nis-domain       "theitroad.com";
        option domain-name      "theitroad.com";
        option domain-name-servers      172.16.200.254;
        option time-offset      -18000;
        range dynamic-bootp     172.16.200.20 172.16.200.150;
        default-lease-time      21600;
        max-lease-time  43200;
}

现在让我们遍历上图中的每个选项:

可选路由器:这指定网关

options subnet-mask:指定网络中使用的子网掩码

选项nis-domain:此选项指定客户端SUN NIS域

选项domain-name-servers:这指定客户端的dns服务器。

选项time-offset:这指定客户端计算机在UTC中可以具有的时间偏移

范围:指定可以分配给客户端的IP地址范围。

default-lease-time:分配给主机的IP地址的有效时间

max-lease-time:分配给主机的IP地址可以具有的最大有效性

现在,设想一种情况,我们需要通过dhcp将一个固定的IP地址连接到主机之一,在这种情况下,我们需要为dhcpd.conf配置具有由其MAC地址标识的特定主机的特定IP地址。

现在,在上述配置中,我们假设我们的网络中需要一台名称为test的机器,其机器具有如上所述的mac地址,以具有特定的ip地址172.16.200.32.

现在,每台具有mac地址00:0C:29:93:A0:52的计算机将始终仅获得该IP地址。

现在,在编辑更改后,保存并关闭文件dhcpd.conf并重新启动dhcpd服务。

现在,我们还可以通过/etc/dhcpd.conf文件中的以下语句,指定网络中的客户端要使用的默认ntp服务器。

选件ntp-servers 172.16.200.42;

注意:ntp服务器选项应放在子网声明括号内。

现在,配置客户端非常简单,我们大多数人都已经知道。

/etc/sysconfig/network-scripts/ifcfg-eth0中必须具有以下内容

DEVICE=eth0 
BOOTPROTO=dhcp 
HWADDR=00:0c:29:93:a0:52 
ONBOOT=yes 
TYPE=Ethernet

现在,让我们了解客户端从dhcp服务器获取ip地址和其他相关信息所经历的步骤。

步骤1:DHCP发现消息

当客户端启动时,它将使用dhcp discover在其网络中发送广播消息。
此广播称为dhcp发现消息,该消息包含客户端的MAC地址,其目的地为dhcp服务器的UDP端口67.

关于此发现消息,存在一个有趣的问题。

客户端如何在没有IP地址的情况下发送广播?
发现消息包中的源地址是什么?
目的地是什么?

答:客户端将使用0.0.0.0作为源地址,并使用255.255.255.255作为目标地址,数据包的源端口将为68,目标地址将为67,并且数据包的类型将为UDP

步骤2:DHCP提供消息:

现在,当DHCP服务器从客户端收到发现消息时,它将使用dhcp offer消息响应该消息,并向请求以下信息的计算机发送此消息。
由于客户端尚未有ip地址,因此该数据包也将是广播数据包。

2.服务器提供的IP地址

3.租期

4.DHCP服务器IP

现在,假设网络中有多个DHCP服务器,它们都向客户端提供dhcp offer消息。

此提供消息的类型为UDP广播,源地址为dhcp服务器地址,目标地址为255.255.255.255,目标端口为68

步骤3:DHCP请求消息:

当客户端从服务器收到提议消息时,它将发送dhcp广播请求,请求提供的ip地址和其他配置。
所有提供dhcp优惠消息的dhcp服务器都将收录该广播。

但是客户端将仅接受一台服务器作为其dhcp服务器。
并且所有其他服务器都通过dhcp请求广播消息获悉此事实(请求消息中的事务ID)。
当其他dhcp服务器收到此请求消息时,它们将撤回其要约消息。

此数据包将是UDP广播的,其源地址仍为0.0.0.0,因为客户端仍没有IP地址(仅由ip提供)。
目标IP将为255.255.255.255,因为此地址为广播地址,而目标为端口将再次为67.

步骤4:DHCP确认:

dhcp服务器在收到dhcp请求消息后将发回包含IP租约期限和其他ip配置的dhcp ack消息。
客户端的配置由客户端本身完成。

此数据包还是UDP广播数据包,源地址为DHCP服务器地址,目标为255.255.255.255,目标端口为68,源端口为67

现在,这里要注意的最重要的事实是,dhcp服务器没有任何身份验证机制,这使其容易受到攻击。

由于客户端没有任何方法可以验证dhcp服务器的身份,因此攻击者可以在网络中制造其dhcp服务器,并且可以向请求ip的客户端提供错误的详细信息。

现在,在阅读了此教程 之后,你们是否认为在DHCP提供消息之后,请求消息是不需要的消息?

答:实际上,请求消息并不是完全不需要的,该请求消息有两个作用。

1.客户端可以检查DHCP服务器提供的IP地址是否已经分配给服务器上的其他网卡?

2.请求消息通知网络中的其他DHCP服务器,哪些dhcp服务器回复客户端接受的消息。