首页 > 代码库 > Linux网络服务02——DHCP原理与配置

Linux网络服务02——DHCP原理与配置

Linux网络服务02——DHCP原理与配置

DHCP服务概述

1DHCPDynamic Host Configuration Protocol)动态主机配置协议

DHCP是由Internet工作任务小组设计开发的,专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。

使用DHCP可以减少管理员的工作量,避免IP地址冲突,当网络更改IP地址网段时不需要再重新配置每个用户的IP地址,提高了IP地址的利用率,方便客户端的配置。

 

2、可分配的地址信息主要包括:

网卡的IP地址、子网掩码、对应的网络地址、广播地址、默认网关地址、DNS服务器地址等。

 

3DHCP的分配方式

1)自动分配:分配到一个IP地址后永久使用

2)手动分配:由DHCP服务器管理员专门指定IP地址

3)动态分配:使用完后释放该IP,供其他客户机使用

 

4DHCP的租约过程

1)客户机从DHCP服务器获取IP地址的过程称为DHCP的租约过程。

2)租约过程分为四个步骤:

 

1>客户机请求IP(客户机发DHCP Discover广播包)

当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机需要通过DHCP 获取一个合法的地址。此时DHCP客户机以广播方式(因为DHCP服务器的IP地址 对客户机来说是未知的)发送DHCP Discover发现信息来寻找DHCP服务器。广播 信息中包含DHCP客户机的MAC地址和计算机名,以便DHCP服务器确定是哪个客 户机发送的请求

技术分享 

 

2>服务器响应(服务器发DHCP Offer广播包)

DHCP服务器接收到来自客户机请求IP地址的信息时,它就在自己的IP 址池中查找是否有合法的IP地址提供给客户机,如果有,DHCP服务器就会将此IP 地址做上标记,加入到DHCP Offer的消息中,然后DHCP服务器就广播一则包含下 列信息的DHCP Offer消息:DHCP客户机的MAC地址、DHCP服务器提供的合法IP 地址、子网掩码、默认网关、租约的期限、DHCP服务器的IP地址。

技术分享 

3>客户机选择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租约的的请求。

技术分享 

4>服务器确定租约(服务器发DHCP ACK广播包)

DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机 广播成功确认,该消息包括含有IP地址的有效租约和其他可配置的信息。当客户 机收到DHCP ACK消息时,它就配置了IP地址,完成TCP/IP的初始化。

技术分享 

 

3)重新登录

DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息。当DHCP服务器接收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ACK确认信息。

 技术分享

如果此IP地址已无法再分配给原来的DHCP客户机使用(如IP地址已经分配给其他的DHCP客户机使用),DHCP服务器给DHCP客户机回答一个DHCP Nack否认信息。当原来的DHCP客户机接收到此DHCP Nack否认信息后,它就必须重新发送DHCP Discover发现信息来请求信的IP地址。

技术分享 

4)更新租约

DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约。客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约。若此时DHCP服务器无法正常回复DHCP客户机的请求,客户机的此IP地址可以继续使用到最大租约时间的87.5%

 

二、DHCP中继原理

当企业的内部往来规模较大时,通常被划分多个不同的子网,如下图所示。网络内配置了VLANVLAN能隔离广播,而DHCP协议使用广播,也就是说,默认情况下DHCP协议只能在VLAN内部使用。DHCP服务器在VLAN 100中,就只有VLAN 100内的所有客户机能从DHCP服务器那里获取IP地址。如果VLAN 2或者VLAN 3的客户机也需要通这台DHCP服务器来获取IP地址,就需要在三层交换机中开机DHCP中继功能。

 

 技术分享

在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播信息在VLAN之间转发,让其他VLAN的客户机也能从DHCP服务器那里获取IP地址

在三成交换机上配置DHCP中继转发,操作如下:

……

SW-3L(config)#int vlan 2

SW-3L(config-if)#ip add 192.168.2.1 255.255.255.0

SW-3L(config-if)#ip helper-address 192.168.100.100

SW-3L(config-if)#no sh

……

SW-3L(config)#int vlan 3

SW-3L(config-if)#ip add 192.168.3.1 255.255.255.0

SW-3L(config-if)#ip helper-address 192.168.100.100

SW-3L(config-if)#no sh

……

SW-3L(config)#int vlan 100

SW-3L(config-if)#ip add 192.168.100.1 255.255.255.0

SW-3L(config-if)#no sh

……

除了上述在三层交换机中开启DHCP中继功能的方法以外,也可以在每个不同网段安装一台DHCP服务器,但是这种方式存在资源上的浪费,而且不利于集中管理。

二、LinuxDHCP的安装与配置

