DHCP
:表示Dynamic Host Configuration Protocol
,其前身是bootp
,DHCP
基于bootp
来说引入了租约的概念,当使用IP
的主机关机之后,那么IP
地址就会被释放,并且在租约的概念上面还引入了续租的概念实现了地址的动态管理;- 租约的续租是在使用时间接近于一半的时间时进行续租,
DHCP
的报文是通过广播的方式进行的,由于路由器不转发广播报文,所以DHCP
服务器应该在局域网里面进行设置; DHCP
协议的流程
client ------> DHCP服务器
DHCPDISCOVR(UDP,广播)
<---------- DHCPOFFER
DHCPREQUEST ----------->
<----------- DHCPACK
上面的报文都是广播的
续租的过程是单播的
DHCPREQUEST ----------->
<----------- DHCPACK
- 前面的虽然说路由器不进行广播报文,所以
DHCP
服务器不能够提供跨物理网络的地址分配请求,但是可以将路由器配置称为DHCP
的中继器,单播转发跨网络的DHCP
报文,在这个过程中:
- 1
.DHCP
和路由器的通信是单播的,请求主机和路由器的通信是广播的; - 2.
DHCP
提供的地址池,必须和IP
在统一网段中; - 3.一个
DHCP
主机可以包含多地址池,在DHCP
服务器转发非同一个网络的请求时,会通过路由器的某个接口的MAC地址进行转发,DHCP
服务器可以根据MAC
的信息选择一个合适的网段的IP
进行分配;
- 1
- 对于
DHCP
服务器来说,大多数情况下,分配的地址对于某个特定的服务器来说是特定的,这些地址成为保留地址.保留地址不使用地址池的地址,通过MAC
地址来进行识别; rhel6
系列上面提供了DHCP RELAY
功能,这个功能和DHCP
服务器不能够同时使用规划
子网的范围是172.25.23.10–>172.25.23.100/24
默认的网关是:172.25.23.250
广播地址是:172.25.23.255
规划保留地址是:172.25.23.222配置DHCP服务器
- 先说明以下这些配置文件都是什么意思
/var/lib/dhcpd/dhcpd.leases
:表示租约,用于记录哪个地址给哪个主机使用;/etc/dhcp/dhcpd.conf
:DHCP
的主配置文件;/usr/sbin/dhcpd
:用于提供主服务的程序;/usr/sbin/dhcrelay
:表示DHCP
的中继功能,不能够和DHCP
同时使用;/etc/dhcp/dhcpd.conf
:DHCP
的主配置文件;
主配置文件
/etc/dhcp/dhcpd.conf
里面的语法说明:#ddns-update-style none
:动态DNS
的更新方式,DNS
和主机名称的对应关系随着DHCP
的分配而改变,这个用于DHCP
通知DNS
进行对应关系的更改;subnet
:表示子网;routers
:表示默认的网关的;domain-name-servers
:表示DNS
服务器的地址;range
:表示地址池范围;default-lease-time
:表示默认的租约时间;max-lease-time
:表示最大租约时间;
用于定义保留地址的说明
host passacaglia {
hardware ethernet 0:0:c0:5d:bd:95;
filename "vmunix.passacaglia";
server-name "toccata.fugue.com";
}
- DHCP服务器的配置
DHCP
服务器的安装,这里使用rpm
软件包进行安装
[root@server23 ~]# yum install dhcp -y
- 对于配置文件,默认提供的是一个空的配置文件,需要从特定位置进行复制
[root@server23 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
- 接下来需要按照规划来更改配置文件
subnet 172.25.23.0 netmask 255.255.255.0 {
range 172.25.23.10 172.25.23.100;
option routers 172.25.23.250;
option broadcast-address 172.25.23.255;
default-lease-time 600;
max-lease-time 7200;
}
- 上面的配置信息是没有包含保留地址的配置的,接下来启动
DHCPD
服务
[root@server23 ~]# service dhcpd start
Starting dhcpd: [ OK ]
- 查看服务监听的端口
[root@server23 ~]# netstat -anulp
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:67 0.0.0.0:* 2767/dhcpd
- 这里需要额外说明的是
DHCPD
服务器监听的是UDP/67
端口,而client
监听的是UDP/68
端口; - 接下来需要另一台虚拟机来检测服务的配置是否正常
- 首先需要更改的是
IP
的获得方式,一般情况下,默认是DHCP
,如果以前修改为static
,现在改为DHCP
; - 然后从新启动网络服务
* 接下来查看DHCP client
是否打开UDP/68
端口
* 也可以通过租约文件来查看IP
地址的分配情况
[root@server23 ~]# cat /var/lib/dhcpd/dhcpd.leases
lease 172.25.23.10 {
starts 1 2018/04/09 11:46:09;
ends 1 2018/04/09 11:56:09;
cltt 1 2018/04/09 11:46:09;
binding state active;
next binding state free;
hardware ethernet 52:54:00:e7:89:57;
}
- 如果分配出去额地址很多,那么这个租约文件里面的内容会十分多;
- 接下来更改配置文件,使分配到
172.25.23.10
的主机重新分配IP
地址,得到172.25.23.222
这个地址
更改配置文件如下:
subnet 172.25.23.0 netmask 255.255.255.0 {
range 172.25.23.10 172.25.23.100;
option routers 172.25.23.250;
option broadcast-address 172.25.23.255;
default-lease-time 600;
max-lease-time 7200;
host newhost {
hardware ethernet 52:54:00:e7:89:57; //这个地址需要和你需要保留的地址一致;
fixed-address 172.25.23.222;
}
}
- 接下来重新启动服务
[root@server23 ~]# service dhcpd restart
Starting dhcpd: [ OK ]
- 接下来检测是否分配到符合期望的
IP
地址