一:dhcp的工作原理
简介: DHCP 是 Dynamic Host Configuration Protocol(动态主机配置协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘启动并连接上网络,BOOTP则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性" ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常严重的资源浪费。DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 "租约" 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。DHCP 的分配形式 首先,必须至少有一台 DHCP 工作在网络上面,它会监听网络的 DHCP 请求,并与客户端磋商 TCP/IP 的设定环境。
原理:
DHCP是一个基于广播的协议,它的操作可以归结为四个阶段,这些阶段是IP租用请求、IP租用提供、IP租用选择、IP租用确认。
1、IP租用请求:在任何时候,客户计算机如果设置为自动获取IP地址,那么在它开机时,
就会检查自己当前是否租用了一个IP地址,如果没有,它就向DCHP请求一个租用,由于该客户计算机并不知道DHCP服务器的地址,所以会用255.255.255.255作为目标地址,源地址使用0.0.0.0,在网络上广播一个DHCPDISCOVER消息,消息包含客户计算机的媒体访问控制(MAC)地址(网卡上内建的硬件地址)以及它的NetBIOS名字。
2、IP租用提供:当DHCP服务器接收到一个来自客户的IP租用请求时,它会根据自己的作用域地址池为该客户保留一个IP地址并且在网络上广播一个来实现,该消息包含客户的MAC地址、服务器所能提供的IP地址、子网掩码、租用期限,以及提供该租用的DHCP服务器本身的IP地址。
3、IP租用选择:如果子网还存在其它DHCP服务器,那么客户机在接受了某个DHCP服务器的DHCPOFFER消息后,它会广播一条包含提供租用的服务器的IP地址的DHCPREQUEST消息,在该子网中通告所有其它DHCP服务器它已经接受了一个地址的提供,其他DHCP服务器在接收到这条消息后,就会撤销为该客户提供的租用。然后把为该客户分配的租用地址返回到地址池中,该地址将可以重新作为一个有效地址提供给别的计算机使用。
4、IP租用确认:DHCP服务器接收到来自客户的DHCPREQUEST消息,它就开始配置过程的最后一个阶段,这个确认阶段由DHCP服务器发送一个DHCPACK包给客户,该包包括一个租用期限和客户所请求的所有其它配置信息,至此,完成TCP/IP配置。
分配方式:
人工分配(Manual Allocation),网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期。
自动分配( Automatic Allocation),其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。
动态分配(Dynamic Allocation),当 DHCP客户端 第一次从 DHCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。动态分配显然比自动 分配更加灵活,尤其是当您的实际 IP 地址不足的时候,使用动态分配的方式是最好的选择。
说明:dhcp使用的协议为udp,服务器端使用的67端口,客户端使用的是68端口。
案例一 :单一区域的管理
需求分析:
在一个局域网中搭建dhcp服务器并为该网段分配各网关参数
示意图:
实现步骤:
dhcpserver 的搭建 选择vmnet3网卡
1:安装dhcp-3.0.5-21.el5.i386.rpm
[root@zzu ~]# mount /dev/cdrom /mnt/cdrom/
[root@zzu ~]# cd /mnt/cdrom/Server/
[root@zzu Server]# rpm -ivh dhcp-3.0.5-21.el5.i386.rpm
warning: dhcp-3.0.5-21.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID
Preparing... ########################################### [100%]
1:dhcp ########################################### [100%]
2: 查询dhcp的配置文件的所在的位置
[root@zzu Server]# rpm -qc dhcp
/etc/dhcpd.conf
/etc/rc.d/init.d/dhcpd
/etc/rc.d/init.d/dhcrelay
/etc/sysconfig/dhcpd
/etc/sysconfig/dhcrelay
/var/lib/dhcpd/dhcpd.leases
3:修改dhcp的配置文件
[root@zzu Server]# vim /etc/dhcpd.conf 在这里我们可以参考dhcp的模板配置文件
:r /usr/share/doc/dhcp-3.0.5/dhcpd.conf.sample(底行模式下执行)
1 #
2 ddns-update-style interim;
3 ignore client-updates; 动态的刷新客户端的信息
4
5 subnet 192.168.10.0 netmask 255.255.255.0 {
6
7 # --- default gateway
8 option routers 192.168.10.254; 网关地址
9 option subnet-mask 255.255.255.0; 子网掩码
10
11 option domain-name "www.test.com"; 域名
12 option domain-name-servers 222.88.88.88,222.85.85.85; 域名服务器的地址,注意两个ip地址之间需要要逗号分隔开才行
13
14 option time-offset -18000; # Eastern Standard Time
15 # option ntp-servers 192.168.1.1;
16 # option netbios-name-servers 192.168.1.1;
17 # --- Selects point-to-point node (default is hybrid). Don't change this unless
18 # -- you understand Netbios very well
19 # option netbios-node-type 2;
20
21 range dynamic-bootp 192.168.10.1 192.168.10.253; ip的范围
22 default-lease-time 21600;默认的租约时间为6小时
23 max-lease-time 43200;最大的租约时间为12小时
24
25 # we want the nameserver to appear at a fixed address ip地址的绑定