DHCP原理与配置

了解DHCP服务

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

使用DHCP的好处

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

DHCP的分配方式

  • 自动分配

    • 分配到一个IP地址后永久使用
  • 手动分配

    • 由DHCP服务器管理员专门指定IP地址
  • 动态分配

    • 使用完后释放改IP,供其它客户机使用
  • 手动分配
    • 由DHCP服务器管理员专门指定IP地址

DHCP的租约过程

  • 客户机从DHCP服务器获得IP地址的工程称为DHCP的租约过程

  • 租约过程分为4个步骤

    1、客户机请求IP地址 Discover

    • 当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址,此时DHCP客户机一广播方式发送DHCP Discover发现信息来寻找DHCP服务器

    2、响应服务 Offer

    • 当DHCP服务器接收到来自客户机请求IP地址的信息时,它就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,如果有。DHCP服务器就将此IP地址做上标记,加入到DHCP Offer的消息中,然DHCP服务器就广播一则DHCP Offer消息

    3、客户机选择IP地址 Request

    • DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机

    4、服务器确定租约 ACK

    • DHCP服务器接受到DHCP Request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息
  • DHCP客户机每次重新登录网络时,不需要再发送DHCP Discover信息,而是直接发送包含前一次所分配的IP地址的DHCP Request请求信息

  • 更新租约
    • 当DHCP服务器向客户机出租的IP地址租期达到50%是,就需要更新租约
    • 客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约

使用DHCP动态配置主机地址

  • DHCP服务

    为大量客户机自动分配地址,提供集中管理

    减轻管理和维护成本、提高网络配置效率

  • 可分配的地址信息主要包括

    网卡的IP地址、子网掩码

    对应的网络地址、广播地址

    默认网关地址

    DNS服务器地址

  • 安装DHCP服务器
[root@localhost ~]# yum install dhcp -y
  • 主配置文件

    • /etc/dhcp/dhcpd.conf
  • 查看租约文件
    • /var/lib/dhcpd/dhcpd.lease

使用DHCP客户端

  • 修改网卡配置文件

    • BOOTPROTO=dhcp
  • 使用dhclient命令
    • dhclient [-d] [网络接口名]

搭建DHCP中继服务

实验环境:

  • 使用VMware 15 下载链接 许可证密匙UY758-0RXEQ-M81WP-8ZM7Z-Y3HDA
  • c3725路由镜像文件 下载链接
  • 使用GNS3 1.3.1 下载链接 使用方法

  • win 10 镜像 下载链接
  • win 7 镜像 下载链接
  • CentOS 7镜像 下载链接

搭建服务

