引言:DHCP,dynamic host configuration protocol,动态主机配置协议,使用UDP的67/68号端口,用来自动给客户端配置TCP/IP信息参数的网络协议。这些参数包括,IP地址,子网掩码,缺省网关、DNS服务器。
1 概念
1)地址池:服务器端存放地址的地方,存的是子网,bootP协议的地址池中的参数一旦被分配出去就不会回收,因而产生了DHCP租约。
2)DHCP工作原理:
IP租用请求——客户端向多个服务器端发送IP租用请求。当DHCP客户端启动后,向网络内广播一个DHCP请求信息,所有的机器都会收到,但不是DHCP服务器的机器会把信息丢掉。其中,信息中包含客户端的MAC地址
IP租用提供——服务器端收到后都会给客户端提供一个IP用来租用。DHCP服务器回应客户端,提供一个网内没有的IP地址。且信息中增加服务器的MAC地址
IP租用选择——客户端会对服务器提供的IP进行就近选择。如果DHCP服务器有多个,则选择第一个回应的信息,然后向网络中广播一个消息,表明自己已经接受一个DHCP服务器的IP
IP租用确认——然后服务器端就会进行IP租用确认。DHCP服务器接受到客户选择信息之后,会返回给客户端一个消息包,客户端按服务器的信息配置机器IP,服务器记录客户端的IP地址。
3)如果没有DHCP服务器回应相应的DHCP客户端,则会导致
i)没有 IP 地址(对于有些 Linux 发行版会这样)
ii) 客户端等待间隔 : 客户机等待 1 秒。否则,每隔2 、 4 、 8 、 16 秒重发广播 , 若仍未收到,使用 169.254.0.0/16 ( 0.1-25.254)。 同时每隔5分钟再试一次
iii) 有些 Linux 发行版默认使用169.254.0.0/16 的地址 , 但将会每 5 分钟向本地网络广播一次寻求有效的DHCP分配IP
注:即便是获取到了169.254.0.0/16这个段的地址也不能上网,只是占个位置等着
4)DHCP租约续租
客户端租期已过去 50% 时,客户机直接向 DHCP 服务器发送消息包,如果收到服务器的回应则会使用服务器重新分配的IP ,如无回应,则继续使用当前的 IP
当租期过去 87.5% 时,客户端再次向给其提供IP的DHCP服务器发送请求包,如果不能成功,则重新开始 IP 租用过程
如果 DHCP 客户机重新启动时,将尝试更新上次关机时的 IP 租用,主动与租期列表中的默认 DHCP 服务器联系,如果租期没到期并且得到服务器回应,客户机会仍使用上次关机时的IP;否则,会每隔 5 分钟尝试一次 IP 租用
到达 100% 时,如果在 87.5% 没有服务器应答 , 则继续使用租约,租约到达 100% 时向整体子网发送广播完成新租约生成过程。
注:最大租期是7200s,默认租期是600s。
2 DHCP服务配置
2.1 实现单区域DHCP
即同一子网下IP地址的获取,server——client
1)配置环境前提
DHCP服务器必须为固定IP地址,客户端没有IP地址,且设置为自动获取。
2)配置服务器端
第一步:安装软件 #yum install dhcp -y
第二步:进入DHCP配置文件所在目录 #cd /etc/dhcp
第三步:通过模板生成DHCP配置文件
#cp /usr/share/doc/dhcp-4.25/dhcpd.conf.example /etc/dhcp/dhcpd.conf
// 目录/usr/share/doc是存放配置文件模板的,后面的dhcp-4.25也可以用dhcp-* 。
第四步:打开DHCP配置文件 #vim /etc/dhcp/dhcpd.conf
配置文件解读:
option domain-name “blue.com”;
//设置DHCP客户端resolve.conf内解析用的域名
option domain-name-servers 192.168.10.3,192.168.10.4;
//设置DHCP客户端reslove.conf的IP
default-lease-time 600; //默认租约时间
max-lease-time 7200; //最长租约时间
log-facility local7; //采用的日志设备为本地设备
第五步:编辑配置文件 vim /etc/dhcp/dhcpd.conf ,复制32-35行内容并修改如下
subnet 192.168.1.0 netmask 255.255.255.0 { //声明本机IP地址池和相关配置
range 192.168.1.100 192.168.1.200; //设置可以分配的IP范围
option routers 192.168.1.1; //设置路由信息,本例的这里也可以什么都不写
}
第六步:启动dhcpd服务 systemctl restart dhcpd
查看dhcpd服务 systemctl status dhcpd
3)客户端测试
第一步:安装dhcp软件 yum install dhclient -y
第二步:获取dhcp服务器IP
dhclient -r eno网卡号
//释放某网卡的ip,如果释放所有eno,就直接#dhclient -r
dhclient -v eno网卡号
//为某个网卡获取ip,为所有网卡获取ip直接用#dhclient -v
4)查看租约信息
查看服务器端租约信息, #cat /var/lib/dhcpd/dhcpd.leases
查看客户端租约信息, #cat /var/lib/dhclient/dhclient.leases
2.2 多区域DHCP的实现
server——r1——r2——client
1) DHCP中继代理:
异子网的DHCP配置需要使用DHCP中继,即只要是处于不同的网络段,就得使用DHCP中继代理。DHCP中继设备要求:网络上存在一个兼容RHC1542的路由器,此标准的路由器除了DHCP广播信息转发外,其他的广播信息均直接过滤。
DHCP中继是为远程网络提供IP地址自动分配机制,它在逻辑上与某DHCP服务器server1一一对应。当DHCP中继接收到某客户端发出的IP租用请求(广播包)时,会以事先约定好的配置通过物理路径点对点发送给server1,然后server1点对点将反馈信息提供给中继代理,中继代理再以广播的形式发送给客户端。选中继的时候要选离客户端最近的。
2)配置环境前提
首先要保证server到r2是通畅的,也就是说server要有固定的IP地址、网关,r1与r2要有IP地址与网关(要么通过2.1的方式自动获取,要么用nmtui设置),且r1与r2要设置好路由转发以保证网络通畅;客户端client不设置ip与网关,且设置为自动获取。
3)配置服务器端
第一步:安装软件 #yum install dhcp -y
第二步:进入DHCP配置文件所在目录 #cd /etc/dhcp //这步跳过也行
第三步:通过模板生成DHCP配置文件
#cp /usr/share/doc/dhcp-4.25/dhcpd.conf.example /etc/dhcp/dhcpd.conf
// 目录/usr/share/doc是存放配置文件模板的,后面的dhcp-4.25也可以用dhcp-* 。
第四步:打开DHCP配置文件 #vim /etc/dhcp/dhcpd.conf
第五步:编辑配置文件 vim /etc/dhcp/dhcpd.conf ,在35行后面添加如下内容
subnet 192.168.1.0 netmask 255.255.255.0 { //声明IP地址池和相关配置
range 192.168.1.100 192.168.1.200; //设置可以分配的IP范围
option routers 192.168.1.1; //设置路由信息,本例的这里也可以什么都不写
}
//如果用nmtui已经设置好了IP与网关,这个就不用写。否则就要写。
subnet 192.168.3.0 netmask 255.255.255.0 { //声明IP地址池和相关配置
range 192.168.3.10 192.168.3.20; //设置可以分配的IP范围
option routers 192.168.2.2; //设置路由信息,上面的option routers的选取要选择最靠近3.0网段的网关。
}
//需要给哪个网络段自动分配IP地址就写哪个网络段的地址池与网关
第六步:启动dhcpd服务 systemctl restart dhcpd
查看dhcpd服务 systemctl status dhcpd
3) 配置中继代理器
第一步:选择最靠近客户端的主机(或路由器)配置中继代理
第二步:安装软件 #yum install dhcp -y
第三步:
法一:编辑配置文件
#vim /usr/lib/systemd/system/dhcrelay.service,将里面的下面这行内容
ExecStar=/usr/sbin/dhcrelay -d --no-pid 后面依次添加(不换行):
—— –i eno*** (指定本中继代理器连接到客户端的网络接口);
—— -i eno*** (指定本机中继代理器连接到服务器端的网络接口);
—— DHCP服务器的IP地址
例:ExecStar=/usr/sbin/dhcrelay -d --no-pid –i eno50332184 –i eno33554984 192.168.1.1注:两个eno的顺序如果不正确的话也是可以的;配置文件中的其他内容不变。
法二:使用命令
#dhcrelay -d -i eno50332184 -i eno33554984 192.168.1.1
第四步:启动DHCP中继代理,依次执行下面的命令
#systemctl daemon-reload
#systemctl restart dhcrelay
4)客户端测试
第一步:安装软件 #yum install dhclient -y
第二步:获取dhcp服务器IP
dhclient -r eno网卡号 //释放某网卡的ip,如果释放所有eno,就直接#dhclient -r
dhclient -v eno网卡号 //为某个网卡获取ip,为所有网卡获取ip直接用#dhclient -v
5)查看租约信息
查看服务器端租约信息, #cat /var/lib/dhcpd/dhcpd.leases
查看客户端租约信息, #cat /var/lib/dhclient/dhclient.leases
2.3 分配固定的IP地址
应用情况,公司租用的IP地址不是很多,为了防止公司的领导获取不到IP,需要为其设置自动分配固定的IP地址
1)配置服务器端
第一步:编辑配置文件 #vim /etc/dhcp/dhcpd.conf里面写上:
host boss {
option host-name "boss.blue.com";
hardware thernet 00:00:A0:2E:9E:0A;
fixed-address 192.168.150;
}
第二步:启动dhcpd服务 #systemctl restart dhcpd
查看dhcpd服务 #systemctl status dhcpd
2)客户端测试
第一步:安装软件 #yum install dhclient -y
第二步:获取dhcp服务器IP
dhclient -r eno网卡号 //释放某网卡的ip,如果释放所有eno,就直接#dhclient -r
dhclient -v eno网卡号 //为某个网卡获取ip,为所有网卡获取ip直接用#dhclient -v
3)查看租约信息
查看服务器端租约信息, #cat /var/lib/dhcpd/dhcpd.leases
查看客户端租约信息, #cat /var/lib/dhclient/dhclient.leases
2.4 实现共享区域
如果打算在同一个物理网络中存在多个逻辑网络段,则使用共享作用域即可。例如,假设四台主机都在同一个LAN区段,2.2的所有配置过程均不变,那么client机首先会获取与server机同一网络段的地址,比如192.168.1.102,如果1.0网络段的地址用光了才会配置3.0网络段的。而共享区域就是不让它获取1.0网段的地址,直接获取3.0网段的地址。
1)配置服务器端
第一步 编辑配置文件 #vim /etc/dhcp/dhcpd.conf
option domain-name “nilu.edu”;
option domain-name-servers
192.168.10.3, 192.168.10.4;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
shared-network blue {
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.120 192.168.120;
option routers 192.168.10.1;
}
subnet 192.168.20 netmask 255.255.255.0 {
range 192.168.2.120 192.168.2.220;;
option routers 192.168.2.1;
}
}
第二步:启动dhcpd服务 #systemclt restart dhcpd
2)客户端测试
略
转载请注明出处,谢谢!