什么是DHCP
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议
-->是由Internet工作任务小组设计开发的,专用于对TCP/IP网络中的计算机自定分配TCP/IP参数的协议。
使用DHCP的好处:
- 减少管理员的工作量
- 避免IP冲突->当网络更改IP地址段时,不需要再重新配置每个用户的IP地址。
- 提高了IP地址的利用率
- 放便客户端的配置
可分配的地址信息主要包括
- 网卡的IP地址
- 子网掩码
- 对应的网络地址
- 广播地址
- 默认网关地址
- DNS服务器地址等
DHCP的分配方式
- 自动分配: 分配到一个IP地址后永久使用
- 手动分配:由DHCP服务器管理员专门指定IP地址
- 动态分配:使用完后释放该IP,供其它客户机使用
DHCP租约过程:
客户机从DHCP服务器获取IP地址的过程称为DHCP的租约过程
- 客户机请求IP(客户机发DHCP Discover 广播包)
- 服务器相应(服务器发DHCP Offer 广播包)
- 客户机选择IP(客户机发DHCP Request 广播包)
- 服务器确定租约(服务器发DHCP ACK 广播包)
一、客户机请求IP(客户机发DHCP Discover广播包)
- 当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
- 此时DHCP客户机一广播的方式(因为DHCP服务器的IP地址对客户机来说是未知的)发送DHCP Discover发现信息来寻找DHCP服务器。
- 广播信息中包含DHCP客户机的MAC地址和计算机名,以便DHCP服务器确定是哪个客户机发送的请求。
Client->Server (DHCP Discover)
源IP地址:0.0.0.0
目标地址:255.255.255.255
二、服务器响应(服务器发DHCP Offer广播包)
- 当DHCP服务器接收到来自客户机请求IP地址的信息时,它们就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器就将此IP地址作上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则包含下列信息的DHCP Offer消息
- DHCP客户机的MAC地址,DHCP服务器提供的合法IP地址,子网掩码,默认网关,租约的期限,DHCP服务器的IP地址。
Client<-Server (DHCP Offer)
源IP地址:192.168.10.10
目标地址:255.255.255.255
提供地址:192.168.10.101
三、客户机选择IP(客户机发DHCP Request广播包)
- DHCP客户机从接收的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机。
- 当客户机从第一个DHCP服务器接收DHCP Offer信息并提取了IP地址后,客户机将DHCP Request消息广播到所有的DHCP服务器,表明它接收提供的内容。
- DHCP Request消息包括为客户机提供IP配置的服务器的服务标识符(服务器IP地址),DHCP服务器查看服务器标识符字段,以确定提供的IP地址是否被接受,如果DHCP Offer被拒绝,则DHCP服务器取消并保留IP地址以提供给下一个IP租约的请求。
Client->Server (DHCP Request)
选择DHCP服务器(192.168.10.10)
源IP地址:0.0.0.0
目标地址:255.255.255.255
租约期限: 八天
四、服务器确定租约(服务器发DHCP ACK广播包)
- DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息。
- 当客户机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。
Client<-Server (DHCP ACK)
源IP地址:192.168.10.10
目标地址:255.255.255.255
重新登陆
- DHCP客户机每次重新登陆网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。
- 当DHCP服务器接收到这一信息后,它会尝试让DHCPk客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息。
Client->Server (DHCP Request请求包)
Client<-Server (DHCP ACK确认信息)
- 如果次IP地址已无法在分配给原来的DHCP客户机使用(如IP地址已经分配给其他的DHCP客户机使用),DHCP服务器给DHCP客户机回答一个DHCP Nack否认信息。
- 当原来的DHCP客户机收到此DHCP Nack否认信息后,它就必须重新发送DHCP Discover发现信息来请求新的IP地址。
Client->Server (DHCP Request请求包)
Client<-Server (DHCP Nack否认信息)
Client->Server (DHCP Discover重发)
更新租约
- 当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。
- 客户机直接向提供租约的服务器发送DHCP Request要求更新现有的地址租约。若此时
- DHCP服务器无法正常回复DHCP客户机的请求,客户机的此IP地址可以继续使用到最大约时间的87.5%。
DHCP中继的配置
Cisco:
ip helper-address DHCPsrv-IPAddress(服务器的IP地址)
#在三层交换机上配置DHCP中继转发,是在不包含DHCP服务器的VLAN上配置实现的
SW-3l(config)#interface vlan 2
SW-3l(config-if)#ip address 192.168.2.1 .255.255.255.0
SW-3l(config-if)#ip helper-address 192.168.100.100
SW-3l(config-if)#no shutdown
Linux:
- 服务器的网关地址是中继的IP,
- 中继的网关地址是服务器的IP.
安装DHCP服务器
- DHCP服务器软件
- 光盘中的dhcp-4.11-38.P1.el6.centos.x86_64.rpm
- 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
- 主配置文件
- 保证网络连通性:
- 关闭防火墙:临时关闭防火墙 /etc/init.d/iptables stop
- 永久关闭防火墙 chkconfig iptables off
- 关闭SELINUX安全机制:
- 临时关闭: setenforce 0
- 永久关闭:vi /etc/selinux/conf 更改
- 第七行将enforcing改为disabled
- 重启生效
- /etc/sysctl.conf IP地址转发
- -->net.ipv4.ip_forward = 1
- 测试网络是否畅通 ping、nslookup nmap、netstat traceroute.
- 安装软件包 rpm、yum(本地源,网络源)、源代码编译安装。
- 根据需求对服务相关文档进行备份配置
- 通过相应检测工具,对配置好的文档在服务启动前进行检查以便在启动时保证配置无误。
- 启动相关服务
- 压力测试
- 编写针对本服务的预案应急解决方案。
- 保证网络连通性:
查看租约文件
可以通过查看租约文件dhcpd.leases来了解服务的IP地址分配情况。该租约文件中记录了分配出去的每个IP地址信息(租约记录),包括IP地址,客户端的MAC地址,租用的起始时间和结束时间等。
less /var/lib/dhcpd/dhcpd.leases
全局设置,作用于整个DHCP服务器
ddns-update-style none; //设置dhcp互动更新模式
ignore client-updates; //忽略客户端更新
option routers 192.168.12.1; //设置客户端默认网关
option subnet-mask 255.255.255.0; //设置客户端子网掩码
option nis-domain "ixdba.net "; //设置NIS域
option domain-name " ixdba.net "; //设置DNS域
option domain-name-servers 192.168.12.1;//设置DNS服务器地址
option time-offset -18000; # Eastern Standard Time //设置时间偏差
range dynamic-bootp 192.168.12.128 192.168.12.254; //设置地址池
default-lease-time 21600; //设置默认租期,单位为秒
max-lease-time 43200; //设置客户端最长租期,单位为秒
·Subnet网段声明,作用于整个子网段
range 参数:设置用于分配IP地址池
option subnet-mask 参数:设置客户机的子网掩码
option routers 参数:设置客户机的默认网关地址
·host主机声明,作用于单个主机
hardware ethernet 参数:指定对应主机的MAC地址
fixed-address 参数:指定为该主机保留的IP地址
host ns { //以下设定分配静态IP地址,不多做解释。
next-server marvin.RedHat.com;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 207.175.42.254;
}
ddns-update-style interim;
...
subnet 192.168.0.0 netmask 255.255.255.0{ (分配一个网段)
option routers 192.168.0.1;
...
default-lease-time 21600;
...
host ns{
...
fix-address 207.175.42.254;
}
}
subnet 192.168.4.0 netmask 255.255.255.0{
range 192.168.4.128 192.168.4.254;
option subnet-mask 255.255.255.0;
option routers 192.168.4.1;
}
host prtsvr {
hardware ethernet 00:c0:c3:22:46:81;
fixed-address 192.168.4.100;
}
启动DHCP服务
/etc/init.d/dhcpd start
netstat -anpu | grep ":67" #查看DHCP端口开启状态
#如果dhcpd服务启动失败,可以检查日志文件/var/log/message末尾的错误提示信息,并根据提示进行排错。
#其他说明:
range 192.168.12.2 192.168.12.125; #可以限定分配的IP地址范围。
#如果想给某IP分配固定的IP地址,修改host 那一项,把网卡的Mac地址和IP进行绑定,就是最后那一段,改为相应的就可以了。
#在subnet里定义的网段要与你的网卡IP所处网段一致,也就是说比如你的网卡是192.168.0.x,而dhcp服务却为10.1.1.0的subnet提供服务是不行的,是启动不了的。
使用DHCP客户端
两种方式:
1. 修改网卡的配置文件(ifcfg-eth0)
BOOTPROTO=dhcp
ifdown eth0 ; ifup eth0
2. dhclient命令
dhclient -r eth0 #释放已获取IP
dhclient -d eth0 #重新获取IP
#需要通过dhclient命令释放获取的IP租约时,可以结合"-r"选项。例如"dhclient -r eth0"#将会释放之前为网卡eth0获取的IP租约.
dmesg | grep -in eth #查看全部硬件中关于eth的参数