1DHCP的安装

1)挂载安装光盘

 技术分享

2yum安装光盘中的 dhcp-4.1.1-38.P1.el6.centos.x86_64.rpm(本地yum仓库的建立 此处略,参见第一册Linux系统管理03

 技术分享

 

 

 

2、配置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

 

1)修改配置文件/etc/dhcp/dhcpd.conf

 技术分享

技术分享

技术分享

 

 

保存退出。(注意,此DHCP服务器必须有一个网络设备的IP地址属于所设置的网段)

 

 

 技术分享

 

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

 

 技术分享

技术分享

技术分享

技术分享

 

此处的测试环节,见下文DHCP中继测试,一同进行。

 

LinuxDHCP服务启动失败排错

1、排错思路:

观察日志文件/var/log/messages,找出配置文件错误进行修改。

 

2、示例:

1DHCP服务器的网卡配置中没有与所配置的网段相匹配的IP地址

1>修改DHCP服务器的eth1IP地址,使之与配置服务的2.0网段不符,重启DHCP 服务

 

 技术分享

技术分享

 

2>新建一个ssh会话,观察日志文件

 

 技术分享

3>重现错误,观察日志文件

 技术分享

/var/log/messages新增的内容如下:

Jan 23 16:49:17 www dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1

Jan 23 16:49:17 www dhcpd: Copyright 2004-2010 Internet Systems Consortium.

Jan 23 16:49:17 www dhcpd: All rights reserved.

Jan 23 16:49:17 www dhcpd: For info, please visit https://www.isc.org/software/dhcp/

Jan 23 16:49:17 www dhcpd: Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file

Jan 23 16:49:17 www dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1

Jan 23 16:49:17 www dhcpd: Copyright 2004-2010 Internet Systems Consortium.

Jan 23 16:49:17 www dhcpd: All rights reserved.

Jan 23 16:49:17 www dhcpd: For info, please visit https://www.isc.org/software/dhcp/

Jan 23 16:49:17 www dhcpd: Wrote 0 deleted host decls to leases file.

Jan 23 16:49:17 www dhcpd: Wrote 0 new dynamic host decls to leases file.

Jan 23 16:49:17 www dhcpd: Wrote 0 leases to leases file.

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd: No subnet declaration for eth1 (192.168.1.11).

Jan 23 16:49:17 www dhcpd: ** Ignoring requests on eth1.  If this is not what

Jan 23 16:49:17 www dhcpd:    you want, please write a subnet declaration

Jan 23 16:49:17 www dhcpd:    in your dhcpd.conf file for the network segment

Jan 23 16:49:17 www dhcpd:    to which interface eth1 is attached. **

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd: No subnet declaration for eth0 (192.168.1.108).

Jan 23 16:49:17 www dhcpd: ** Ignoring requests on eth0.  If this is not what

Jan 23 16:49:17 www dhcpd:    you want, please write a subnet declaration

Jan 23 16:49:17 www dhcpd:    in your dhcpd.conf file for the network segment

Jan 23 16:49:17 www dhcpd:    to which interface eth0 is attached. **

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd: Not configured to listen on any interfaces!

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd: This version of ISC DHCP is based on the release available

Jan 23 16:49:17 www dhcpd: on ftp.isc.org.  Features have been added and other changes

Jan 23 16:49:17 www dhcpd: have been made to the base software release in order to make

Jan 23 16:49:17 www dhcpd: it work better with this distribution.

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd: Please report for this software via the CentOS Bugs Database:

Jan 23 16:49:17 www dhcpd:     http://bugs.centos.org/

Jan 23 16:49:17 www dhcpd:

Jan 23 16:49:17 www dhcpd: exiting.

 

 

分析:日志文件中记录在DHCP服务器中的两块网卡均与dhcp.conf配置文件中的 网段不符,导致启动失败。

解决方法:修改任意一块网卡IP地址,或者修改/etc/dhcp/dhcpd.conf配置文件。

 

 

2)配置文件编写错误

1>模拟错误,删除一些字符。

 技术分享

删除第一行第一个字母o”,第四行结尾的“;”。

 

 技术分享

2>启动DHCP服务,观察日志文件

 技术分享

/var/log/messages中新增的内容如下:

Jan 23 17:18:06 www dhcpd: Internet Systems Consortium DHCP Server 4.1.1-P1

Jan 23 17:18:06 www dhcpd: Copyright 2004-2010 Internet Systems Consortium.

Jan 23 17:18:06 www dhcpd: All rights reserved.

Jan 23 17:18:06 www dhcpd: For info, please visit https://www.isc.org/software/dhcp/

