使用DHCP的好处
DHCP的分配方式
1、客户机请求IP地址:发送DHCP discover广播
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
此时DHCP客户机以广播方式发送DHCP discover发现信息来寻找DHCP服务器
因为自己没有IP地址,所以源IP地址为:0.0.0.0
同时也不知道DHCP服务器地址,所以发送广播255.255.255.255
2、服务器响应:
当DHCP服务器接收到来自客户机请求IP地址的信息时,他就在自己的IP地址池中查找是否有合法的IP地址提供给客户机,
如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP offer的消息中,然后DHCP服务器就广播一则DHCP offer消息
DHCP客户机从接收到的第一个DHCP offer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
第一个DHCP offer表示:若局域网中同时存在两个DHCP,- - 那么客户机根据收到DHCP offer的顺序来确定使用哪个DHCP服务器的地址
DHCP服务器接收到DHCP request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的消息
当客户机收到DHCP ACK消息时,他就配置了IP地址,完成TCP/IP的初始化
DHCP客户机每次重新登录网络时,不需要在发送DHCP的discover信息,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息
DHCP服务器收到请求后,检查IP地址资源池
1.发现客户机请求中的IP地址仍旧存在,便发送ACK,将IP地址分配给客户机
2.发现客户机请求中的IP地址已被占用,便返回一个Nack否认信息,然后客户机重新开始请求IP地址的步骤。
6、更新租约
当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约
客户机直接向提供租约的服务器发送DHCP request包,要求更新现有的地址租约
若DHCP服务器宕机,客户机租约到期后,会自动释放地址,然后使用169.254.0.0–169.254.255.255网段的地址
DHCP服务
可分配的地址信息主要包括
DHCP服务器软件
dhcp.conf的内容构成
ddns-update-style interim; '全局配置参数,针对所有子网段'
...省略内容
subnet 10.152.187.0 netmask 255.255.255.0 {'网段声明'
option routers 10.5.5.1; '配置选项,网关'
...
default-lease-time 600; '配置参数,租约'
...
host ns{
...
fixed-address 207.175.42.254; '主机声明,固定的主机地址,(如:网络打印机)基于MAC地址绑定,一定要绑定MAC'
}
}
subnet网段声明,作用于整个子网段
range参数:设置用于分配的IP地址池(地址池定义了可分配地址的范围)
option subnet-mask 参数: 设置客户机的子网掩码
option routers 参数: 设置客户机的默认网关地址
[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;
}
host主机声明,作用于单个主机
启动DHCP服务
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# netstat -anpu | grep ":67"
udp 0 0 0.0.0.0:67 0.0.0.0:* 5684/dhcpd
查看租约文件 /var/lib/dhcpd/dhcpd.lease
[root@localhost ~]# vim /var/lib/dhcpd/dhcpd.leases
或者
[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases
或者其他的
服务器 UDP协议的67端口
客户端 UDP协议68端口
一台CnetOS 7(作为DHCP服务器)
两台windows 10(作为DHCP客户机)
两台都设置成仅主机模式(相当于都绑定在VMnet 1网卡上)
两台win10可以通过DHCP服务器获取到IP地址
将win10 跟 CentOS 7.6 都设置成仅主机模式
1、dhcp固定IP地址
2、安装dhcp包
3、修改配置文件(根据模板复制)
设置subnet{地址池、子网掩码、网关、dns地址}
4、启动服务
客户端:
ipconfig /release
ipconfig /renew
1、配置CnetOS 7
[root@localhost ~]# setenforce 0 '关闭核心防护'
[root@localhost ~]# iptables -F '清空防火墙规则'
[root@localhost ~]# 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-07-05 20:48:40 CST; 2h 5min ago
Docs: man:firewalld(1)
Main PID: 8988 (firewalld)
Tasks: 2
CGroup: /system.slice/firewalld.service
└─8988 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
7月 05 20:48:39 localhost systemd[1]: Starting firewalld - dynamic firewall daemon...
7月 05 20:48:40 localhost systemd[1]: Started firewalld - dynamic firewall daemon.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# systemctl stop firewalld.service '关闭防火墙'
[root@localhost ~]# yum -y install dhcp* '安装所有dhcp相关的软件包'
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.163.com
* extras: mirrors.bfsu.edu.cn
* updates: mirror.bit.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 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-common = 12:4.2.5-68.el7.centos.1,它被软件包 12:dhclient-4.2.5-68.el7.centos.1.x86_64 需要
---> 软件包 dhcp-common.x86_64.12.4.2.5-79.el7.centos 将被 更新
---> 软件包 dhcp-devel.x86_64.12.4.2.5-79.el7.centos 将被 安装
---> 软件包 dhcp-libs.x86_64.12.4.2.5-68.el7.centos.1 将被 升级
---> 软件包 dhcp-libs.x86_64.12.4.2.5-79.el7.centos 将被 更新
--> 正在检查事务
---> 软件包 bind-export-libs.x86_64.32.9.11.4-16.P2.el7_8.6 将被 安装
---> 软件包 dhclient.x86_64.12.4.2.5-68.el7.centos.1 将被 升级
---> 软件包 dhclient.x86_64.12.4.2.5-79.el7.centos 将被 更新
--> 解决依赖关系完成
依赖关系解决
=======================================================================================
Package 架构 版本 源 大小
=======================================================================================
正在安装:
dhcp x86_64 12:4.2.5-79.el7.centos base 515 k
dhcp-devel x86_64 12:4.2.5-79.el7.centos base 108 k
正在更新:
dhcp-common x86_64 12:4.2.5-79.el7.centos base 176 k
dhcp-libs x86_64 12:4.2.5-79.el7.centos base 133 k
为依赖而安装:
bind-export-libs x86_64 32:9.11.4-16.P2.el7_8.6 updates 1.1 M
为依赖而更新:
dhclient x86_64 12:4.2.5-79.el7.centos base 286 k
事务概要
=======================================================================================
安装 2 软件包 (+1 依赖软件包)
升级 2 软件包 (+1 依赖软件包)
总计:2.3 M
总下载量:622 k
Downloading packages:
No Presto metadata available for base
(1/2): dhcp-devel-4.2.5-79.el7.centos.x86_64.rpm | 108 kB 00:00:00
(2/2): dhcp-4.2.5-79.el7.centos.x86_64.rpm | 515 kB 00:00:01
---------------------------------------------------------------------------------------
总计 413 kB/s | 622 kB 00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在更新 : 12:dhcp-libs-4.2.5-79.el7.centos.x86_64 1/9
正在更新 : 12:dhcp-common-4.2.5-79.el7.centos.x86_64 2/9
正在安装 : 32:bind-export-libs-9.11.4-16.P2.el7_8.6.x86_64 3/9
正在更新 : 12:dhclient-4.2.5-79.el7.centos.x86_64 4/9
正在安装 : 12:dhcp-4.2.5-79.el7.centos.x86_64 5/9
正在安装 : 12:dhcp-devel-4.2.5-79.el7.centos.x86_64 6/9
清理 : 12:dhclient-4.2.5-68.el7.centos.1.x86_64 7/9
清理 : 12:dhcp-common-4.2.5-68.el7.centos.1.x86_64 8/9
清理 : 12:dhcp-libs-4.2.5-68.el7.centos.1.x86_64 9/9
验证中 : 12:dhcp-libs-4.2.5-79.el7.centos.x86_64 1/9
验证中 : 12:dhclient-4.2.5-79.el7.centos.x86_64 2/9
验证中 : 12:dhcp-4.2.5-79.el7.centos.x86_64 3/9
验证中 : 12:dhcp-devel-4.2.5-79.el7.centos.x86_64 4/9
验证中 : 32:bind-export-libs-9.11.4-16.P2.el7_8.6.x86_64 5/9
验证中 : 12:dhcp-common-4.2.5-79.el7.centos.x86_64 6/9
验证中 : 12:dhcp-common-4.2.5-68.el7.centos.1.x86_64 7/9
验证中 : 12:dhclient-4.2.5-68.el7.centos.1.x86_64 8/9
验证中 : 12:dhcp-libs-4.2.5-68.el7.centos.1.x86_64 9/9
已安装:
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
完毕!
2、centos 7 和win 10 都设置为仅 主机模式
进入网络编辑器,取消掉使用本地DHCP服务IP地址分配给虚拟机,否则下面做出来还是192.168.100.1,不是自己配置的8.8.8.8
3、修改配置文件
[root@localhost ~]# rpm -q dhcp '查看dhcp安装包是否安装'
dhcp-4.2.5-79.el7.centos.x86_64
[root@localhost ~]# 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@localhost ~]# cd /etc/dhcp '进入/etc/dhcp目录'
[root@localhost dhcp]# ls
dhclient.d dhclient-exit-hooks.d dhcpd6.conf dhcpd.conf scripts
[root@localhost dhcp]# vim dhcpd.conf '进入配置文件修改'
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
'复制这一行:/usr/share/doc/dhcp*/dhcpd.conf.example'
[root@localhost dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf '把/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example文件复制到/etc/dhcp/dhcpd.conf中,覆盖原有文件'
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@localhost dhcp]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 '修改网卡信息'
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPRO=static '原有dhcp改为static'
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=3cae1424-fc31-4f04-874b-e2bb66dfc8c1
DEVICE=ens33
ONBOOT=yes '改为yes'
IPADDR=192.168.100.100 '添加IP地址,子网掩码,网关'
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
':wq保存退出'
[root@localhost dhcp]# service network restart '重启网络服务'
Restarting network (via systemctl): [ 确定 ]
[root@localhost dhcp]# ifconfig '查看网卡信息'
ens33: flags=4163 mtu 1500
inet 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255 '已经修改成功'
inet6 fe80::d80b:cb4a:4fe5:254b prefixlen 64 scopeid 0x20
ether 00:0c:29:f4:24:29 txqueuelen 1000 (Ethernet)
RX packets 548 bytes 678169 (662.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 588 bytes 49787 (48.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf '进入/etc/dhcp/dhcpd.conf配置'
':set nu标注行号'
......
8 option domain-name-servers 8.8.8.8; 'DNS设置为8.8.8.8'
......
27 subnet 192.168.1000 netmask 255.255.255.0 {
28 range 192.168.100.128 192.168.100.200; '插入这两行:配置地址池子网段'
29 option routers 192.168.100.1; '配置网关'
':wq保存退出'
[root@localhost dhcp]# systemctl start dhcpd '启动dhcp服务'
[root@localhost dhcp]# systemctl start dhcpd '启动dhcp服务'
[root@localhost dhcp]# netstat -naup '查看dhcp状态'
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:973 0.0.0.0:* 8859/rpcbind
udp 0 0 0.0.0.0:5353 0.0.0.0:* 8917/avahi-daemon:
udp 0 0 192.168.122.1:53 0.0.0.0:* 9954/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 13316/dhcpd '有这个服务了'
udp 0 0 0.0.0.0:67 0.0.0.0:* 9954/dnsmasq
udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd
udp 0 0 127.0.0.1:323 0.0.0.0:* 8887/chronyd
udp 0 0 0.0.0.0:47906 0.0.0.0:* 8917/avahi-daemon:
udp6 0 0 :::973 :::* 8859/rpcbind
udp6 0 0 :::111 :::* 1/systemd
udp6 0 0 ::1:323 :::* 8887/chronyd
4、启动服务
进入win10虚拟机,改为自动获取网络服务
进入命令提示符页面
pconfig /release释放IP地址
ipconfig /renew 重新获取IP地址
再开一台win7虚拟机
分配到的地址是192.168.100.129
5、下面在子网段配置DNS服务,看子网段优先级与全局配置优先级哪个高
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.128 192.168.100.200;
option routers 192.168.100.1;
option domain-name-servers 9.9.9.9; '插入这一行'
[root@localhost dhcp]# systemctl restart dhcpd '重启dhcp'
进入win10
ipconfig /release
ipconfig /renew
ipconfig /all
此时DNS服务器变成了9.9.9.9
6、固定分配IP地址
进入win 10,复制物理地址:00-0C-29-53-74-FC
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
‘/fixed 查找’
......
host yang { 'host后面名称可以改'
hardware ethernet 00:0C:29:53:74:FC; '粘贴00-0C-29-53-74-FC,并将 - 改为 :'
fixed-address 192.168.100.88; 'fixed-address 后可以改成想给WIN 10 配置的IP地址'
......
':wq 保存退出'
[root@localhost dhcp]# systemctl restart dhcpd '重启dhcpd'
进入win10
ipconfig /release
ipconfig /renew
此时,win 10 获取到的IP地址为192.168.100.88