DHCP服务器的作用是2113为客户机分配IP地址。
DHCP方式对上网的用户进行临时的地bai址分配。也就是你的电脑连上du网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关。
DHCP也可用于直接为服务器和桌面计算机分配地址,并且通过一个PPP代理,也可为拨号及宽带主机,以及住宅NAT网关和路由器分配地址。DHCP一般不适用于使用在无边际路由器和DNS服务器上。
internet是目前世界用户最多的服务之一,有几亿人在使用internet。由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的IP地址,不仅造成了IP地址的浪费,也会为ISP服务商来带来高额的维护成本。
减少管理员的工作量避免输入错误的可能避免IP地址冲突当更改IP地址段时,不仅要重新配置每个用户的IP地址提高了IP地址的利用率方便客户端的配置自动分配(Automatic allocation)
手动分配(Manual Allocation)
动态分配(Dynamic Allocation)
自动分配是当DHCP客户端第一次成功的从DHCP服务器获取一个IP地址后,就永久的使用这个IP地址。
手动分配是由DHCP服务器管理员专门指定的IP地址
动态分配是当客户端第一次从DHCP服务器获取到IP地址后,并非永久使用该地址,每次使用完后,DHCP客户端就需要释放这个IP,供其他客户端使用。
第三种是最常见的使用形式。
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
查看租约文件
启动DHCP
查看租约文件 /var/lib/dhcpd/dhcpd.lease
[root@localhost ~]# vim /var/lib/dhcpd/dhcpd.leases 或者 [root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases 或者其他的安装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<UP,BROADCAST,RUNNING,MULTICAST> 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<link> 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<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> 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<UP,BROADCAST,MULTICAST> 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 192.168.138.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查找
配置完成在重启dhcpd服务都是相同的步骤
最后去客户机获取地址就行
感谢观看,不足之处多多指教