1、在GNS3中搭建DHCP中继服务的拓扑图,方便我们搭建服务的时候理清思路。在这里我使用一台win 10虚拟机、一台win 7虚拟机、一台CentOS 7虚拟机、两台c3725路由设备。首先添加两台路由设备,并在路由设备上添加磁盘空间方便我们创建vlan,添加2层交换接口,方便我们把路由设备做成一个3层交换设备与一个2层交换设备。添加三台host主机,分别更名为DHC、win 10、win 7,这个时候还需要我们在VMware 15虚拟机设备中添加两块虚拟网卡,设知道仅主机模式,这个时候在重新回到GNS3中使用链接线将设备接起来,这个实验中我们将划分3个vlan,分别将3台虚拟机划分到不同的vlan中(vlan地址划分:vlan10:192.168.10.1/24、vlan20:192.168.20.1/24、vlan100:192.168.100.1/24,给DHCP服务器指定静态IP地址 192.168.100.100。如下图所示:

2、打开VMware 15,开启win 10、win 7、CentOS 7虚拟机,在CentOS 7虚拟机中安装DHCP服务;安装完成后分别给win 10、win 7、CentOS 7虚拟机绑定网卡,win 10绑定VMnet2网卡,win 7绑定VMnet3网卡CentOS 7绑定VMnet1网卡;然会回到CentOS 7中配置静态路由、配置DHCP服务,完成后开启服务,关闭防火墙,关闭增强性安全文件。

[root@localhost ~]# yum install dhcp -y   //安装DHCP服务
已加载插件:fastestmirror, langpacks
base                                                                                | 3.6 kB  00:00:00
extras                                                                              | 3.4 kB  00:00:00
updates                                                                             | 3.4 kB  00:00:00
(1/4): base/7/x86_64/group_gz                                                      | 166 kB  00:00:00
(2/4): base/7/x86_64/primary_db                                                    | 6.0 MB  00:00:01
...//省略部分内容...

[root@localhost ~]# ifconfig  //查看网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500   //此时无法获取IP地址inet6 fe80::a85a:c203:e2e:3f3c  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:5b:d3:a0  txqueuelen 1000  (Ethernet)RX packets 47  bytes 30451 (29.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 122  bytes 13596 (13.2 KiB)...//省略部分内容...
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33  //进入ens33网卡配置文件TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static          //更改dhcp为static配置静态IP地址
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=2ef6b862-5201-48c5-a450-23b3720ab3a0
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.100         //配置IP地址
NETMASK=255.255.255.0          //配置子网掩码
GATEWAY=192.168.100.1          //配置网关
~
~
:wq                             //保存退出
[root@localhost ~]# service network restart          //重新启动网络服务
Restarting network (via systemctl):                        [  确定  ]
[root@localhost ~]# ifconfig                          //查看网卡信息
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  //获取静态IP地址inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255inet6 fe80::a85a:c203:e2e:3f3c  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:5b:d3:a0  txqueuelen 1000  (Ethernet)RX packets 48  bytes 30694 (29.9 KiB)...//省略部分内容...
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf         //进入dhcp服务主配置文件#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example  //显示dhcp配置文件模板位置
#   see dhcpd.conf(5) man page
#
~
...//省略部分内容...
~
:r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  //将dhcpd配置文件模板写入主配置文件
//写入的著配置文件:
#
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
## option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;default-lease-time 600;
max-lease-time 7200;# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.subnet 10.152.187.0 netmask 255.255.255.0 {
}                                                 //主要在此处做出更改# This is a very basic subnet declaration.subnet 10.254.239.0 netmask 255.255.255.224 {range 10.254.239.10 10.254.239.20;option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}//更改后的配置文件信息:
...//省略部分内容...
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.subnet 192.168.100.0 netmask 255.255.255.0 {       //更改IP网段range 192.168.100.100 192.168.100.200;     //可以分配的IP地址范围option routers 192.168.100.1;              //网关信息(注意,每段结束以;结尾)
}                                                  //注意最后的大括号不可删除,否则服务无法开启subnet 192.168.10.0 netmask 255.255.255.0 {range 192.168.10.100 192.168.10.200;    //添加vlan 10网段的地址分配条目option routers 192.168.10.1;
}subnet 192.168.20.0 netmask 255.255.255.0 {range 192.168.20.100 192.168.20.200;    //添加vlan 20网段的地址分配条目option routers 192.168.20.1;
}# This is a very basic subnet declaration.
:wq     //保存退出
//因为我们这边设置了三个vlan,网段都不相同,所以三个网段都要添加[root@localhost ~]# systemctl start dhcpd       //开启dhcp服务
[root@localhost ~]# systemctl status dhcpd      //查看服务是否开启dhcpd.service - DHCPv4 Server DaemonLoaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)Active: active (running) since 三 2019-09-04 22:56:05 CST; 14s ago //服务成功开启Docs: man:dhcpd(8)man:dhcpd.conf(5)Main PID: 5343 (dhcpd)Status: "Dispatching packets..."CGroup: /system.slice/dhcpd.service└─5343 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhc...9月 04 22:56:05 localhost.localdomain dhcpd[5343]: No subnet declaration for virbr....
...//省略部分内容...
9月 04 22:56:05 localhost.localdomain systemd[1]: Started DHCPv4 Server Daemon.
Hint: Some lines were ellipsized, use -l to show in full.

