Linxu磁盘 centos7安装 springcloud vim复制 firebase linq emacs pygame 多商户商城模板 idea生成main方法 datetimepicker赋值 android常用布局 oracle增加主键 java接收数组 python编译环境 java删除数组元素 java程序实例 java泛型 java当前时间 java获取文件大小 java连接sql java集成开发环境 图解设计模式 maxtoc4d listpreference 复制到剪贴板 fireworks8序列号 x64dbg 羽毛球拍握法 vue引入第三方js dnf95b套 js动态添加元素 facetime要钱吗 winfax 战法装备 igfxpers 手机刷机助手 ps光照效果 苹果8怎么截屏 手机电池容量怎么看
当前位置: 首页 > 学习教程  > 编程语言

RHCE8.0-DHCP服务

2021/2/13 19:15:13 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

概念 DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。 建立条件 1、拥有真实物理…

概念

DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

建立条件

1、拥有真实物理网卡,或者连接广播域的真实物理网卡;
2、该接口或者该物理网卡必须有一个合理的ip地址;
Firstinput firstoutput 先进先出的问题,所以有两台dhcp服务器时使用的是最先用最先配置的dhcp服务器

DHCP有三种机制分配IP地址

自动分配方式(Automatic Allocation)
DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。

动态分配方式(Dynamic Allocation)
DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。

手工分配方式(Manual Allocation)
客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。

工作原理

DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。详细的交互过程如下图。
在这里插入图片描述
(1)客户端:利用广播数据包发送搜索DHCP服务器(dhcp discover)
若客户端网络设置使用DHCP协议取得IP,则当客户端开机或者是重新启动网卡时,客户端主机会发送出查找DHCP服务器的UDP数据包(discover)给所有物理网段内的计算机。因为客户端还不知道自己属于哪一个网络,所以该数据包的来源地址会为0.0.0.0,而目的地址则为255.255.255.255。一般主机接收到这个数据包之后会直接丢弃,若局域网内有DHCP服务器,则会开始后续行为。

(2)服务器端:提供客户端网络相关的租约以供选择。(dhcp offer)
DHCP服务器在监听到客户端发出的dhcp discover广播后,会针对这个客户端的硬件地址( MAC)与本身的设置数据进行下列工作:

到服务器的日志文件中查找该用户之前是否曾经租用过某个IP,若有且该IP目前无人使用,则提供此IP给客户端。
若配置文件针对该MAC地址提供特定的固定IP时,则提供该固定的IP给客户端。
若不符合上述两个条件,则随机选取当前没有被使用的IP参数给客户端,并记录下来。

(3)客户端:决定选择DHCP服务器提供的网络参数租约并向服务器确认。(dhcp request)
由于局域网内可能并非仅有一台DHCP服务器,但客户端仅能接收一组网络参数租约,因此客户端只会挑选其中一个DHCP offer(通常是最先抵达的那个)。当决定好使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境。此外,客户端会发送一个dhcp request广播数据包给所有物理网段内的主机,告知已经接受该服务器的租约(此时若有两台以上的DHCP服务器,则这些没有被接受的服务器会收回该IP租约。)同时,客户端还会向网络发送一个ARP包,查询网络上面有没有其他机器使用该IP地址;如果发现该IP地址已经被占用,客户端则会送出一个DHCPDECLIENT包给DHCP服务器,拒绝接受其DHCP offer,并重新发送DHCP discover信息。

(4)服务器端:记录该次租约行为后并向客户端发送响应数据包信息以确认客户端的使用。(dhcp ack)
当服务器端收到客户端的确认选择后,服务器会回送确认的dhcp ack响应数据包,并且告知客户端这个网络参数租约的期限,并且开始租约计时。那么该次租约何时会到期而被解约,有以下几种情况:

客户端脱机:关闭网络接口、重新启动、关机等行为,都算是脱机状态,这个时候server端就会将该IP地址收回,并放到server的备用区中,以便日后使用。
客户端租约到期:dhcp server端发放的IP有使用的期限,客户端使用这个IP到达期限规定的时间,而且没有重新提出DHCP的申请时,server端就会将该IP收回,这个时候就会断线。但用户也可以向DHCP服务器再次要求分配IP。

由于目前的DHCP客户端程序大多数会主动依据租约时间去重新申请IP,所以即使有租约期限,也不需要在某个时间点手动去重新申请IP。一般情况下,假设租约时间是T小时,那么客户端程序在0.5T时会主动向DHCP服务器发出重新要求网络参数的数据包。如果这次数据包请求没有成功,那么在0.875T后还会再次发送数据包一次。正因如此,所以服务器端会启动port 67监听客户端请求,而客户端会启动port 68主动向服务器请求。

