Chinaunix首页 | 论坛 | 博客
  • 博客访问: 86426
  • 博文数量: 42
  • 博客积分: 2630
  • 博客等级: 少校
  • 技术积分: 415
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 11:05
文章分类
文章存档

2011年(1)

2010年(41)

我的朋友

分类: LINUX

2010-08-31 21:37:05

搞了这么久DHCP,今天做下总结.

系统用的是RHEL 4.8-64

.先说一下DHCPIP申请过程

根据客户端是否第一次登录网络﹐DHCP 的工作形式会有所不同

当客户机是第一次登录网络时.

1.IP租用请求:

  DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。

2.IP租用提供:

  任何接收到DHCPDISCOVER广播包并且能够提供IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCPOFFER广播包,提供一个IP地址。该广播包的源IP地址为DCHP服务器IP,目标IP地址为255.255.255.255;包中还包含提供的IP地址、子网掩码及租期等信息。 

3.IP租用选择:

  客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCPOFFER包,并向网络中广播一个DHCPREQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。  所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。

4.IP租用确认:

  被客户机选择的DHCP服务器在收到DHCPREQUEST广播后,会返回给客户机一个DHCPACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息发给客户机。 客户机在收到DHCPACK包,会使用该包中的信息来配置自己的TCP/IP,则租用过程完成。

5. 客户接收到包括配置参数的DHCPACK包,它应该对此参数进行最后一次检查,客户端还会向网络发送一个 ARP 封包﹐查询网络上面有没有其它机器使用该 IP 地址 ,不要和人家的冲突了,当没有发现冲突时客户才算真正配置好了。如果客户发现有人已经使用了这个地址,它需要向服务器发送DHCPDECLINE包,并重新开始配置过程,当然了,客户机必须等待一段时间后才能进行重要的配置过程,如果紧接着就进行会对网络造成巨大的压力。不但在地址冲突的时候要重新开始配置过程,在接收到DHCPNAK包时也要进行重要配置过程。如果超时而未接收到DHCPACKDHCPNAK包,客户需要再次发送DHCPREQUEST。当然这个发送的过程要有一定的时间,不要人家服务器还没接收到呢,这边就放弃了。如果重新发送后还是没有收到DHCPACKDHCPNAK包,客户要返回初始状态,并通知用户,初始化过程失败,正在重新开始。

6. 客户可以通过发送DHCPRELEASE包取消租用。客户在消息中放置客户标记”chaddr”和网络地址。如果客户在租用的时候使用了客户标记,在取消租用的时候必须还使用这一标记项。

7. 如果客户通过别的手段获得了网络地址,它可以使用DHCPINFORM请求获得其它配置参数,服务器接收到DHCPINFORM包,并建立一个DHCPACK消息,在其中包括一些合适客户的配置参数,只是不包括分配网络地址,检查现有的绑定,在信息中不填充'yiaddr'字段或租用时间参数。服务器取得DHCPINFORM包内的'ciaddr'地址,而返回DHCPACK包。

 

DHCP客户机在发出IP租用请求的DHCPDISCOVER广播包后,将花费1秒钟的时间等待DHCP服务器的回应,如果1秒钟没有服务器的回应,它会将这一广播包重新广播四次(以24816秒为间隔,加上1~1000毫秒之间随机长度的时间)。四次之后,如果仍未能收到服务器的回应,则运行Windows 2000DHCP客户机将169.254.0.0/16这个自动保留的私有IP地址(APIPA)中选用一个IP地址,而运行其他操作系统的DHCP客户机将无法获得IP地址。DHCP客户机仍然每隔5分钟重新广播一次,如果收到某个服务器的回应,则继续IP租用过程。

重新登录:

当客户机重新登录时,客户不会发送DHCPDISCOVER发现信息了,而是直接发送包含前一次所分配的IP地址的DHCPREQUEST请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCPACK确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCPNACK否认信息。当原来的DHCP客户机收到此DHCPNACK否认信息后,它就必须重新发送DHCPDISCOVER发现信息来请求新的IP地址。

 

DHCP 所包含的各种封包:
1
  DHCP DISCOVER
2
  
DHCP OFFER
3
  
DHCP REQUEST
4
  
DHCPDECLINE
5
  
DHCPACK
6
  
DHCPNACK
7
  DHCPRELEASE

 

DHCP 封包格式

 

 

 

以下为各字段的简要说明:
OP
若是 client 送给 server 的封包,设为 1 ,反向为 2
HTYPE
硬件类别,Ethernet 1
HLEN
硬件地址长度, Ethernet 6
HOPS
若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0
TRANSACTION ID
DHCP REQUEST
时产生的数值,以作 DHCPREPLY 时的依据。
SECONDS
Client
端启动时间()
FLAGS
0 15 16 bits ,最左一 bit 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。
ciaddr
要是 client 端想继续使用之前取得之 IP 地址,则列于这里。
yiaddr
server 送回 client DHCP OFFER DHCPACK 封包中,此栏填写分配给 client IP 地址。
siaddr
client 需要透过网络开机,从 server 送出之 DHCP OFFERDHCPACKDHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。
giaddr
若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0
chaddr
Client
之硬件地址。
sname
Server
之名称字符串,以 0x00 结尾。
file
client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
options
允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如:NetmaskGatewayDNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。