3、DHCP服务开启后我们回到GNS3中,开启添加的3层交换机与2层交换机,并双击进入3层交换设备与2层交换设备,在2层交换设备中配置vlan,并将接入链路分别接入相对应的vlan中,将f1/0接口配置为trunk链路,在3层交换设备中同样设置vlan,然后进入vlan中配置IP地址,并指定IP地址192.168.100.100可以通过vlan在局域网中通信,最后将f1/0接口同样配置为trunk链路。

sw2#conf t                 //在2层交换设备中进入全局模式
Enter configuration commands, one per line.  End with CNTL/Z.
sw2(config)#vlan 10,20,100   //配置vlan10、20、100
sw2(config-vlan)#ex           //退出vlan接口
sw2(config)#do show vlan-sw b //查看vlna是否配置成功VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/3Fa1/4, Fa1/5, Fa1/6, Fa1/7Fa1/8, Fa1/9, Fa1/10, Fa1/11Fa1/12, Fa1/13, Fa1/14, Fa1/15
10   VLAN0010                         active
20   VLAN0020                         active    //配置的vlan
100  VLAN0100                         active
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
sw2(config)#int f1/1       //进入f1/1接口
sw2(config-if)#sw m acc    //进入配置链路
sw2(config-if)#sw acc vlan 100 //将链路接入vlan100
sw2(config-if)#ex          //退出
sw2(config)#int f1/2        //进入f1/2接口
sw2(config-if)#sw m acc      //进入配置链路
sw2(config-if)#sw acc vlan 10  //将链路接入vlan10
sw2(config-if)#ex              //退出
sw2(config)#int f1/3       //进入f1/3接口
sw2(config-if)#sw m acc      //进入配置链路
sw2(config-if)#sw acc vlan 20  //将链路接入vlan20
sw2(config-if)#ex             //退出
sw2(config)#do show vlan-sw b  //查看vlnaVLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/4, Fa1/5, Fa1/6Fa1/7, Fa1/8, Fa1/9, Fa1/10Fa1/11, Fa1/12, Fa1/13, Fa1/14Fa1/15
10   VLAN0010                         active    Fa1/2
20   VLAN0020                         active    Fa1/3      //链路成功接入vlan
100  VLAN0100                         active    Fa1/1
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
sw2(config)#int f1/0           //进入f1/0接口
sw2(config-if)#sw m t          //将接口配置为trunk
sw2(config-if)#sw t en do       //在trunk链路中封装dot1q协议
sw2(config-if)#ex              //退出
sw2(config)#do show int f1/0 switchport  //查看接口是否配置成功
Name: Fa1/0
Switchport: Enabled
Administrative Mode: trunk           //成功配置trunk链路
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: ALL
Trunking VLANs Active: 1,10,20,100
Protected: false
Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none
Appliance trust: none
sw2(config)#no ip routing   //关闭2层交换设备路由功能
sw3(config)#vlan 10,20,100    //在3层交换设备中配置vlan10、20、100
sw3(config-vlan)#ex            //退出
sw3(config)#do show vlan-sw b    //查看vlanVLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/3Fa1/4, Fa1/5, Fa1/6, Fa1/7Fa1/8, Fa1/9, Fa1/10, Fa1/11Fa1/12, Fa1/13, Fa1/14, Fa1/15
10   VLAN0010                         active
20   VLAN0020                         active     //配置成功
100  VLAN0100                         active
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
sw3(config)#int vlan 10                        //进入虚拟接口vlan10
sw3(config-if)#ip add 192.168.10.1 255.255.255.0   //在接口中添加IP地址
sw3(config-if)#ip helper-address 192.168.100.100   //指定IP地址192.168.100.100可通过接口
sw3(config-if)#no shut                            //开启配置
sw3(config-if)#ex                            //退出
sw3(config)#int vlan 20                  //进入虚拟接口vlan20
sw3(config-if)#ip add 192.168.20.1 255.255.255.0   //在接口中添加IP地址
sw3(config-if)#ip helper-address 192.168.100.100  //指定IP地址192.168.100.100可通过接口
sw3(config-if)#no shut                          //开启配置
sw3(config-if)#ex                            //退出
sw3(config)#int vlan 100               //进入虚拟接口vlan100
sw3(config-if)#ip add 192.168.100.1 255.255.255.0 //在接口中添加IP地址
sw3(config-if)#ip helper-address 192.168.100.100   //指定IP地址192.168.100.100可通过接口
sw3(config-if)#no shut                           //开启配置
sw3(config-if)#ex                      //退出
sw3(config)#int f1/0              //进入f1/0 接口
sw3(config-if)#sw m t            //配置为trunk链路
*Mar  1 00:22:18.607: %DTP-5-TRUNKPORTON: Port Fa1/0 has become dot1q trunk
*Mar  1 00:22:19.111: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up
*Mar  1 00:22:19.119: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan20, changed state to up
*Mar  1 00:22:19.127: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan100, changed state to up
sw3(config-if)#sw t en do    //封装协议
sw3(config-if)#ex             //突出
sw3(config)#do show int f1/0 switchport  //查看trunk是否配置成功
Name: Fa1/0
Switchport: Enabled
Administrative Mode: trunk      //成功配置trunk链路
Operational Mode: trunk
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Negotiation of Trunking: Disabled
Access Mode VLAN: 0 ((Inactive))
Trunking Native Mode VLAN: 1 (default)
Trunking VLANs Enabled: ALL
Trunking VLANs Active: 1,10,20,100
Protected: false
Priority for untagged frames: 0
Override vlan tag priority: FALSE
Voice VLAN: none
Appliance trust: none
sw3(config)#do show ip int b     //查看IP地址是否配入vlan,是否开启
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down
FastEthernet0/1            unassigned      YES unset  administratively down down
FastEthernet1/0            unassigned      YES unset  up                    up
FastEthernet1/1            unassigned      YES unset  up                    down
...//省略部分内容...
FastEthernet1/14           unassigned      YES unset  up                    down
FastEthernet1/15           unassigned      YES unset  up                    down
Vlan1                      unassigned      YES unset  up                    up
Vlan10                     192.168.10.1    YES manual up                    up
Vlan20                     192.168.20.1    YES manual up                    up
Vlan100                    192.168.100.1   YES manual up                    up
//成功配入,并开启

