DHCP服务的工作机制
(1)DHCP发现——DHCP DISCOVER
DHCP客户机发出’DHCP发现‘广播包,即目的IP地址为255.255.255.255的数据包,这样的广播包会被同一个网段的所有主机收到;
(2)DHCP提供——DHCP OFFER
收到DHCP发现广播包的客户机会忽略该信息,而服务器会给予响应,成为DHCP提供;可能有多台DHCP服务器都给出响应,他们分别从自己的IP地址池中找出一个未分配的IP地址和附带上子网掩码等参数一并提供给客户机;注意该包也是以广播包的形式发出的;
(3)DHCP请求——DHCP REQUEST
DHCP客户机收到DHCP提供包以后将准备采用收到的第一个(说明双方更容易通信)提供包中所提供的IP地址等信息,于是,正式向该DHCP服务器发出DHCP请求的广播包,这样做可以保证所有发出DHCP提供包的服务器收到该请求包,另外也同时”谢绝“其他DHCP服务器的提供包,以便其他服务器及时收回自己的IP地址;
(4)DHCP确认——DHCP ACK
当收到DHCP请求包之后,该DHCP服务器正式发出DHCP确认包,予以确认(仍是广播包形式),当客户机收到DHCP确认包后,DHCP的租借过程成功完成,此时的DHCP客户机才有了IP地址等网络参数;
为了能够及时的延长租期,DHCP服务制订了DHCP租期更新机制:
(1)RENEW更新:在50%租期时刻,DHCP客户机会发出DHCP REQUEST数据包,向DHCP服务器请求续租,如果收到DHCP服务器的响应则续租成功,否则进入下一个g更新阶段;
(2)REBIND更新:如果
在50%租期时刻没有收到服务器的响应,则DHCP客户机可以继续使用当前IP,直到87.5%租期时刻,DHCP客户机发出DHCP DISCOVER数据包,如果收到服务器的响应则续租成功,如果收到其他DHCP服务器的响应,则在用完剩下12.5%的租期后采用新的租期;
1.安装DHCP相关包
[root@localhost ~]# yum list all | grep dhcp
dhcp-common.i686 12:4.1.1-38.P1.el6.centos @anaconda-CentOS-201311271240.i386/6.5
dhcp.i686 12:4.1.1-43.P1.el6.centos base
dhcp-common.i686 12:4.1.1-43.P1.el6.centos base
dhcp-devel.i686 12:4.1.1-43.P1.el6.centos base
[root@localhost ~]# yum install dhcp
[root@localhost ~]# rpm -qa | grep dhcp
dhcp-4.1.1-38.P1.el6.centos.i686
dhcp-common-4.1.1-38.P1.el6.centos.i686
2.将配置内容复制到主配置文件中
[root@localhost dhcp]# cat dhcpd.conf
# DHCP Server Configuration file.
# see
/usr/share/doc/dhcp*/dhcpd.conf.sample #将该文件中内容复制到dhcpd.conf中
# see 'man 5 dhcpd.conf'
[root@localhost dhcp]#
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
[root@localhost dhcp]#
其中选项:
ddns-update-style interim|none|ad-hoc #设置DDNS的更新方案
interim表示DNS互动更新模式
none:表示不支持动态更新
ad-hoc:表示特殊DNS更新模式
ignore client-updates #忽略客户端更新
subnet 10.5.5.0 netmask 255.255.255.224 { #设置子网(或者说成地址池)及其参数,该子网必须要和网卡IP在同一个网段
option subnet-mask 255.255.255.0 #设置子网掩码
option nis-domain "domain.org" #设置nis域
option domain-name-servers ns1.internal.example.org; #设置DNS服务器的IP地址
option domain-name "internal.example.org"; #设置域名即/etc/resolv.conf中的search字段
option routers 10.5.5.1; #设置默认网关IP地址
option broadcast-address 10.5.5.31; #设定广播地址,若不设定系统会自动根据class A ,B ,C,的原则计算广播地址
option time-offset -18000 #设置时区
default-lease-time 600; #设置默认租期
max-lease-time 7200; #设置最大租期
range 10.5.5.26 10.5.5.30; #设置地址池即可分配IP地址的范围
host 自定义名字 { #设置IP地址与MAC地址绑定,针对主机单独做设置
hardware ethernet 0:0:c0:5d:bd:95; #该主机的MAC地址
fixed-address 10.5.5.28; #为这台主机分配指定IP
}
}
3. 配置配置文件
[root@localhost dhcp]# cat dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.85.0 netmask 255.255.255.0 {
option routers 192.168.85.2;
option subnet-mask 255.255.255.0;
option domain-name "mageedu.com";
option domain-name-servers 192.168.85.2;
option time-offset -18000;
range 192.168.85.180 192.168.85.185;
default-lease-time 21600;
max-lease-time 43200;
}
4.重启服务并测试
[root@localhost dhcp]# service dhcpd start
Starting dhcpd: [ OK ]
DHCP服务采用UDP协议,其中DHCp服务器采用67号端口,DHCP客户机采用68号端口;
[root@localhost dhcp]# netstat -unlp | grep dhcp
udp 0 0 0.0.0.0:67 0.0.0.0:* 10573/dhcpd
5. 新建一台作为客户机测试DHCP服务是否正常运行
6.然后更改配置文件,添加host选项,为这台主机配置IP地址与MAC地址绑定
[root@localhost dhcp]# cat dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.85.0 netmask 255.255.255.0 {
option routers 192.168.85.2;
option subnet-mask 255.255.255.0;
option domain-name "mageedu.com";
option domain-name-servers 192.168.85.2;
option time-offset -18000;
range 192.168.85.180 192.168.85.185;
default-lease-time 21600;
max-lease-time 43200;
host rhel {
hardware ethernet 00:0C:29:A6:46:2F;
fixed-address 192.168.85.183; #既然是保留IP,不必需要是range中的IP也可以是192.168.85.0 中的任意IP
}
}
此时在客户机上重启network查看此时的IP
查看租约信息
[root@localhost dhcpd]# pwd
/var/lib/dhcpd
[root@localhost dhcpd]# ll
total 8
-rw-r--r-- 1 dhcpd dhcpd 0 Nov 22 2013 dhcpd6.leases
-rw-r--r-- 1 root root 663 Aug 7 03:36 dhcpd.leases
-rw-r--r-- 1 root root 603 Aug 7 03:27 dhcpd.leases~
[root@localhost dhcpd]# cat dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.1.1-P1
lease 192.168.85.180 {
starts 5 2015/08/07 10:16:41;
ends 5 2015/08/07 16:16:41;
tstp 5 2015/08/07 16:16:41;
cltt 5 2015/08/07 10:16:41;
binding state active;
next binding state free;
hardware ethernet 00:50:56:2f:6d:43;
}
lease 192.168.85.181 {
starts 5 2015/08/07 10:27:26;
ends 5 2015/08/07 16:27:26;
tstp 5 2015/08/07 16:27:26;
cltt 5 2015/08/07 10:27:26;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:a6:46:2f;
}
server-duid "\000\001\000\001\035W<\011\000\014)E\203\316";
7. dhclient命令
也可以用ifconfig ethX down将IP释放,然后用dhclient命令查看获取IP的过程
用法:
dhclient命令使用动态主机配置协议动态的配置网络接口的网络参数。
参数:
-4 : 使用DHCPv4
-6 : 使用DHCPv6
-d:总是以前台方式运行程序;
-q:安静模式,不打印任何错误的提示信息;
-r:释放ip地址
例子:
dhclient -r #释放IP
# dhclient #获取IP
dhclient命令不能连续执行两次,可以执行一次后释放该进程(killall dhclient)在执行dhclient命令