码迷,mamicode.com
首页 > 系统相关 > 详细

【Linux】DHCP服务器搭建!

时间:2016-01-17 00:04:15      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:dhcp报文

实验拓扑

系统版本为:CentOS6.5 64位系统

技术分享

实验需求

C1和C2通过DHCP获取IP地址

DHCP服务器为C3单独预留地址


配置步骤

[root@CentOS-3 ~]# mount /dev/cdrom /mnt            //挂载光盘到mnt目录

mount: block device /dev/sr0 is write-protected, mounting read-only

[root@CentOS-3 ~]# rpm -ivh /mnt/Packages/dhcp-4.1.1-38.P1.el6.centos.x86_64.rpm  //安装DHCP服务


DHCP服务器网卡必须要有静态IP地址,本机的地址为:192.168.10.250/24


DHCP的配置文件在/etc/dhcp/dhcp目录下

[root@CentOS-3 ~]# cd /etc/dhcp/dhcpd.conf


由于配置文件没有任何配置内容可以通过cat命令查看配置文件,查看配置模板路径

 

[root@CentOS-3 dhcp]# cat dhcpd.conf

#

# DHCP Server Configuration file.

#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

#   see ‘man 5 dhcpd.conf‘

#

[root@CentOS-3 dhcp]#


通过cp命令将模板复制到当前目录下,覆盖dhcpd.conf文件

[root@CentOS-3 dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample ./dhcpd.conf

cp:是否覆盖"./dhcpd.conf"? yes

[root@CentOS-3 dhcp]#

[root@CentOS-3 dhcp]# cp dhcpd.conf dhcpd.conf.bak   //修改配置前将配置文件做好备份

[root@CentOS-3 dhcp]# grep -v "^#" dhcpd.conf > dhcpd1.conf 

//过滤配置文件中的以“#”开头的注释行并追加到一个新的文件中

[root@CentOS-3 dhcp]# grep -v "^$" dhcpd1.conf > dhcpd2.conf

//将过滤后的文件在过滤一次将空白行过滤掉,在次追加到新的文件中 

[root@CentOS-3 dhcp]# mv dhcpd2.conf dhcpd.conf  //将过滤后的文件改名dhcpd.conf覆盖原有文件

mv:是否覆盖"dhcpd.conf"? yes

[root@CentOS-3 dhcp]#


使用vim编辑器打开的dhcp.conf文件,将文件中多余的范例行删除吊保留一份即可

-----------------------------------修改后的配置文件---------------------------------------


default-lease-time 600;          //最小租约,单位为秒

max-lease-time 7200;            //最大租约

subnet 192.168.10.0 netmask 255.255.255.0 {    //要分配的网段和掩码

  range 192.168.10.100 192.168.10.200;         //分配的地址范围

  option domain-name-servers 1.1.1.1,2.2.2.2;   //DNS服务器地址如果有多个地址用“,”隔开

  option routers 192.168.10.1;                  //默认网关

  option broadcast-address 192.168.10.255;      //广播地址

}

host c3 {                             //host后面为要保留的主机名可随意命名

  hardware ethernet 54:89:98:87:5A:28;    //要保留设备的MAC地址以“:”格式分开

  fixed-address 192.168.10.199;         //要保留主机的IP地址

}


如果想要创建多个地址池,将subnet字段复制粘贴到下面就可以了

------------------------------------------------------------------------------------------


使用service命令启用dhcp服务

 

[root@CentOS-3 dhcp]# service dhcpd start

正在启动 dhcpd:                                           [确定]

[root@CentOS-3 dhcp]#

 

注意:地址池内的地址段必须要有一段和物理网卡在同一网段否则启动不了

-------------------------------------------------------------------------------------------

查看客户端地址


技术分享

技术分享

可以看出客户段所获得的地址全是在地址池范围内的地址

技术分享

C3获取到的地址为我们手动保留的地址
------------------------------------------------------------

DHCP的报文有个4个分别为:

discover  

offer

request

ack


通过抓取bootp报文来查看DHCP的4个报文

技术分享

由上图可以看出DHCP的4个报文为2个单播2个广播而在微软下搭建的DHCP服务器的4个报文却是4个广播报文!

技术分享

通过抓取Discover可以看出,客户机没地址的时候三层的IP地址为“0.0.0.0”

DHCP报文四层的端口号为:服务器67,客户端68

技术分享


技术分享从Request报文中可以看出虽然是个广播报文但客户机已经标识出了自己选择DHCP服务器是谁

技术分享

这个是ACK报文,OFFER报文中就已经给了客户机所有地址信息但是只有收到ACK后这些信息客户机才可以使用。


DHCP的工作原理:

一丶首先客户机发送Discover广播报文,寻找DHCP服务器!

二丶DHCP收到后会发送offer报文回应客户机并分配一个地址给客户机(这个地址客户机还未真正使用),可以理解为服务器在问客户机这个地址你要吗?

三、(如果有多台服务器则客户机只使用收到的第一个地址)客户机收到后会发送Request广播报文去请求这个地址,由于是广播同时也告诉了其它服务器我选择了谁。

四、DHCP服务器收到后回应一个ACK报文,回应客户机说我知道了你就使用这个地址吧!(这个时候客户机才可以使用这个地址)

本文出自 “SunJ” 博客,请务必保留此出处http://sunjie123.blog.51cto.com/1263687/1735629

【Linux】DHCP服务器搭建!

标签:dhcp报文

原文地址:http://sunjie123.blog.51cto.com/1263687/1735629

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!