一、DHCP Server工作流程
由于之前对DHCP服务的概念不熟悉,特在此记录工作流程:
1.发现阶段。
DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCPdiscover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2.提供阶段。
在网络中接收到DHCPdiscover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCPoffer提供信息。
3.选择阶段。
如果有多台DHCP服务器向DHCP客户机发来的DHCPoffer提供信息,则DHCP客户机只接受第一个收到的DHCPoffer提供信息,然后它就以广播方式回答一个DHCPrequest请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
4.确认阶段。
当DHCP服务器收到DHCP客户机回答的DHCPrequest请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCPack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
5.重新登录。
以后DHCP客户机每次重新登录网络时,就不需要再发送DHCPdiscover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCPrequest请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCPack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCPnack否认信息。当原来的DHCP客户机收到此DHCPnack否认信息后,它就必须重新发送DHCPdiscover发现信息来请求新的IP地址。
6.更新租约。
DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
二、DHCP Server安装配置
1、安装
# aptitude install dhcp3-server dhcp3-common
2、配置文件
在/etc/dhcp3/dhcpd.conf中
option domain-name "gmshi.org";
option domain-name-servers 192.168.1.6;
default-lease-time 1200;
#指定缺少租赁时间长度,单位是秒;
max-lease-time 18000;
#指定最大租赁时间长度,单位为秒;
authoritative;
#拒绝不正确的IP地址的要求;
log-facility local7;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
#为客户端设定广播地址;
range 192.168.1.43 192.168.1.199;
#提供动态分配IP的范围;
# for install debian & windows xp with PXE
filename "pxelinux.0";
host data {
hardware ethernet 00:30:18:C0:68:80;
#指定网卡接口类型和MAC地址
fixed-address 192.168.1.6;
}
host wireless {
hardware ethernet 00:19:e0:ab:6c:3d;
fixed-address 192.168.1.254;
}
}
3、启动
dhcp服务器的启动
$sudo /etc/init.d/dhcp3-server start
dhcp服务器的停止
$sudo /etc/init.d/dhcp3-server stop
dhcp服务器的重启
$sudo /etc/init.d/dhcp3-server restart
4、多网卡支持
租期数据库如果主机上装有多个网卡,则可以通过修改/etc/default/dhcp3-server文件,来指定DHCP服务器监听的接口, 比如
$ cat /etc/default/dhcp3-server
INTERFACES="eth0 eth1"
则指定DHCP服务器仅对第一,二块网卡接口进行监听,也可以通过直接修改/etc/init.d/dhcp3-server服务器启动脚本的INTERFACES项来指定要监听的端口, 比如
INTERFACES="eth0"
仅对第一块网卡接口进行监听
5、租期数据库
在 DHCP 服务器第一次启动时, 会自动创建 /var/lib/dhcp3/dhcpd.leases 文件, 用于存放DHCP 的客户租期信息。不应该对该文件进行手动修改。每分配一个IP地址, 相关信息就会自动写入该文件。这些信息包括租期的长度;IP 地址被分配的对象;租期的开始和终止日期;以及客户机的网卡 MAC 地址。
6、DHCP客户端的配置
如果客户端通过DHCP服务器来获取相关的网络信息的话, 可以做如下操作:修改/etc/network/interfaces为如下内容:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
完成后, 重启网络服务:
# /etc/init.d/network restart
使用 ifconfig 命令, 来检查效果