首页 > 其他分享 >搭建DHCP服务,实现自动分配地址

搭建DHCP服务,实现自动分配地址

时间:2022-11-04 17:10:00浏览次数:72  
标签:option 客户机 地址 服务器 dhcpd IP地址 DHCP 搭建


DHCP实现原理


DHCP定义


DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作。它是一种流行的Client/Server协议,一般用于为主机或者为路由器等指定相关的配置信息。DHCP服务在企业和家庭中得到了大量的应用,它能够自动分配ip地址以及一些其他的相关信息,整个过程对客户透明。


DHCP分配方式


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

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

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


DHCP工作过程

DHCP客户机在启动时,会搜寻网络中是否存在DHCP服务器。如果找到,则给DHCP服务器发送一个请求。DHCP服务器接到请求后,为DHCP客户机选择TCP/IP配置的参数,并把这些参数发送给客户端。如果已配置冲突检测设置,则DHCP服务器在将租约中的地址提供给客户机之前会使用Ping测试作用域中每个可用地址的连通性。这可确保提供给客户的每个IP地址都没有被使用手动TCP/IP配置的另一台非DHCP计算机使用。


根据客户端是否第一次登录网络,DHCP的工作形式会有所不同。


初次登录

搭建DHCP服务,实现自动分配地址_ip地址


初次登录时DHCP工作包括四个步骤


1、寻找DHCP服务器

当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。

2、分配IP地址

在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,并向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。

3、接受IP地址

DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

4、IP地址分配确认

当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。


重新登录

以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

搭建DHCP服务,实现自动分配地址_服务器_02

1、如果客户端DHCP request 内的IP地址在服务器端没有被使用,DHCP服务器回复DHCP ACK继续使用IP。

2、如果客户端DHCP request 内的IP地址在服务器端已被使用,DHCP服务器回复DHCP NACK告诉客户端IP已被使用。

3、回复NACK后,重新开始DHCP初次登录时的流程


更新租约

DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限到达租约的50%时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。




在CentOS7上安装DHCP软件包


[root@jhr-hub ~]# yum -y install dhcp








[root@jhr-hub ~]# cat /etc/dhcp/dhcpd
dhcpd6.conf dhcpd.conf
[root@jhr-hub ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
[root@jhr-hub ~]#








[root@jhr-hub ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@jhr-hub ~]#


修改DHCP的配置文件


[root@jhr-hub ~]# vim /etc/dhcp/dhcpd.conf
[root@jhr-hub ~]#
[root@jhr-hub ~]#
[root@jhr-hub ~]#
[root@jhr-hub ~]# cat /etc/dhcp/dhcpd.conf
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#




# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 3.7.191.1;




#设置当前的IP地址有效期,单位s
default-lease-time 60;




#设置申请最大有效期
max-lease-time 60;












# 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.




#声明IP地址段和子网掩码




subnet 3.7.191.0 netmask 255.255.255.0 {
#地址池:设置一个地址段
range 3.7.191.241 3.7.191.247;
#指定网关
option routers 3.7.191.1;
#获取DNS
option domain-name-servers 3.7.191.1;
}




# 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;
}




# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.




subnet 10.254.239.32 netmask 255.255.255.224 {
range dynamic-bootp 10.254.239.40 10.254.239.60;
option broadcast-address 10.254.239.31;
option routers rtr-239-32-1.example.org;
}




# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}




# Hosts which require special configuration options can be listed in
# host statements. If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.




host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia";
server-name "toccata.fugue.com";
}




# Fixed IP addresses can also be specified for hosts. These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP. Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
host fantasia {
hardware ethernet 08:00:07:26:c0:a5;
fixed-address fantasia.fugue.com;
}




# You can declare a class of clients and then do address allocation
# based on that. The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.




class "foo" {
match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}




shared-network 224-29 {
subnet 10.17.224.0 netmask 255.255.255.0 {
option routers rtr-224.example.org;
}
subnet 10.0.29.0 netmask 255.255.255.0 {
option routers rtr-29.example.org;
}
pool {
allow members of "foo";
range 10.17.224.10 10.17.224.250;
}
pool {
deny members of "foo";
range 10.0.29.10 10.0.29.230;
}
}
[root@jhr-hub ~]#


启动服务


[root@jhr-hub ~]# systemctl start dhcpd
[root@jhr-hub ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2021-12-09 11:25:37 CST; 2s ago
Docs: man:dhcpd(8)
man:dhcpd.conf(5)
Main PID: 142669 (dhcpd)
Status: "Dispatching packets..."
Memory: 5.0M
CGroup: /system.slice/dhcpd.service
└─142669 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid


搭建DHCP服务,实现自动分配地址_ip地址_03



标签:option,客户机,地址,服务器,dhcpd,IP地址,DHCP,搭建
From: https://blog.51cto.com/u_12212643/5823960

相关文章

  • 内网搭建DNS服务器
    DNS:DomainNameService,域名解析服务监听端口:udp/53,tcp/53应用程序:bind根域:.一级域:组织域:.com,.org,.net,.mil,.edu,.gov,.info,.cc,.me,.tv国家域:.cn,.us,.uk,......
  • KubeSphere 高可用集群搭建并启用所有插件
    介绍大多数情况下,单主节点集群大致足以供开发和测试环境使用。但是,对于生产环境,您需要考虑集群的高可用性。如果关键组件(例如kube-apiserver、kube-scheduler和kube-cont......
  • HaProxy 安装搭建配置
    HaProxy简介    HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。    HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。H......
  • 使用阿里镜像地址下载jar包
    一、在D:\maven\apache-maven-3.8.6\conf\settigs.xml中修改地址<mirror><id>alimaven</id><name>aliyunmaven</name><url>http://mave......
  • WINDWOS环境下VSCODE开发LINUX的环境搭建
    1、将linux源码中的/usr/include文件夹复制到windows的桌面2、新建一个linux的文件夹,把上述文件夹复制到linux文件夹里3、将linux文件夹放置到C:/ProgramFiles/Microsof......
  • 后端注册接口搭建
    逻辑导航1.先写一个序列化类,该类中返回需要序列化的字段和反序列化的字段2.只序列化的字段采用read_only,只反序列化的用write_only3.序列化类继承模型序列化器,但是需要......
  • 手把手教你搭建消防安全答题小程序-首页
    火灾事故重预防,无灾避难得安康。本月是“119”消防月,请大家注意用火用气用电安全,共同做好单位、家庭消防安全工作。接下来,就让我手把手教你搭建消防安全答题小程序吧。软......
  • LogDashboard 搭建网页日志面板
    Net中很多日志框架都是记录在文件或者数据库中。很不方面查看。这篇博客主要描述日志在线查看,直接在网站Url中查看。技术上主要用到Serilog+LogDashboard包。安装NetGet......
  • 尚硅谷k8s(五):搭建k8s集群—平台规划和部署方式介绍
    搭建k8s环境平台规划单master集群多master集群服务器硬件配置要求测试环境:master2核4G20Gnode4核8G40G生产环境:更高要求搭建k8s集群部署方式目前生产部署Kubernetes......
  • nginx反向代理,实现地址栏域名不变,session不失效
    首先找到nginx.conf部分server{listen80;server_namewww.taekwondo-china.com;location/{#所有以/开头的地址,实际上就是所有请求p......