DHCP服务提高了IP地址的利用率,方便了管理员对客户机的管理,很实用的一门技术,这里
就详细介绍一下DHCP服务,以及它是如何搭建的。
DHCP(Dypamic HostConfiguration Protocol,动态主机配置协议);是由Internet工作任务
小组设计开发的;专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议;是一个应用层
协议,使用UDP的67和68端口。DHCP功能强大,它提供了安全、可靠且简单的TCP/IP网络设
置,降低了配置IP地址的负担。
典型的c/s模式:在网络中架设一台专用的DHCP服务器,负责集中分配各种网络地址参数;
其他主机作为DHCP客户机,将网卡配置为自动获取地址,即可与DHCP服务器进行通信,完成自
动配置过程。
● 减少管理员的工作量;
● 避免输入错误的可能;
● 避免IP地址冲突;当更改IP地址段时,不需要重新配置每个用户的IP地址;
● 提高了IP地址的利用率;方便客户端的配置。
● 为大量客户机自动分配地址,提供集中管理
● 减轻管理和维护成本、提高网络配置效率
● 自动分配:分配到一个IP地址后永久使用
● 手动分配:由DHCP服务器管理员专门指定IP地址
● 动态分配:使用完后释放该IP,供其他客户机使用
客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程。(华为路由DHCP的原理中
服务器向客户端响应服务时是单播。)分为四个步骤:
租约过程对应的IP地址和使用端口号: |
||||
步骤 |
源IP |
目标IP |
源端口 |
目标端口 |
第一步 |
0.0.0.0 |
255.255.255.255 |
68 |
67 |
第二步 |
dhcp服务器 |
255.255.255.255 |
67 |
68 |
第三步 |
0.0.0.0 |
255.255.255.255 |
68 |
67 |
第四步 |
dhcp服务器 |
255.255.255.255 |
67 |
68 |
当一个DHCP客户机启动时,客户机还没有P地址,所以客户机要通过DHCP获取一个合法的
地址;此时DHCP客户机以广播方式发送 DHCP Discover发现信息来寻找DHCP服务器。
DHCP服务器接收到来自客户机请求IP地址的信息时,在自己的IP地址池中查找是否有合法的
IP地址提供给客户机,如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,
然后广播一则 DHCP Offer消息
DHCP Offer消息:包含网卡IP地址、子网掩码;对应的网络地址、广播地址;dns服务器地址
信息;默认网关地址等信息)。
DHCP客户机从接收到的第一个 DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将
该地址保留,这样该地址就不能再分配给另一个DHCP客户机。
DHCP服务器接收到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确
认,该消息包含有IP地址的有效租约和其他可配置的信息;当客户机收到DHCP ACK消息时,配置
IP地址,完成TCP/IP的初始化。
客户机每次重新登陆网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所
分配的IP地址的DHCP Request请求信息。
当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约;客户机直接向提供
租约的服务器发送DHCP Request包,要求更新现有的地址租约。
CentOS光盘中自带dhcp软件包,DHCP主配置文件为:/etc/dhcpd.conf;执行程序
为:/usr/sbin/dhcpd、/usr/sbin/dhcrelay。
[root@kang ~]# mount /dev/sr0 /mnt #虚拟机中首先连接光盘,然后挂载到/mnt目录
mount: /dev/sr0 写保护,将以只读方式挂载
[root@kang ~]# cd /mnt/Packages/ #转到此目录下
[root@kang Packages]# ls | grep dhcp
dhcp-4.2.5-58.el7.centos.x86_64.rpm #确认我们需要的dhcp包有没有
dhcp-common-4.2.5-58.el7.centos.x86_64.rpm
dhcp-libs-4.2.5-58.el7.centos.x86_64.rpm
[root@kang Packages]# yum install dhcp -y #使用yum工具进行安装
[root@kang Packages]# yum info dhcp #可以查看dhcp详细信息
[root@kang Packages]# rpm -ql dhcp #查看dhcp服务的所有配置信息及man手册
[root@kang Packages]# cd /etc/dhcp/
[root@kang dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
## dhcpd6.conf关于ipv6信息
[root@kang dhcp]# cat dhcpd.conf #查看ipv4的dhcpd.conf文件
# #服务刚安装好,配置文件中是没有内容的,里面说是再see /usr/share/doc/dhcp*/目录下寻找,需要我们手动将模板配置文件拷贝过来。
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example #注意此处*代表任意版本,
# see dhcpd.conf(5) man page
#
[root@kang dhcp]# cd /usr/share/doc/dhcp-4.2.5/ #进入该目录
[root@kang dhcp-4.2.5]# ls
dhcpd6.conf.example dhcpd.conf.example ldap
[root@kang dhcp-4.2.5]# vim dhcpd.conf.example #可进入ipv4详细配置文件
[root@kang dhcp-4.2.5]# cp -p dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
##拷贝模板确认覆盖,将选择的dhcp配置文件覆盖到原/etc/dhcp/目录下
[root@kang dhcp-4.2.5]# cd /etc/dhcp/ #再回到配置文件信息下
[root@kang dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
[root@kang dhcp]# vim dhcpd.conf #查看配置文件内容已经有了
[root@kang dhcp]# cp dhcpd.conf dhcpd.conf.bak #这里我在做一下备份
① 、ddns全局设置、subnet网段声明
一台DHCP服务器可以为多个网段提供服务,因此subnet网段声明可以有多个。特别注意每行
结尾的分号。ddns全局设置,作用于整个DHCP服务器;subnet网段声明,作用于整个子网段。而
且局部设置比全局设置优先级要高。
[root@kang ~]# vim /etc/dhcp/dhcpd.conf #编辑配置文件
……
#ddns-update-style none; #禁用DNS动态更新,提高DHCP的效率,减少宽带的使用,默认是注释的。
……
ddns-update-style interim; #全局配置参数
……
subnet 10.5.5.0 netmask 255.255.255.224 { #声明网段地址
range 10.5.5.26 10.5.5.30; #range参数用于设置地址池
option subnet-mask 255.255.255.0; # option subnet-mask参数用于设置客户机的子网掩码
option domain-name-servers ns1.internal.example.org,ns1.internal.example.org;
##指定DNS服务器地址,多个用逗号隔开。
option domain-name "internal.example.org"; #指定默认搜索域,本地域名
option routers 10.5.5.1; # option routers参数用于指定默认网关地址
option broadcast-address 10.5.5.31; #定义广播地址
default-lease-time 600; #默认租约600秒
max-lease-time 7200; #最大租约2小时,在客户端没有特殊的租约时间请求时,都会统一的指派默认租约时间。如果客户端请求了自定义的租约时间,服务器将会启用最大租约时间作为限制,客户端自己请求的租约时间不能大于该值。
}
②、host声明
host声明用于设置单个主机的网络属性,通常用于为网络打印机或个别服务器分配固定的IP地
址(保留地址),这些主机的共同特点是要求每次获取的IP地址相同,以确保服务器的稳定性。
……
host hostname { #host后面可自定义名称,指定需要分配固定IP地址的客户机名称
hardware ethernet 0:0:c0:5d:bd:95; ## hardware ethernet参数指定对应主机的 MAC地址
filename "vmunix.passacaglia";
server-name "toccata.fugue.com";
fixed-address fantasia.fugue.com; ## fixed-address参数指定为该主机保留地址的IP地址
③、租约文件介绍
在服务器端可以通过查看/var/lib/dhcpd/目录下ipv4的租约文件,来了解服务器的IP地址分配情
况,该租约文件中记录了分配出去的每个IP地址信息(租约记录),包括IP地址、客户端的MAC地
址、租用的起始时间和结束时间等。
该文件初始为空,且不需要管理员手动配置,但可以浏览此文件查看DHCP服务器的运行状
况,文件包含租期声明,每次一个租期被获取,更新或释放,它的新值就被记录到文件的末尾。注
意:该文件时间记录采用GMT时间(格林威治时间),而不是本地时区的时间,查看GMT时间可
以用命令“date -u ”
当企业内部网络规模比较大时,通通过VLAN将网络规划为多个不同的子网。但是在该情况下
一台DHCP服务器无法为不同网段的客户机同时提供服务,因为DECP协议使用广播,而VLAN能
隔离广播。
我们可以为每个网段安装一台DHCP服务器,但这种方式的弊端是:资源浪费与不利于管理;
在连接不同网段的设备上开启DHCP中继功能,将DHCP这种特殊的广播息在VLAN之间转发,让
其他VLAN的客户机也能从DHCP服务器获取IP地址。这就是DHCP中继器。
需求描述:①、实现dhcp服务器( cloud1)自动分配IP地址服务;②、实现各个vlan(10、
20、100)在不同的网段进行通信;③、实现单台机器(win7或win10)IP绑定mac地址。网络架
构如图示:
⑴、设置虚拟机网卡
⑵、在虚拟网络编辑器中选择Vmnet1,将网段设置为192.168.90.0,子网掩码24
⑶、配置服务器网卡
[root@kang ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
UUID=6e9ad9b3-7bbc-4c5e-9aa2-d28d2e0e15d3
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.90.20 #设置服务器的IP地址
NETMASK=255.255.255.0
GATEWAY=192.168.90.254 #设置网关
#DNS1=114.114.114.114
:wq #保存退出
[root@kang ~]# systemctl restart network #重启网卡
⑴、首先、配置cloud1端口,以便我们连接交换机,并启动
⑵、配置sw2,划分vlan
……
[sw2]vlan batch 10 20 100
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw2]int e0/0/1
[sw2-Ethernet0/0/1]port link-type trunk
[sw2-Ethernet0/0/1]port trunk allow-pass vlan all
[sw2-Ethernet0/0/1]int e0/0/2
[sw2-Ethernet0/0/2]p l a
[sw2-Ethernet0/0/2]p d v 10
[sw2-Ethernet0/0/2]int e0/0/3
[sw2-Ethernet0/0/3]p l a
[sw2-Ethernet0/0/3]p d v 20
[sw2-Ethernet0/0/3]int e0/0/4
[sw2-Ethernet0/0/4]p l a
[sw2-Ethernet0/0/4]p d v 100
[sw2-Ethernet0/0/4]int e0/0/5
[sw2-Ethernet0/0/5]p l a
[sw2-Ethernet0/0/5]p d v 100
[sw2-Ethernet0/0/5]
⑶、配置sw1,划分vlan
[sw1]vlan bat 10 20 100
Info: This operation may take a few seconds. Please wait for a moment...done.
[sw1]int vlanif 10
[sw1-Vlanif10]ip add 192.168.1.254 24
[sw1-Vlanif10]int vlanif 20
[sw1-Vlanif20]ip add 192.168.2.254 24
[sw1-Vlanif20]int vlanif 100
[sw1-Vlanif100]ip add 192.168.90.254 24
[sw1-Vlanif100]int g0/0/1
[sw1-GigabitEthernet0/0/1]p l t
[sw1-GigabitEthernet0/0/1]p t a v a
[sw1-GigabitEthernet0/0/1]q
[sw1]
4、重新在服务器端配置dhcp中继
DHCP主配置文件中添加如下命令,保存后重启网卡
[root@kang ~]# vim /etc/dhcp/dhcpd.con
…… #省略部分内容,将以下三段添加进配置
subnet 192.168.90.0 netmask 255.255.255.0 {
range 192.168.90.130 192.168.90.150 ;
option routers 192.168.90.254;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.130 192.168.1.150 ;
option routers 192.168.1.254;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.130 192.168.2.150 ;
option routers 192.168.2.254;
}
……
[root@kang ~]# systemctl restart dhcpd #重启DHCP
5、验证结果①
在同网段的pc3 检查是否分配地址,此处,已然分配地址,并且可以ping通。
6、回到交换机开启中继,
继续配置sw1,开启中继模式,并将每个虚拟接口指向服务器IP地址
[sw1]dhcp enable #开启中继
Info: The operation may take a few seconds. Please wait for a moment.done.
[sw1]int vlanif 10
[sw1-Vlanif10]dhcp select relay #基于中继
[sw1-Vlanif10]dhcp relay server-ip 192.168.90.20 #指定网段
[sw1-Vlanif10]int vlanif 20
[sw1-Vlanif20]dhcp select relay
[sw1-Vlanif20]dhcp relay server-ip 192.168.90.20
[sw1-Vlanif20]int vlanif 100
[sw1-Vlanif100]dhcp select relay
[sw1-Vlanif100]dhcp relay server-ip 192.168.90.20
[sw1-Vlanif100]
7、结果验证①和②
接着在pc1 和pc2 检测,查看发现已经分发IP地址,明显可见成功。需求①和②已经达成。
8、实现IP地址与MAC地址绑定
⑴、win7电脑同上面一样,在设置网络适配器下,选择自定义,vmnet1;这时它同样在90网段。
⑵、Win7网络适配器ipv4点自动获取
⑶、接着我们获取win7的IP地址和MAC地址
⑷、在DHCP服务器端配置文件修改
添加 如下命令:接着刷新dhcp文件
……
host kang {
hardware ethernet 00:0C:29:23:35:E5;
fixed-address 192.168.90.131;
}
……
⑸、这样我们就实现了实现单台机器(win7或win10)IP绑定mac地址。
DHCP工作原理,租约的过程,以及如何配置DHCP中继。