DHCP原理与配置

一、DHCP服务概述
1 DHCP(Dynamic Host Configuration Protocol)动态主机配置协议。
DHCP是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中计算机自动分配TCP/IP参数的协议
使用DHCP可以减少管理员的工作量,避免IP地址冲突,当网络更改IP地址网段时不需要再来重新配置每个用户的IP地址,提高了IP地址的利用率,方便客户端的配置。
2 可分配的地址信息主要包括:
网卡的IP地址、子网掩码、对应的网络地址、广播地址、默认网关地址、DNS服务器地址
3 DHCP的分配方式
(1)自动分配:分诶到一个IP地址后永久使用
(2)手动分配:由DHCP服务器管理员专门指定IP地址
(3)动态分配:使用完后释放该IP,使其他客户机使用
4 DHCP的租约过程
(1)客户机从DHCP服务器获取IP地址的过程称为DHCP的租约过程
(2)租约过程分为四个步骤:
①客户端在网络中搜索服务器(客户机发一个广播包)
②服务器向客户端响应服务
③客户端项目标服务器发出服务请求(单播)
④服务器向客户端提供服务
 
①客户机请求IP(客户机发DHCP Discover广播包)
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机需要通过DHCP获取一个合法的地址,此时DHCP客户机以广播的方式(因为DHCP服务器的IP地址对客户机来说是未知的)发送DHCP Discover发现信息来寻找DHCP服务器。广播信息中包含DHCP客户机的MAC地址和计算机名,以便DHCP服务器确定哪个客户机发送的请求。
②服务器响应(服务器发DHCP Offer广播包)
当DHCP服务器收到来自客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器会将此IP地址做上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则包含下列信息的DHCP Offer消息;DHCP客户机的MAC地址、DHCP服务器提供的合法IP地址、子网掩码、默认网关、租约的期限、DHCP服务器的IP地址。
③客户机选择IP(客户机发DHCP Request广播包)
DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不再分配给另一个DHCP客户机。当客户机从第一个DHCP服务器接收到DHCP Offer消息并提取了IP地址后,客户机将DHCP Request消息广播到所有的DHCP服务器,表明它接收提供的内容。DHCP Request服务器查看服务器标识符字段,以确定提供的IP是否被接受,如果DHCP Offer被拒绝,则DHCP服务器取消并保留其IP地址以提供给下一个IP租约的请求。
④服务器确定租约(服务器大DHCP ACK广播包)
DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含含有IP地址的有效租约和其他可配置的信息,当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。
 
DHCP的端口号:67
DHCP中继
默认情况下,DHCP协议只能在VLAN内部使用,如果DHCP想跨网段分发IP地址,需要在网关上设置一个DHCP中继的功能才可以
二、Linux中DHCP的安装与配置
1 DHCP的安装
[root@zhangmingjuan ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   18G  1.3G   16G   8% /
tmpfs                         491M     0  491M   0% /dev/shm
/dev/sda1                     485M   33M  427M   8% /boot
[root@zhangmingjuan ~]# mount /dev/sr0 /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@zhangmingjuan ~]# yum -y install dhcp
2 配置DHCP服务
主配置文件:/etc/dhcp/dhcpd.conf
执行程序:/usr/sbin/dhcpd、 /usr/sbin/dhcrelay(中继命令的位置)
服务脚本:/etc/init.d/dhcpd、/etc/init.d/dhcrelay
执行参数配置:/etc/sysconfig/dhcpd
DHCP中继配置:/etc/sysconfig/dhcrelay
[root@zhangmingjuan ~]# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample      ##配置文件没内容,但是指明了模板文件的位置
#   see 'man 5 dhcpd.conf'
#
[root@zhangmingjuan ~]# cd /etc/dhcp/
[root@zhangmingjuan dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf        ##将模板文件复制过来
[root@zhangmingjuan dhcp]# cp /usr/share/doc/dhcp*/dhcpd.conf.sample ./dhcpd.conf
cp: overwrite `./dhcpd.conf'? y
[root@zhangmingjuan dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf
[root@zhangmingjuan ~]# vim /etc/dhcp/dhcpd.conf
[root@zhangmingjuan ~]# egrep -v "#" /etc/dhcp/dhcpd.conf > /etc/dhcp/dhcpd.conf.bak
[root@zhangmingjuan ~]# cat /etc/dhcp/dhcpd.conf.bak > /etc/dhcp/dhcpd.conf
DHCP的配置文件包含三部分:
全局配置
分发范围
指定固定电脑获取固定地址
(1)修改配置文件
option domain-name "example.org";       ##域名,“取的名字”
option domain-name-servers ns1.example.org, ns2.example.org;    ##DNS的IP地址
default-lease-time 600;       ##默认最小租约时间,600秒
max-lease-time 7200;          ##最大租约时间,7200秒
log-facility local7;          ##日志的路径
 
subnet 10.254.239.0 netmask 255.255.255.224 {       ##声明分发的网段是多少;网段  掩码
  range 10.245.239.10 10.245.239.20;        ##IP地址分发的范围
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;   ##网关IP
}
 
subnet 10.254.239.32 netmask 255.255.255.224 {
  range dynamic-bootp 10.254.239.40 10.254.239.60;
  option broadcast-address 10.254.239.31;
  option routers rtr-239-32-1.example.org;
}
 
号外!!
[root@zhangmingjuan ~]# cat /etc/resolv.conf      ## DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序
; generated by /sbin/dhclient-script
search localdomain
nameserver 192.168.204.2      ## nameserver关键字,如果没指定nameserver就找不到DNS服务器
关于网卡配置文件与DNS配置文件参考:https://bbs.aliyun.com/detail/504964.html
 
最终修改配置结果如下
 
(二)启动DHCPD服务
[root@zhangmingjuan dhcp]# /etc/init.d/dhcpd start
Starting dhcpd:                                            [  OK  ]
 
######测试
关闭客户端虚拟机DHCP自动获取功能;服务端关闭dhcpd服务此时,客户端ifup eth0无法获取IP,打开服务端dhcpd服务
 

猜你喜欢

转载自www.cnblogs.com/juanne/p/10078433.html