DHCP服务器配置

DCHP(Dynamic Host Configuration Protocol)

3.1 DHCP工作流程

3.1.1客户端发送请求

用户端电脑的网卡设置为自动获取(DHCP)的方式,当用户端电脑开机或重新启动网卡时,用户端电脑会发出一个DHCPDISCOVER广播包(目标IP:255.255.255.255),搜索DHCP服务器在哪儿,这个广播包,只有DHCP服务器才会响应,其它主机收到后直接丢弃。

 

3.1.2 DHCP服务器回应

DHCP服务器收到客户端的广播包后,会进行下面3个操作:

(1)查看自动分配记录,根据有没有该用户(MAC地址)的记录,如果有,并且对应的IP地址目前还没有分配出去,就把该IP及相关信息分配给该用户

(2)查看绑定记录,如果有该客户端的MAC地址绑定记录,就把对应的IP分配给客户端。

(3)如果没有记录,就从IP地址池中找一个还没有分配的IP,加上租期等相关信息,向客户端发送一个DHCPOFFER包,并做好记录。

3.1.3 客户端选择

如果有多台DHCP服务器,都收到了客户端请求,并且都为该客户端分配了IP,客户端只会接受最先收到的那一个。然后再发送一个DHCPREUQEST广播包,向整个网络宣告自己接受的DHCP服务器是哪个。当其它DHCP服务器收到这个包后,就收回向该客户端发送的IP租约。

3.1.4 服务器确认

当被客户端接受的DHCP服务器收到客户端发送的DHCPREQUEST包后,会再给客户端发送一个包含IP地址及相关信息的DHCPACK确认包,并告知客户端,从现在开始计算租约时间。

3.1.5 客户端配置

客户端收到确认包后,就用收到的IP地址及相关信息来配置自己的网络

3.1.6 客户端重新登陆

客户端处于离线状态(关机、重启、禁用网卡)时,DHCP服务器会收回该客户端的IP。

当客户端重新登录时,不需要发送DHCP discover信息,而是直接发送包含前一次所分配的IP地址的DHCP request信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户端继续使用原来的IP地址,并回答一个DHCP ACK信息。如果此IP地址已无法再分配给原来的DHCP客户端使用(比如该IP地址已分配给其他DHCP客户端使用),则DHCP服务器给DHCP客户端回答一个DHCP NACK信息。当客户端收到此信息后,必须重新发送DHCP discover信息来请求新的IP地址。

3.1.7 续租

为了防止一些用户长期占用IP,所以需要设定一个租约时间,租约时间有两种方式:

1.DHCP服务器分配IP时指定

2.客户端发送请求的时候,自己指定

如果在这个期限到达之前,客户端没有重新提出申请,DHCP服务器就会收回该IP,这时,客户端就会断线。所以客户端需要定时发送续约申请,并且必须在租约到期之前。

默认,DHCP客户端会在租约时间一半时就去重新申请了。

 

3.2配置DHCP服务器

3.2.1装包

yum install -y dhcp

3.2.2修改配置文件

#默认配置文件里是空的,可拷贝模板文件,再进行修改

cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

vim /etc/dhcp/dhcpd.conf

ddns-update-style none;    # DHCP和DNS服务器同步更新,也就是动态DNS,如果要开启,将none改成interim

default-lease-time 259200;    # 默认租约为3天,以秒为单位

max-lease-time 518400;   # 最大租约为6天,客户端申请租约限制,如果客户端请求未明确租约时间,采用默认租约

option routers 10.0.0.1; # 网关

option domain-name “example.com”;   # 域名

option domain-name-servers 8.8.8.8,8.8.4.4; # DNS,以逗号分隔

#以上为全局设置,如果不想在全局使用,也可在下面subnet设置里面局部设置。

 

subnet 10.0.0.0 netmask 255.255.255.0 {

range 10.0.0.10 10.0.0.20; # 设置动态分配IP地址范围

host tt { # 设置静态绑定

hardware ethernet 00:0c:29:38:ae:a6; # MAC地址

fixed-address 10.0.0.100; # 绑定的IP

}  

}

 

注意:做静态分配的IP要和动态分配的IP段分开,否则会引起冲突。

 

3.2.3 重启DHCP服务,并开机启动

systemctl restart/enable dhcpd

3.3客户端设置

vim /etc/sysconfig/network-scripts/ifcfg-eth0 # 配置网卡

BOOTPROTO=dhcp

systemctl restart network # 重启网络

cat /etc/resolv.conf # 查看DNS

cat /var/lib/dhclient/dhclient-eth0.leases # 查看DHCP相关信息

3.4在DHCP服务器查看分配状态

cat /var/lib/dhcpd/dhcpd.leases # 查看服务器已经自动分配的IP信息

systemctl status dhcpd -l

 

dhcp的log日志跟messages在一起:   tail -f /var/log/messages

dhcp的租约信息放在: /var/lib/dhcpd/dhcpd.leases

# 换了网线后上不了网,清空dhcpd.leases租约信息

配置文件的示例文件:/usr/share/doc/dhcp-*/dhcpd.conf.sample 

你可能感兴趣的:(Linux)