Jan 23 17:18:06 www dhcpd: /etc/dhcp/dhcpd.conf line 1: semicolon expected.

Jan 23 17:18:06 www dhcpd: ption domain-name-servers

Jan 23 17:18:06 www dhcpd:        ^

Jan 23 17:18:06 www dhcpd: /etc/dhcp/dhcpd.conf line 6: semicolon expected.

Jan 23 17:18:06 www dhcpd: log-facility

Jan 23 17:18:06 www dhcpd:  ^

Jan 23 17:18:06 www dhcpd: /etc/dhcp/dhcpd.conf line 6: expecting a parameter or declaration

Jan 23 17:18:06 www dhcpd: log-facility local7;

Jan 23 17:18:06 www dhcpd:                     ^

Jan 23 17:18:06 www dhcpd: Configuration file errors encountered -- exiting

Jan 23 17:18:06 www dhcpd:

Jan 23 17:18:06 www dhcpd: This version of ISC DHCP is based on the release available

Jan 23 17:18:06 www dhcpd: on ftp.isc.org.  Features have been added and other changes

Jan 23 17:18:06 www dhcpd: have been made to the base software release in order to make

Jan 23 17:18:06 www dhcpd: it work better with this distribution.

Jan 23 17:18:06 www dhcpd:

Jan 23 17:18:06 www dhcpd: Please report for this software via the CentOS Bugs Database:

Jan 23 17:18:06 www dhcpd:     http://bugs.centos.org/

Jan 23 17:18:06 www dhcpd:

Jan 23 17:18:06 www dhcpd: exiting.

 

分析:line1 line6附近有错误。Configuration file errors encountered -- exiting,配置 文件错误--退出

解决方案:修改配置文件,在日志文件报错行附近多加关注,若差不出哪里出错, 可以与/usr/share/doc/dhcp-4.1.1.1/dhcp.conf.sample进行对比。

 

四、LinuxDHCP中继配置

1、搭建实验环境

1)三台CentOS 6.5 64-bit虚拟机,一台Windows XP虚拟机,配置要求如下:

1>DHCP-ServerDHCP服务器):

eth1192.168.2.254/24 VMnet1

 

2>DHCP-RelayDHCP中继):

eth1192.168.2.10/24VMnet1

eth2192.168.10.1/24VMnet2

eth3192.168.20.1/24VMnet3

eth4192.168.20.1/24VMnet4

3>Linux客户机(用于测试主机声明是否生效):

eth1BOOTPROTO=dhcp VMnet1

4>Windows XP客户机:

网卡设置为自动获取IP地址

 

注意:先关闭虚拟机本身的DHCP服务

技术分享

技术分享 

 

第一步,在DHCP-ServerDHCP服务器)中配置,并启动DHCP服务

 技术分享

技术分享

技术分享

技术分享

第二步,修改DHCP-RelayDHCP中继)网络连接模式

技术分享 

 

【注意】当网卡较多时,此时选择的VMnet与前面所规划的网段不一定是一一对应的,可以选择停用三块网卡,观察剩下唯一一块网卡的IP地址网段,属于规划时的哪个VMnet,将其一一对应。

 

 

第三步,配置DHCP-RelayDHCP中继)网卡IP地址结果为下图,具体过程略

 技术分享

第四步,在DHCP-RelayDHCP中继)上安装dhcp服务,具体安装过程详见前文,此处略。

 

第五步,vi编辑/etc/sysconfig/dhcrelay文件

技术分享 

第六步,关闭防火墙与selinux服务,启动中继服务

技术分享

虚拟机中需增加此步骤:

 

 技术分享

第七步,测试

Linux客户机中测试,之前DHCP服务配置的主机声明中】

[root@www ~]# vi /etc/dhcp/dhcpd.conf

 

 技术分享

技术分享

技术分享

注:dhclient -d 获取IP租约

dhclient -r 释放IP租约

 

 

Windows XP客户机实验】

VMnet234关闭本地DHCP服务

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

技术分享

 

【虚拟机中DHCP中继配置失败的可能原因】

1、虚拟机与真实环境相比,在DHCP中继调试好后需要多用一条命令,dhcrelay DHCP服务器的IP,例如:dhcrelay 192.168.2.254

 

2、虚拟机中添加的网卡顺序,与所选VMnet不一定是一一对应的顺序。所以在实验中若遇到不对应的情况,可以先停用其他网卡,只留下一块,观察剩下网卡的IP地址网段是规划时的VMnet几,将其修改,。以此类推,将所有网卡的IP地址网段与事先规划的VMnet相对应,修改后重启网络服务即可。

Linux网络服务02——DHCP原理与配置