配置案例

准备环境:

关闭vmware dhcp功能:
	方法1:【编辑】-【虚拟网络编辑器】,去掉使用dhcp服务
	方法2:windows服务里面关闭vmware dhcp
		【运行】-services.msc

该实验使用8.1版本

1、挂载光盘
临时挂载
[root@redhat8-2 ~]# mount /dev/sr0 /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
永久挂载
[root@redhat8-2 ~]# vim /etc/fstab +
/dev/sr0 /mnt iso9660 defaults 0 0

2、配置本地yum源
[root@redhat8-2 ~]# vim /etc/yum.repos.d/base.repo
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0

[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0

3、下载dhcp服务包
[root@redhat8-2 ~]# dnf install -y dhcp-server

4、关闭防火墙与selinux

配置文件参数说明说明

全局配置:
1、option domain-name 域名
(如果在/etc/resolv.conf里面设置了一个search xxx.com的话,这表示当你要查找主机名时,DNS系统会主动帮你在所要查找的主机名后加上这个域名后缀)

2、option domain-name-servers IP1、IP2
(这个设置参数可以修改客户端的/etc/resolv.conf文件)

3、default-lease-time 600(默认的租约时间)
(用户的计算机也能够要求一段特定长度的租约时间。但若用户没有特别要求租约时间,默认以此为准。时间单位默认为秒)

4、max-lease-time 400(最大租约时间)
(如果用户要求的租约时间超过该值,则以此值为准)

5、ddns-update-style none(类型)	#作用:定义所支持的DNS动态更新类型。
# none:表示不支持动态更新
# interim:表示DNS互动更新模式
# ad-hoc:表示特殊DNS更新模式
#ddns-update-style { interim | ad-hoe | none };

6、ignore client-updates   # 不允许客户机更新 DNS 记录。
(与上一个设置值有关,客户端可通过dhcp服务器来更新DNS相关的信息。设置成ignore为忽略)


IP分配设置:
#声明网段和掩码
subnet 192.168.40.0 netmask 255.255.255.0 {
   range dynamic-bootp 192.168.40.130 192.168.40.254;  #指定地址池范围
   option routers 192.168.40.1;   #指定网关
   option subnet-mask 255.255.255.0;  #指定掩码
   option domain-name-servers 114.114.114.114;  #指定DNS
   default-lease-time 21600;  #默认租约
   max-lease-time 43200; 	#最大租约
}

案例一:单网段配置

1、下载安装包后编辑配置文件
[root@redhat8-2 ~]# vim /etc/dhcp/dhcpd.conf 
subnet 192.168.16.0 netmask 255.255.255.0 {
  range 192.168.16.10 192.168.16.50;
  option domain-name-servers 114.114.114.114;
  option routers 192.168.16.2;
  default-lease-time 600;
  max-lease-time 7200;
}

2、重启服务
[root@redhat8-2 ~]# systemctl restart dhcpd

3、客户端测试
[root@redhat ~]# dhclient
[root@redhat ~]# ip a
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:78:9a:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.16.10/24 brd 192.168.16.255 scope global secondary dynamic ens160
       valid_lft 656sec preferred_lft 656sec
    inet6 fe80::dd2c:6690:b272:87be/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

案例二:固定IP配置

1、将要固定IP地址的客户端的MAC地址记下

2、编辑服务端的配置文件
host boss {
  hardware ethernet 00:0c:29:78:9a:c4;
  fixed-address 192.168.16.22;
}

3、客户端进行测试
将之前的dhcp进程杀死,重新进行dhcp地址获取
[root@redhat ~]# dhclient
dhclient(8078) is already running - exiting. 

This version of ISC DHCP is based on the release available
on ftp.isc.org. Features have been added and other changes
have been made to the base software release in order to make
it work better with this distribution.

Please report issues with this software via: 
https://bugzilla.redhat.com/

exiting.
[root@redhat ~]# kill -9 8078
[root@redhat ~]# dhclient
[root@redhat ~]# ip a
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:78:9a:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.16.22/24 brd 192.168.16.255 scope global dynamic ens160
       valid_lft 553sec preferred_lft 553sec
    inet6 fe80::dd2c:6690:b272:87be/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

本文链接: http://www.dtmao.cc/news_show_700296.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?