.IP租用更新:

1.在当前租期已过去50%时,DHCP客户机直接向为其提供IP地址的DHCP服务器发送DHCPREQUEST消息包。如果客户机接收到该服务器回应的DHCPACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没收到该服务器的回复,则客户机继续使用现有的IP地址,因为当前租期还有50%

2. 如果在租期过去50%的50%时,客户机将在再次向为其提供IP地址DHCP联系。如果联系不成功,则会再在剩余租期的50%时,再次申请续租,此过程一直继续直到租期到期.

3. 如果DHCP客户机重新启动时,它将尝试更新上次关机时拥有的IP租用。发送DHCPREQUEST广播消息包,如果更新未能成功,客户机将尝试联系现有IP租用中列出的缺省网关。如果联系成功且租用尚未到期,客户机则认为自己仍然位于与它获得现有IP租用时相同的子网上(没有被移走)继续使用现有IP地址。 如果未能与缺省网关联系成功,客户机则认为自己已经被移到不同的子网上,将会开始新一轮的IP租用过程。

 

.DHCPRHEL4.8上的架设

当你的DHCP服务器有多张网卡时,还需要绑定具体某个网卡

/etc/sysconfig/dhcpd

DHCPARGS=eth0

Linux下的配置文件为/etc/dhcpd.conf

常用参数介绍

参数主要用于设置服务器和客户端的动作或者是否执行某些任务,比如设置IP地址租约时间、是否检查客户端所用的IP地址等等哈~

常见参数使用如下:

1ddns-update-style (none|interim|ad-hoc)

作用:定义所支持的DNS动态更新类型。

none:表示不支持动态更新

interim:表示DNS互动更新模式

ad-hoc:表示特殊DNS更新模式

注意:这个选项是必选参数哈,配置文件中必须包含这一个参数并且要放在第一行。

2ignore client-updates

作用:忽略客户端更新

注意:这个参数只能在服务器端使用。

3default-lease-time number(数字)

作用:定义默认IP租约时间

4max-lease-time number(数字)

作用:定义客户端IP租约时间的最大值

 (5) domain-name-servers

定义DHCP客户使用的DNS 服务器,多个DNS请使用逗号分割

option domain-name-servers 192.168.0.17, 203.56.8.1;

(6) authritative
拒绝不正确的IP地址的要求

 authoritative;

 (7) domain-name
为客户端指明DNS名字。

     option domain-name “shsfis.com”;

 (8) domain-name-servers

     为客户端指明DNS服务器IP地址,有多个时用逗号隔开

   option domain-name-servers 10.5.1.42;

9option routers IP地址

作用:为客户端指定默认网关

10option subnet-mask 子网掩码

作用:设置客户端的子网掩码

 (11)broadcast-address
为客户端设定广播地址。

  option broadcast-address 10.5.111.255;

(12)ntp-server
为客户端设定网络时间服务器IP地址。

(13)timeoffset
为客户端设定和格林威治时间的偏移时间,单位是秒。

在服务器/var/lib/dhcpd/dhcpd.leases 档案中显示的租约时间是UTC时间,这个UTC时间与你的本机时间差就是 -18800;但在客户端看到的租约时间还是本机时间。

 option time-offset -18800;

(14)subnet-mask

为客户端设定子网掩码

(15)subnet 网络号 netmask 子网掩码 {......}

作用:定义作用域,指定子网

(16)range 起始IP地址 结束IP地址

作用:指定动态IP地址范围

 (17)设定保留IP地址.

host ns {
        hardware ethernet 52:54:AB:34:5B:09;
        fixed-address 192.168.1.9;
    }

一个完整的配置档案

ddns-update-style interim;

ignore client-updates;

authoritative;

option domain-name "shsfis.com";

option domain-name-servers 10.6.1.254;

 

  subnet 10.6.1.0 netmask 255.255.255.0 {

  option broadcast-address 10.6.1.255;

  option time-offset -18800;

  option routers 10.6.1.254;

  range 10.6.1.10 10.6.1.20;

  default-lease-time 7200;

  max-lease-time 14400;

host n1-1-aoi {

  hardware ethernet 00:00:00:00:01:51;

  fixed-address 10.6.1.221;

}

}

 

 

注意的地方:

    1. subnet 必须包括DHCP服务器所在的网段,否则DHCP服务无法启动.

   2. range 分出去IP范围不能像Windows DHCP服务器那样可以保留rang中的IP地址.LINUX 中要想分配保留IP地址,这个IP地址一定是在range外的IP.

 

阅读(2975) | 评论(0) | 转发(0) |
0

上一篇:Modules

下一篇:DNS

给主人留下些什么吧!~~