dhcp:在一个局域网中为计算机分配和IP地址、子网掩码、默认网关等的一种协议
协议使用端口:
服务器端:监听在udp67端口
客户端:监听在udp68端口
dhcp地址租约过程
1、客户端发送dhcpdiscover广播报文,源地址为0.0.0.0,目的地址为255.255.255.255,目的端口为udp67
2、服务器相应并发送offer广播报文,源地址为0.0.0.0,目的地址为255.255.255.255,目的端口为udp68
3、客户端发送dhcprequest广播报文
4、服务段发送一个ack广播报文,告诉DHCP Client可以使用该IP地址
注意要点:
1、一个局域网中有多个dhcp服务器时,当一个客户端发送discover报文时会收到多个offer报文,客户端将使用最先收到的offer报文的服务器提供的ip地址
2、request报文使用广播的原因:为了通知所有DHCP服务器自己将选择哪一台服务器提供的IP地址
3、使用dhcp获取的ip地址有一个租约时长,租约过期后,DHCP 服务器将回收该IP地址,若客户端想继续使用必须续约,一般的续约方法是:租期过半时,客户端向服务端发送dhcp renew报文来续约。
dhcp服务器的安装和配置
实验环境:CentOS6.8
1、安装dhcp和dhcp-common软件包
yum install -y dhcp \\dhcp的主程序包
yum install -y dhcp-common \\被服务器和客户端使用的共同文件
2、复制配置文件
cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
3、修改配置文件
vim /etc/dhcp/dhcpd.conf
全局配置
option domain-name "lzs.org"; #定义DNS域名
option domain-name-servers ns1.lzs.org, ns2.lzs.org; #定义DNS服务器地址
default-lease-time 600; #定义默认客户端租约IP的时间长度,单位是秒
max-lease-time 7200; #定义最大客户端租约IP的时间长度,单位是秒
局部配置
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.250;
option domain-name-servers ns11.lzs.org,ns12.lzs.org; #定义dns服务器(会覆盖全局配置中的dns服务器配置)
option domain-name "internal.example.org"; #定义DNS域名(会覆盖全局配置中的域名配置)
option routers 192.168.10.1; #定义客户端的默认网关
option broadcast-address 192.168.10.255; #定义广播地址
default-lease-time 600; #定义默认客户端租约IP的时间(会覆盖全局配置的相关配置)
max-lease-time 7200; #定义最大客户端租约IP的时间(会覆盖全局配置中的相关配置)
}
#为某一主机分配固定IP
host lzs {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address 192.168.10.2;
}
#为公司员工分配一个地址段,为来访人员分配另外地址段,且租约时长不同
class "Inside" {
match if substring (option vendor-class-identifier,0,4)="SUNW";
}
subnet 192.168.2.0 netmask 255.255.255.0 {
option routers 192.168.2.254;
#公司员工
pool{
option domain-name-servers ns1.lzs.org;
max-lease-time 7200;
default-lease-time 600;
range 192.168.2.10 192.168.2.100;
allow members of "Inside";
}
#来访人员
pool{
option domain-name-servers ns2.lzs.org;
max-lease-time 72000;
default-lease-time 6000;
range 192.168.2.150 192.168.2.250;
allow unknown-clients;
}
}
4、启动dhcpd服务
service dhcpd start
5、查看dhcpd监听的端口
netstat -ulnp |grep dhcpd
可以看到dhcpd已经监听在udp的67号端口上了