Internet的用户数量众多,所以不可能给每个用户固定一个IP地址,同时也为了避免浪费,我们使用DHCP服务来解决这个问题。具有以下好处:
减少管理员的工作量
避免IP地址冲突
当网络更改IP地址段时,不需要再重新配置每个用户的IP地址
提高了IP地址的利用率
方便客户端的配置
DHCP的典型应用模式
在网络中假设一台专用的DHCP服务器,负责集中分配各种网络地址参数(主要包括IP地址,子网掩码,广播地址,默认网关地址,DNS服务器地址)
其他主机作为DHCP客户机,将网卡配置为自动获取地址,即可与DHCP服务器进行通信,完成自动配置过程
这就产生了三种分配方式:自动分配,手动分配,动态分配
分配到一个IP地址后永久使用
当DHCP客户机第一次成功的从DHCP服务器获取到一个IP地址后,就永久的使用这个IP地址
例如:局域网中的打印机,局域网中的座机
IP地址的获取和释放的命令
Windows 获取IP地址命令: ipconfig /renew
释放IP地址命令: ipconfig /release
查看所有IP地址信息:ipconfig /all
Linux 获取IP地址命令: ifconfig /renew
discover:请求IP地址,客户端在网络中发送discover广播,以此来搜索DHCP服务器
offer:服务器回应可用IP信息(可用IP地址、子网掩码、网关、DNS、租约期限),DHCP服务器接收到广播后,因不知道客户端的IP地址,所以同样以广播的形式将offer发送,来响应主机
request:客户机请求确认可用IP,客户机收到offer后,开始发出request广播
ack:服务器确认IP可用,DHCP收到广播后,依旧不知道客户机IP地址,发送回复request的ACK确认广播
特殊情况:如果offer阶段中的IP被先占用,直接会回应noack,客户机又会回到discover阶段。
当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
此时DHCP客户机以广播方式发送DHCP discover发现信息来寻找DHCP服务器
因为自己没有IP地址,所以源IP地址为:0.0.0.0
同时也不知道DHCP服务器地址,所以发送广播255.255.255.255
发现客户机请求中的IP地址仍旧存在,便发送ACK,将IP地址分配给客户机
发现客户机请求中的IP地址已被占用,便返回一个Nack否认信息,然后客户机重新开始请求IP地址的步骤。
ddns-update-style interim; '全局配置参数,针对所有子网段'
...省略内容
subnet 10.152.187.0 netmask 255.255.255.0 {'网段声明'
option routers 10.5.5.1; '配置选项,网关'
...
default-lease-time 600; '配置参数,租约,单位S'
...
host ns{
...
fixed-address 207.175.42.254; '主机声明,固定的主机地址'
}
}
配置 | 解释 |
---|---|
ddns-update-style none; | 禁止dns动态更新 |
default-lease-time 21600; | 默认租约期限 |
max-lease-time 43200; | 最大租约期限 |
option domain-name"domain.org"; | 指定域名 |
option domain-name-servers 202.106.0.20; | 指定分配dns地址 |
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.4.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.4.128 192.168.4.131;
option broadcast-address 255.255.255.0;
option routers 192.168.4.1;
}
host prtsvr {
hardware ethernet 00:c0:c3:22:46:81;
fixed-address 192.168.4.100;
}
[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
[root@localhost ~]# vim /var/lib/dhcpd/dhcpd.leases
或者
[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases
或者其他的
[ root@localhost ~]# less Ivar/lib/dhcpd/dhcpd.leases
lease 192.168.4.131 { 分配的客户端IP
starts 4 2017/05/11 17:27:15;
ends 4 2017/05/11 23:27:15; 租期时间
cltt 4 2017/05/11 17:27:15;
binding state active;
hardware ethernet 00:0c:29:3b:ff:76; 客户端MAC地址
}
[root@localhost dhcpd]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
...省略内容
命令基本格式
dhclient [-d] [网络接口名]
例如
[root@localhost ~]# dhclient -d ens33
[root@localhost dhcpd]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
...省略内容
1.客户机通过DHCP获取IP地址
2.比较子网段优先级与全局优先级
3.配置指定IP地址
两台虚拟机,一台centos7作为DHCP服务器,一台windows7作为客户机
[root@localhost ~]# setenforce 0 关闭核心防护
[root@localhost ~]# iptables -F 清空防火墙规则
[root@localhost ~]# systemctl status firewalld.service 查看防火墙状态信息
[root@localhost ~]# systemctl stop firewalld.service 关闭防火墙
[root@localhost ~]# systemctl status firewalld.service
[root@localhost ~]# yum -y install dhcp* 安装dhcp相关软件包
[root@localhost ~]# rpm -q dhcp 查看dhcp安装
[root@localhost ~]# rpm -qc dhcp 查看dhcp配置文件
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 修改dhcp配置文件发现里面有个引导dhcp模板
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# service network restart 重启网卡
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
按照指引的路径将dhcp模板复制到dhcp配置文件中,注意的是*改为下载的版本
[root@localhost ~]# netstat -nuap
[root@localhost ~]# systemctl start dhcpd 开启dhcp服务
[root@localhost ~]# netstat -nuap
1.在配置文件时,注意;的使用。
2.当子网段的地址与全局地址相冲突时,子网段的优先级比全局的优先级高,客户机会先选择子网段中的
3.在使用虚拟机时,注意将虚拟网路编辑器中的自动获取DHCP的勾选取消掉