了解和配置DHCP
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服务器回复客户端接受的消息。