DHCP服务器的作用是2113为客户机分配IP地址。
DHCP方式对上网的用户进行临时的地bai址分配。也就是你的电脑连上du网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关。
DHCP也可用于直接为服务器和桌面计算机分配地址,并且通过一个PPP代理,也可为拨号及宽带主机,以及住宅NAT网关和路由器分配地址。DHCP一般不适用于使用在无边际路由器和DNS服务器上。
internet是目前世界用户最多的服务之一,有几亿人在使用internet。由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的IP地址,不仅造成了IP地址的浪费,也会为ISP服务商来带来高额的维护成本。
自动分配(Automatic allocation)
手动分配(Manual Allocation)
动态分配(Dynamic Allocation)
自动分配是当DHCP客户端第一次成功的从DHCP服务器获取一个IP地址后,就永久的使用这个IP地址。
手动分配是由DHCP服务器管理员专门指定的IP地址
动态分配是当客户端第一次从DHCP服务器获取到IP地址后,并非永久使用该地址,每次使用完后,DHCP客户端就需要释放这个IP,供其他客户端使用。
第三种是最常见的使用形式。
1:discover 请求ip地址 客户-----> 服务端 广播
2:offer 服务器回应可用ip信息(可用ip,子网掩码,网关,dns,租约期限) 服务器---> 客户机端广播
3:request 客户端请求确认可用ip 客户-----> 服务端 广播
特殊情况:如果offer中的ip被占用 直接回应noack
4:ack 服务端确认ip可用 服务端----> 客户 广播
租约期限 假如8天 租约期限过半 第5天续约
服务器挂了没有DHCP就会获取169.254.0.0/24 有DHCP会自动discover
DHCP客户机从接收到的第一个DHCP offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
第一个DHCP offer表示:若局域网中同时存在两个DHCP,那么客户机根据收到DHCP offer的顺序来确定使用哪个DHCP服务器的地址
客户机发送DHCP request 广播,选择IP地址,并附上租约期限信息(默认8天) 一般是剩余一般的时间就会自动续约
DHCP服务器接收到DHCP request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的消息
当客户机收到DHCP ACK消息时,他就配置了IP地址,完成TCP/IP的初始化
此时服务器发出的仍旧是广播,因为客户机还没有IP地址
DHCP客户机每次重新登录网络时,不需要在发送DHCP的discover信息,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息
DHCP服务器收到请求后,检查IP地址资源池
1.发现客户机请求中的IP地址仍旧存在,便发送ACK,将IP地址分配给客户机
2.发现客户机请求中的IP地址已被占用,便返回一个Nack否认信息,然后客户机重新开始请求IP地址的步骤。
这里补充一点:当DHCP服务器想客户机出租的IP到期限是10天,那么到达5天的时候就要
更新租约,也就是说到达续约的一半时候就要更新租约.
客户机直接向提供租约的服务器发送DHCP request包,要求更新现有的地址租约
若DHCP服务器宕机,客户机租约到期后,会自动释放地址,然后使用169.254.0.0–169.254.255.255网段的地址. 这边169.254.0.0是不能用的.
为大量客户机自动分配地址,提供集中管理
减轻管理和维护成本、提高网络配置效率
网卡IP地址、子网掩码
对应的网络地址、广播地址
默认网关地址
DNS服务器地址
DHCP服务器软件
centos镜像中的dhcp…rpm
dhcp软件包的主要文件
主配置文件:/etc/dhcpd.conf
执行程序:/usr/sbin/dhcpd,/usr/sbin/dhcrelay
执行参数配置:/etc/sysconfig/dhcpd
ddns-update-style none: ##禁用DNS动态更新 不关闭DNC更新 IP会一直变化
default-lease-time 21600; ##默认的租约期限
max-lease-time 43200; ##最大的租约期限
option domain-name"domain.org"; ##域名”domain.ory“
option domain-name-servers 202.106.0.20; ##分配域名:给dns
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
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;
}
查看租约文件
启动DHCP
查看租约文件 /var/lib/dhcpd/dhcpd.lease
[root@localhost ~]# vim /var/lib/dhcpd/dhcpd.leases
或者
[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases
或者其他的
[root@shuai ~]# setenforce 0 ##设置SELinux 成为permissive模式 临时关闭selinux的
[root@shuai ~]# iptables -F ##清空防火墙
[root@shuai ~]# systemctl status firewalld ##查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2020-06-21 21:46:25 CST; 1 weeks 4 days ago
Docs: man:firewalld(1)
Main PID: 8741 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─8741 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
6月 21 21:46:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
6月 21 21:46:25 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
安装DHCP包
[root@shuai ~]# yum install dhcp* -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00
extras | 2.9 kB 00:00
updates | 2.9 kB 00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 dhcp.x86_64.12.4.2.5-79.el7.centos 将被 安装
--> 正在处理依赖关系 libisc-export.so.169()(64bit),它被软件包 12:dhcp-4.2.5-79.el7.centos.x86_64 需要
--> 正在处理依赖关系 libdns-export.so.1102()(64bit),它被软件包 12:dhcp-4.2.5-79.el7.centos.x86_64 需要
---> 软件包 dhcp-common.x86_64.12.4.2.5-68.el7.centos.1 将被 升级
已安装:
dhcp.x86_64 12:4.2.5-79.el7.centos
dhcp-devel.x86_64 12:4.2.5-79.el7.centos
作为依赖被安装:
bind-export-libs.x86_64 32:9.11.4-16.P2.el7_8.6
更新完毕:
dhcp-common.x86_64 12:4.2.5-79.el7.centos
dhcp-libs.x86_64 12:4.2.5-79.el7.centos
作为依赖被升级:
dhclient.x86_64 12:4.2.5-79.el7.centos
完毕!
下一步进行两台主机的网络调配:配成同一个网络模式vmnet1,此时vmnet1相当于交换机
编辑-----虚拟网络首选项
[root@shuai ~]# rpm -q dhcp ##查看dhcp安装
dhcp-4.2.5-79.el7.centos.x86_64
[root@shuai ~]# rpm -qc dhcp ##查看dhcp配置
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@shuai ~]# cd /etc/dhcp ##进入dhcp目录
[root@shuai dhcp]# ll ##查看dhcp列表 发现里面有dhcpd.conf
总用量 8
drwxr-xr-x. 2 root root 37 4月 2 21:29 dhclient.d
drwxr-xr-x. 2 root root 28 7月 3 16:26 dhclient-exit-hooks.d
-rw-r--r--. 1 root root 120 4月 2 21:29 dhcpd6.conf
-rw-r--r--. 1 root root 117 4月 2 21:29 dhcpd.conf
drwxr-x---. 2 root dhcpd 28 7月 3 16:26 scripts
[root@shuai dhcp]# vim dhcpd.conf ###编辑dhcpd.conf
[root@shuai dhcp]#cp /usr/share/doc/dhcp*/dhcpd.conf.example ##这边把*换成”-“tab补全 会跳出 dhcp-4.2.5/ dhcp-common-4.2.5/ dhcp-devel-4.2.5/
[root@shuai dhcp]# cp /usr/share/doc/dhcp-/dhcpd.conf.example
dhcp-4.2.5/ dhcp-common-4.2.5/ dhcp-devel-4.2.5/
[root@shuai dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcd.conf ##复制文件dhcd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes ##这边提示是否覆盖源文件 这边选择”yes“
配置静态网卡
[root@shuai dhcp]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=“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=86503bd2-47b6-4518-8a5f-63e4de03d11e
DEVICE=ens33
ONBOOT=yes ”开启“
IPADDR=192.168.138.100 ##设置IP地址
PREFIX=24##子网掩码
GATEWAY=192.168.138.1 ##设置网关
~ :wq保存退出
[root@shuai dhcp]# service network restart ##配置完重启网卡
Restarting network (via systemctl): [ 确定 ]
[root@shuai dhcp]# ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.138.100 netmask 255.255.255.0 broadcast 192.168.138.255
inet6 fe80::fce1:77f:7a9:b103 prefixlen 64 scopeid 0x20
ether 00:0c:29:84:c1:e3 txqueuelen 1000 (Ethernet)
RX packets 134 bytes 15864 (15.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 353 bytes 34790 (33.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 100220 bytes 8487504 (8.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 100220 bytes 8487504 (8.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099 mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:95:60:04 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
配置dhcp文件
[root@shuai dhcp]# vim /etc/dhcp/dhcpd.conf ##进入dhcp编辑
进去今后 :set nu设置行号
1 # dhcpd.conf
2 #
3 # Sample configuration file for ISC dhcpd
4 #
5
6 # option definitions common to all supported networks...
7 option domain-name "example.org";
8 option domain-name-servers ns1.example.org, ns2.example.org;
####ns1.example.org, ns2.example.org;删除换成8.8.8.8;
8 option domain-name-servers 8.8.8.8; ####分配一个DNS 地址
9
10 default-lease-time 600; ###默认租约
11 max-lease-time 7200; ##最大租约
12
13 # Use this to enble / disable dynamic dns updates globally.
14 #ddns-update-style none;
15
16 # If this DHCP server is the official DHCP server for the local
17 # network, the authoritative directive should be uncommented.
18 #authoritative;
19
20 # Use this to send dhcp log messages to a different log file (you also
21 # have to hack syslog.conf to complete the redirection).
22 log-facility local7;
23
24 # No service will be given on this subnet, but declaring it helps the
25 # DHCP server to understand the network topology.
26
27 subnet 10.152.187.0 netmask 255.255.255.0 { ##这边地址是空的我们给他分配一下
28 }
27 subnet 20.0.0.0 netmask 255.255.255.0 { ##这边配置网段跟子网掩码
28 range 192.168.138.100 192.168.138.200; ##配置地址池 子选项range前面空两格 后面的分号一定不能漏掉 很多小伙伴粗心大意 漏掉就配置起不来
29 option routers 192.168.138.1; ##这边配置网关
:wq保存退出
[root@shuai ~]# systemctl start dhcpd ##重启dhcpd服务
[root@shuai ~]# netstat -nuap ##查看服务相关进程
下一步查看客户端能不能获取
打开客户机网络设置一下自动获取IP地址
已经获取到DHCP的IP
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf ##编辑配置文件
:wq ##保存退出
[root@localhost ~]# systemctl restart dhcpd ##重启dhcpd服务
[root@localhost ~]# netstat -nuap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:5353 0.0.0.0:* 8610/avahi-daemon:
udp 0 0 192.168.122.1:53 0.0.0.0:* 9679/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 18584/dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 9679/dnsmasq
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 0.0.0.0:45311 0.0.0.0:* 8610/avahi-daemon:
udp 0 0 127.0.0.1:323 0.0.0.0:* 8654/chronyd
udp 0 0 0.0.0.0:720 0.0.0.0:* 8602/rpcbind
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 ::1:323 :::* 8654/chronyd
udp6 0 0 :::720 :::* 8602/rpcbind
下一步进入客户机
先释放地址ipconfig /release
然后在获取ipconfig /renew
实验结果当DHCP在全局跟子段地址同时冲突时会首先分配子段的地址
获取服务器的MAC地址
这边我们就直接复制
打开dhcp配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
进入直接/ fix查找
最后去客户机获取地址就行
感谢观看,不足之处多多指教