4、完成配置后我们来查看虚拟机客户端win 10、win 7是否自动获取IP地址

5、下面我们来给win 10 客户机指定固定的IP地址,首先在win 10客户机中获取win 10客户机网卡的MAC地址,然后会的CentOS 7系统中进入DHCP配置文件中进行设置

CentOS 7中DHCP的介绍与搭建DHCP中继服务(理论+实践)相关推荐

  1. centos7启动dhcp失败_CentOs 7 搭建DHCP服务器 启动报错

    本人是刚学习Linux的菜鸟,这是我的第一篇博文,不专业的地方还请各位原谅.随手几笔把自己遇到的问题及解决办法贴出来,大家互相学习,大神们要是有更好的方法还望不吝赐教. 正文:CentOS 7搭建DH ...

  2. Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务

    1. 背景 不知不觉来到流媒体部门已经一年半多了,也算积攒了不少的流媒体知识,平时工作比较忙,到没有对流媒体技术进行系统性的梳理:最近刚完成一个Git实用指南的技术专栏,放松一周之后,觉得还是得让自己 ...

  3. 搭建DHCP服务实现动态分配IP地址-NTP网络同步时间

    一. DHCP服务概述 1. DHCP的介绍 名称:DHCP (Dynamic Host Configuration Protocol)动态主机配置协议. 功能:DHCP(Dynamic Host C ...

  4. 服务器搭建和使用 ubuntu_Ubuntu中使用Nginx+rtmp搭建流媒体直播服务

    一.背景 本篇文章是继上一篇文章<Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务>文章而写,在上一篇文章中我们搭建了一个点播服务器,在此基础上我们再搭建一个直播服务器, ...

  5. redhat linux 7 ntp,技术|RHCE 系列(十):在 RHEL/CentOS 7 中设置 NTP(网络时间协议)服务器...

    网络时间协议 - NTP - 是运行在传输层 123 号端口的 UDP 协议,它允许计算机通过网络同步准确时间.随着时间的流逝,计算机内部时间会出现漂移,这会导致时间不一致问题,尤其是对于服务器和客户 ...

  6. 商城项目02_环境搭建、安装VAGRANT、DOCKER、MYSQL、REDIS、从0搭建各个微服务项目、数据库初始化、安装NGINX

    文章目录 ①. virtualBox - 管理虚拟机 ②. vagrant - 安装虚拟机 ③. 虚拟机安装 - docker ④. docker上安装mysql ⑤. docker上安装redis ...

  7. Linux / CentOs 7搭建DHCP服务

    在前面介绍了怎么在Windows server 2016中搭建DHCP服务, 我们今天介绍如何在Linux / CentOS 7操作系统中搭建DHCP服务? 跟在Windows server 2016 ...

  8. CentOS系统中如何搭建NTP时间服务器(时间同步)

    CentOS系统中如何搭建NTP时间服务器(时间同步) CentOS系统中如何搭建NTP时间服务器(时间同步) 本文由:安徽京准公司提供,转载需通过授权@ 网络时间协议(NTP)用来同步网络上不同主机 ...

  9. linux搭建虚拟化平台报告,CentOS 7中搭建KVM虚拟化平台的方法步骤

    什么是虚拟化 虚拟化就是把硬件资源从物理方式转变为逻辑方式,打破原有物理结构,使用户可以灵活管理这些资源,并且允许1台物理机上同时运行多个操作系统,以实现资源利用率最大化和灵活管理的一项技术. 虚拟化 ...

最新文章

  1. Jquery各版本下载,附Jquery官网下载方法
  2. python中的散点图代码-python – 带有图例的matplotlib散点图
  3. ElasticSearch 2 (21) - 语言处理系列之单词识别
  4. vue 只在父级容器移动_Vue易遗忘的基础复习(二)
  5. 代码实现:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。...
  6. html代码高亮带行号,kindeditor代码高亮自动行号功能
  7. ACM 竞赛高校联盟 练习赛 第六场 韩梅梅的抽象画(图论水题)
  8. Linux命令之cut详解
  9. 编译原理---NFA转化为DFA---DFA最小化(自己看)
  10. TF-IDF算法的介绍
  11. 拉普拉斯变换的本质意义
  12. 【学习笔记】状态机编程
  13. 2017年深度学习语义分割导读
  14. 杨辉三角c语言实验收获体会,实验感想与心得体会简短
  15. es6 7 8 9 10特性归纳
  16. on1 photo raw 2020中文版(RAW图像处理) v14.5.1.9231绿色便携版
  17. 互联网金融监管意见将出台
  18. 从 Chrome 源码看浏览器如何计算 CSS
  19. kibana监控logstash
  20. C语言实现获取文件后缀、修改后缀

热门文章

  1. 使用mybatis-plus时,报错500
  2. js实现判断输入内容是否为数字
  3. 【181007】VC++ 打飞机游戏源码
  4. OK资本周子涵:区块链的成果是“熬”出来的
  5. rmi反序列化导致rce漏洞修复_RMI反序列化漏洞分析
  6. Jmeter入门实战(二)如何使用Jmeter的BeanShell断言,把响应数据中的JSON跟数据库中的记录对比
  7. Python去除列表中元素的前后空格和换行
  8. PY_matplotlib
  9. python—二次规划求解
  10. 剪贴板操作 Clipboard API 使用教程