linux的dhcp服务

  • Post author:
  • Post category:linux




DHCP的概念

DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

DHCP是在BOOTP(引导程序协议BOOTstrap Protocol)基础上发展而来,但BOOTP运行在相对静态(每台主机都有固定的网络连接)的环境中,管理员为每台主机配置专门的BOOTP参数文件,该文件会在相当长的时间内保持不变。DHCP从以下两方面对BOOTP进行了扩展:

DHCP加入了对重新使用的网络地址的动态分配和附加配置选项的功能,可使计算机仅用一个消息就获取它所需要的所有配置信息。

DHCP允许计算机动态地获取IP地址,而不是静态为每台主机指定地址。



DHCP与BOOTP比较

1.BOOTP的发展与特点

在计算机网络发展初期,由于磁盘昂贵,无盘工作站被大量使用,这些没有硬盘的主机通过BOOTROM启动并初始化系统,再通过BOOTP协议由服务器为这些主机设定配置信息。但在早期的BOOTP协议中,设定BOOTP服务器前必须实现获得客户机的硬件地址,而且硬件地址与IP地址时静态绑定的,即使无盘工作站并没有连接到网络,IP地址也不能被其他主机使用。

随着网络的发展,客户端主机发生变动,BOOTP无法提供灵活的重新分配其配置信息的机制。DHCP使用租约的概念解决了BOOTP的固有问题,动态的为客户机提供操作所需的所有信息。

2.DHCP的特点

优点:

1)解决客户端不会配置IP地址的问题

2)解决客户端配置IP地址错误的问题

3)解决客户端配置IP地址冲突的问题

4)解决客户端配置IP地址工作量大的问题

缺点:

1)不能发现其他DHCP分发的IP地址

2)不能发现客户端手动配置的IP地址



DHCP的工作原理

DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文

DHCP 客户从 UDP 端口 68发送 DHCP 发现报文

1.DHCP DISCOVER阶段

DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。由于DHCP客户端不知道DHCP服务器的IP地址,所以DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255),同一网段内所有DHCP服务器或中继都能收到此报文。

2.DHCP OFFER阶段

位于同一网段的DHCP服务器都会接收到DHCP DISCOVER报文,每个DHCP服务器上可能会部署多个地址池,服务器通过地址池来管理可供分配的IP地址等网络参数。服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端。DHCP OFFER报文里面携带了希望分配给指定MAC地址客户端的IP地址及其租期等配置参数。

3.DHCP REQUEST阶段

DHCP客户端接收到DHCP OFFER报文后,以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址。

4.DHCP ACK阶段

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址分配给客户端使用。



DHCP服务器端配置

1.软件的安装

yum install -y dhcp

2.查看软件包安装的文件

rpm -ql dhcp

/etc/dhcp/dhcpd.conf …DHCP服务的配置文件

/var/lib/dhcpd/dhcpd.leases …DHCP服务的租约文件

3.编辑配置文件

vim /etc/dhcp/dhcpd.conf

subnet 10.5.5.0 netmask 255.255.255.224 {

range 10.5.5.26 10.5.5.30;

option domain-name-servers ns1.internal.example.org;

option domain-name “internal.example.org”;

option routers 10.5.5.1;

option broadcast-address 10.5.5.31;

default-lease-time 600;

max-lease-time 7200;

}

subnet:要分发IP地址的网段(自己要能够通信) netmask:要分发IP地址的子网掩码

range:分发IP地址池(在一个subnet下支持多个range) option domain-name-servers:dns服务器

option domain-name:指定搜索域 option routers:分发IP地址的网关 option

broadcast-address:分发的IP地址 default-lease-time:默认租约期

max-lease-time:最大租约期

****每一个参数后面要以分号(;)结束

4.关闭防火墙和selinux

systemctl stop firewalld …临时关闭防火墙关闭selinux

setenforce 0 …临时关闭selinux

5.启动服务

systemctl start dhcpd …启动服务

systemctl enable dhcpd …下次开机自启

6.客户端

要与dhcp服务器在同一个交换环境中重启网卡,并选择自动获取IP地址即可

7.查看租约文件

vim /var/lib/dhcpd/dhcpd.leases

lease 166.112.219.254 {


starts 1 2007/09/17 14:14:18;

ends 1 2007/09/17 20:14:18;

binding state active;

next binding state free;

hardware ethernet 00:0c:29:d9:2e:c9;

}



DHCP服务器端配扩展

vim /etc/dhcp/dhcpd.conf

给服务器分配固定的IP地址

为MAC地址为00:0c:29:d9:2e:b9的主机保留192.168.1.192这个IP地址

host dhcp-client {


hardware ethernet 00:0c:29:d9:2e:b9;

fixed-address 192.168.1.192;

}



DHCP配置

查看DHCP的监听端口

netstat -anplut | grep dhcpd

-a:显示所有的套接字

-n:不反向解析

-p:显示进程号

-l:显示监听端口

-u:显示udp协议

-t:显示tcp协议



版权声明:本文为qq_17576885原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。