DHCP服务搭建实现动态分配IP地址

DHCP服务搭建实现动态分配IP地址

一、DHCP概述

DHCP-Dynamic Host Configuration Protocol 动态主机配置协议。

DHCP通常是用于局域网内的一个通信协议,主要是通过客户端发送广播数据包给整个物理网段内的所有主机,若局域网内有dhcp服务器,就会响应客户端的要求。

二、IP获取过程(鸟哥Linux私房菜)

1.客户端:利用广播封包发送搜索 DHCP 服务器的封包:

​ 若客户端网络设定使用 DHCP 协议取得 IP (在 Windows 内为『自动取得 IP』),则当客户端开机或者是重新启动网络卡时, 客户端主机会发送出搜寻 DHCP 服务器的 UDP 封包给所有物理网段内的计算机。此封包的目标 IP 会是 255.255.255.255, 所以一般主机接收到这个封包后会直接予以丢弃,但若局域网络内有 DHCP 服务器时,则会开始进行后续行为。

2.服务器端:提供客户端网络相关的租约以供选择:

​ DHCP 服务器在接收到这个客户端的要求后,会针对这个客户端的硬件地址 (MAC) 与本身的设定数据来进行下列工作:

​ 到服务器的登录文件中寻找该用户之前是否曾经用过某个 IP ,若有且该 IP 目前无人使用,则提供此 IP 给客户端;
​ 若配置文件针对该 MAC 提供额外的固定 IP (static IP) 时,则提供该固定 IP 给客户端;
若不符合上述两个条件,则随机取用目前没有被使用的 IP 参数给客户端,并记录下来。

​ 总之,服务器端会针对客户端的要求提供一组网络参数租约给客户端选择,由于此时客户端尚未有 IP ,因此服务器端响应的封包信息中, 主要是针对客户端的 MAC 来给予回应。此时服务器端会保留这个租约然后开始等待客户端的回应。

3.客户端:决定选择的 DHCP 服务器提供的网络参数租约并回报服务器:

​ 由于局域网络内可能并非仅有一部 DHCP 服务器,但客户端仅能接受一组网络参数的租约。 因此客户端必需要选择是否要认可该服务器提供的相关网络参数的租约。当决定好使用此服务器的网络参数租约后, 客户端便开始使用这组网络参数来设定自己的网络环境。此外,客户端也会发送一个广播封包给所有物理网段内的主机, 告知已经接受该服务器的租约。此时若有第二台以上的 DHCP 服务器,则这些没有被接受的服务器会收回该 IP 租约。至于被接受的 DHCP 服务器会继续进行底下的动作。

4.服务器端:记录该次租约行为并回报客户端已确认的响应封包信息:

当服务器端收到客户端的确认选择后,服务器会回传确认的响应封包,并且告知客户端这个网络参数租约的期限, 并且开始租约计时。该次租约何时会到期而被解约:

​ 客户端脱机:不论是关闭网络接口 (ifdown)、重新启动 (reboot)、关机 (shutdown) 等行为,皆算是脱机状态,这个时候 Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;

​ 客户端租约到期:前面提到 DHCP server 端发放的 IP 有使用的期限,客户端使用这个 IP 到达期限规定的时间,而且没有重新提出 DHCP 的申请时,就需要将 IP 缴回去!这个时候就会造成断线。但用户也可以再向 DHCP 服务器要求再次分配 IP 。

环境:两台centos7虚拟机,自定义网络vmnet4。

hostname ip
server 192.168.100.1
client

三、安装DHCP

[root@server ~]# yum install dhcp -y
[root@server ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y

四、DHCP端口

[root@server ~]# vim /etc/services 
   71 bootps          67/tcp                          # BOOTP server
   72 bootps          67/udp
   73 bootpc          68/tcp          dhcpc           # BOOTP client
   74 bootpc          68/udp          dhcpc

server端67,client端68


五、DHCP配置文件

[root@server ~]# vim /etc/dhcp/dhcpd.conf 
 46 # A slightly different configuration for an internal subnet.
 47 subnet 192.168.100.0 netmask 255.255.255.0 {		#配置网段与本机同网段
 48   range 192.168.100.50 192.168.100.100;				#配置地址池
 49   option domain-name-servers 192.168.100.1;			#配置DNS IP
 50   option domain-name "internal.example.org";		#配置域名
 51   option routers 192.168.100.1;						#路由
 52   option broadcast-address 192.168.100.255;			#广播地址
 53   default-lease-time 600;							#默认租约
 54   max-lease-time 7200;								#最大租约
 55 }

[root@server ~]# systemctl start dhcpd
[root@server ~]# netstat -tnulp | grep dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           89718/dhcpd

六、client端测试

[root@client ~]# systemctl restart network
[root@client ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7c:18:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.50/24 brd 192.168.100.255 scope global dynamic eno16777736
       valid_lft 605sec preferred_lft 605sec
    inet6 fe80::20c:29ff:fe7c:1813/64 scope link tentative 
       valid_lft forever preferred_lft forever
[root@client ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.100.1   0.0.0.0         UG    100    0        0 eno16777736
192.168.100.0   0.0.0.0         255.255.255.0   U     100    0        0 eno1677773
[root@client ~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search internal.example.org
nameserver 192.168.100.1

七、查看租约文件

[root@server ~]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.2.5

server-duid "\000\001\000\001$\306\314\250\000\014)\213G\205";

lease 192.168.100.50 {
  starts 0 2019/07/21 07:11:42;
  ends 0 2019/07/21 07:21:42;
  cltt 0 2019/07/21 07:11:42;
  binding state active;
  next binding state free;
  rewind binding state free;
  hardware ethernet 00:0c:29:7c:18:13;
  client-hostname "client";
}

八、给客户端分配固定地址

通过MAC地址与IP地址的对应关系为指定的物理地址分配固定IP

[root@server ~]# vim /etc/dhcp/dhcpd.conf 
 47 subnet 192.168.100.0 netmask 255.255.255.0 {		#配置网段与本机同网段
 48   range 192.168.100.50 192.168.100.100;				#配置地址池
 49   option domain-name-servers 192.168.100.1;			#配置DNS IP
 50   option domain-name "internal.example.org";		#配置域名
 51   option routers 192.168.100.1;						#路由
 52   option broadcast-address 192.168.100.255;			#广播地址
 53   default-lease-time 600;							#默认租约
 54   max-lease-time 7200;								#最大租约
 55 
 56 host client {
 57     hardware ethernet 00:0c:29:7c:18:13;			#设置mac地址
 58     fixed-address 192.168.100.66					#设置ip地址
 59  }
 60 }
 [root@server ~]# systemctl restart dhcpd
[root@client ~]# systemctl restart network
[root@client ~]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno16777736:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:7c:18:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.66/24 brd 192.168.100.255 scope global dynamic eno16777736	
       valid_lft 605sec preferred_lft 605sec
    inet6 fe80::20c:29ff:fe7c:1813/64 scope link tentative 
       valid_lft forever preferred_lft forever

你可能感兴趣的:(Linux)