企业网络基础服务-DHCP

企业网络基础服务-DHCP

Scroll Down

一、DHCP

1、DHCP

DHCPdynamic host configuration protocol动态主机配置协议)是局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址、子网掩码、默认网关、DNS服务器地址。默认情况下DHCP作为windows server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置,DHCP也可以安装在linux发行版本上。

DHCP应用范围从家庭和企业来分析:企业应用于大型局域网(或园区网/云环境)中,主要作用就是集中管理、分配IP地址,使得网络环境中的主机动态获取到IP地址、子网掩码、网关、DNS服务器信息等,并能够提升地址的使用率,一般使用路由器/专用服务器作为DHCP服务器。家庭使用的无线路由器一般集DHCP服务器于一体

2、DHCP原理

1)模型和功能

DHCP协议采用C/S模型,主机地址的动态分配任务由网络主机驱动。当DHCP-server接收到来自同网络的主机申请地址的信息时,才会向该网络主机发送相关的地址配置等信息,以实现网络主机地址信息的动态配置。DHCP具有以下功能:

  1. 保证任何IP地址在同一时刻只能有一台DHCP-client使用
  2. DHCP应当可以给client分配永久固定的IP地址
  3. DHCP应当可以同用其他方法获得IP地址的主机共存(如手动配置静态IP的主机)
  4. DHCP服务器应当向现有的BOOTP客户端提供服务

2)分配方式

DHCP有三种机制分配IP地址:自动分配动态分配手动分配

  • 自动分配:DHCP-server为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP-server端租用到IP地址后,就可以永久性的使用该地址
  • 动态分配:DHCP-server给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用
  • 手动分配:客户端的IP地址是由网络管理员指定的,DHCP-server只是将指定的IP地址告诉客户端主机

3)消息格式

DHCP消息格式是基于BOOTP(bootstrap protocol)消息格式的。这就要求设备具有BOOTP中继代理功能,并能够支持BOOTP-client和DHCP-server实现交互。BOOTP中继代理的功能就是使得DHCP-server能够跨网段提供服务。

DHCP为应用层协议,DHCP消息被封装在UDP协议中。Client发送DHCP-request给server时,采用UDP 68端口。Server发送DHCP-response给client时,采用UDP 67端口。

dhcp1.png

op:发送方向

  • 1 表示client发送给server
  • 2 表示server发送给client
    htype:硬件类别;1 表示ethernet
    hlen:硬件地址长度;6 表示ethernet
    hops:是否为局域网传送
  • 若在局域网内则为0
  • 若需要经过路由器,则每经过一站加1
    flags:0-15位共16个bits,最左边bit为1表示server将以广播的形式传送消息给client,其余都未使用
    ciaddr:要是client想继续使用之前取得的ip,则列于这里
    yiaddr:从server送回client的dhcp-offer和dhcp-ack消息中,此栏填写分配给client的ip
    siaddr:若client需要透过网络开机,从server发出dhcp-offer、dhcp-ack、dhcp-nack
    giaddr:需要跨网进行dhcp发放,此栏为relay agent的地址,否则为0
    chaddr:client的硬件地址
    sname:server的名称字符串,以0x00结尾
    file:若client需要透过网络开机,此栏将指出开机程序名称,稍后以tftp发送
    options:server把自己的IP放在这个字段中,区别其他字段的server

4)工作流程

dhcp2.png

该图存在错误,有空会进行调整。错误点在于通过中继点后为单播进行,而非广播

offer消息:该消息会有预分配IP地址
decline消息:如果client发现IP被其他client使用,那么会发送decline给server

关于租期:

  1. 如果租期倒计时仅有一半:client单播发送request给server来续租,收到ack后延长租期。如果收到则继续使用该IP
  2. 如果租期倒计时仅有12.5%:client广播发送request给server续租,收到ack后延长租期。没有收到则继续使用该IP。等到租期到期,client发送release给server释放该IP,重新申请新IP

关于多个DHCP-server:Client通常会接受第一个到达的offer,offer中分配的IP不一定是最终分配到的IP,正常server会保留该IP到client正式请求

关于DHCP-relay:如果server和client不在同一个子网,那么就需要dhcp-relay设备。dhcp-relay用于转发dhcp请求和应答消息。dhcp-relay的数据转发与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备不会修改IP包内容。而dhcp-relay接收到dhcp消息后,会生成一个dhcp消息,然后转发出去。因为广播不会出局域网,所以dhcp-relay需要将广播封装成单播才能跨网段传输,所以要求dhcp-relay需要有路由能力。对于client而言,dhcp-relay就是server,而对server而言,dhcp-relay就是client。

二、DHCP最佳实践

1、ubuntu server搭建DHCP服务器

Ubuntu使用isc-dhcp-server来向网络内的其他主机提供DHCP服务。

在虚拟机中勾选掉使用VMware向虚拟机提供DHCP服务

1)安装dhcp-server

1. 安装dhcp-server:apt-get install isc-dhcp-server
2. 查看端口状态(netstat -pantu)、查看服务状态(systemctl status isc-dhcp-server.service)
3. DHCP-SERVER监听网卡:vim /etc/default/isc-dhcp-server && INTERFACES=”ens33”
4. 修改主配置文件,保存退出
5. 重启并查看服务状态

2)修改主配置文件

DHCP-SERVER的主配置文件为/etc/dhcp/dhcpd.conf,主要内容如下:


option domain-name-servers:dns服务器
default-lease-time:租约期限600s
max-lease-time:最大租约期限7200s
authoritative:授权服务器,如果是正确的DHCP服务器的话,将前面的#去掉

#配置地址池(增加内容)
subnet 10.1.8.0 netmask 255.255.255.0 
{
range 10.1.8.100 10.1.8.200;         分发地址范围:10.1.8.100-200
option routers 10.1.8.1;             网关地址
option domain-name-servers 10.1.8.1, 202.106.0.20; 域名服务器地址,多个之间用逗号隔开
option domain-name “yuge.com”;   域名
option ntp-servers  10.1.8.1;        ntp服务器地址
}

#保留地址(增加内容)
host name{
hardware ethernet 00:0c:29:33:e3:b1;   排除主机的MAC地址
fixed-address 10.1.8.8;   排除主机的IP地址
}

保留地址:为服务器/专用计算机保留的IP地址,防止IP地址分配冲突

3)日志文件

isc-dhcp-server的日志文件存在/var/lib/dhcp/dhcpd.leases和/var/log/syslog中:

  • /var/lib/dhcp/dhcpd.leases:服务器地址租约结果
  • /var/log/syslog:系统日志文件

可以使用tail -f 文件来查看,比如tail -f /var/log/syslog

4)客户端操作

获取IP:

  • windows:
    • ipconfig /release #释放IP
    • ipconfig /renew #重新获取IP
  • linux:
    • dhclient -r #释放IP
    • dhclient #重新获取IP
    • less /var/lib/dhclient.leases #查看获取的IP

2、windows server搭建DHCP服务器

windows server搭建DHCP服务器,极为简单,不再赘述

windows server 2016搭建DHCP服务器