Linux网络服务——DHCP原理与配置(DHCP工作原理 DHCP服务器的配置 DHCP中继)

了解DHCP服务

动态主机配置协议是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。担任DHCP服务器的计算机需要安装TCP/IP协议,并为其设置静态IP地址、子网掩码、默认网关等内容。
DHCP (Dynamic HostConfiguration Protocol, 动态主机配置协议)
由Internet工作任务小组设计开发专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议

使用DHCP的好处

减少管理员的工作量
避免输入错误的可能
避免IP地址冲突
当更改IP地址段时,不需要重新配置每个用户的IP地址
提高了IP地址的利用率
方便客户端的配置

DHCP的分配方式

在DHCP的工作原理中,DHCP服务器提供了三种IP分配方式:自动分配(Automatic allocation)、手动分配和动态分配(Dynamic Allocation)。

  • 自动分配是当DHCP客户端第一次成功的从DHCP服务器获取一个IP地址后,就永久的使用这个IP地址。
  • 手动分配是由DHCP服务器管理员专门指定的IP地址
  • 动态分配是当客户端第一次从DHCP服务器获取到IP地址后,并非永久使用该地址,每次使用完后,DHCP客户端就需要释放这个IP,供其他客户端使用。

工作原理

客户机从DHCP服务器获得IP地址的过程称为DHCP的租约过程
分为四个步骤
在这里插入图片描述

租约过程

第一个过程:discover 请求IP地址 客户——》服务端 广播

  • 当一个DHCP客户机启动时,客户机还没有IP地址,所以客户机要通过DHCP获取一个合法的地址
  • 此时DHCP客户机以广播方式发送DHCP discover发现信息来寻找DHCP服务器
  • 因为自己没有IP地址,所以源IP地址为:0.0.0.0
  • 同时也不知道DHCP服务器地址,所以发送广播255.255.255.255
    在这里插入图片描述

第二个过程:offer 服务器回应可用IP信息 服务器——》客户端 广播

  • 当DHCP服务器接收到来自客户机请求IP地址的信息时,他就在自己的IP地址池中查找是否有合法的IP地址(可用IP、子网掩码、网关、DNS、租约期限)提供给客户机,如果有,DHCP服务器就将此IP地址做上标记,加入到DHCPoffer的消息中,然后DHCP服务器就广播一则DHCP offer消息
  • 客户机仍没有IP地址,所以发送广播
    • 如果有多台DHCP服务器 discover请求后收到 offer先到先得

第三个过程:request 客户端请求确认可用IP 客户端——》服务端 广播

  • 客户机选择IP地址:发送DHCP request广播
  • 客户机从接收到的第一个DHCPoffer消息中提取IP地址,发出IP地址的DHCP服务器将该地址保留,这样该地址就不能再分配给另一个DHCP客户机
  • 第一个DHCP offer表示:若局域网中同时存在两个DHCP,那么客户机根据收到DHCPoffer的顺序来确定使用哪个DHCP服务器的地址
  • 客户机发送DHCP request 广播,选择IP地址,并附上租约期限信息(默认8天)
    在这里插入图片描述

第四个过程:ack 服务端确认IP可用 服务端——》客户端 广播

  • 服务器确定租约:发送DHCP ACK广播
  • DHCP服务器接收到DHCP request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的消息
  • 当客户机收到DHCP ACK消息时,他就配置了IP地址,完成TCP/IP的初始化
  • 此时服务器发出的仍旧是广播,因为客户机还没有IP地址
    • 特殊情况:如果offer中的地址被使用直接回应noack 则继续循环第一个过程
      在这里插入图片描述

更新租约

续约的时候发的是request单播
租约期限过半 要找DHCP续约
整个局域网都没有DHCP服务器 客户机租约到期后,会自动释放地址,然后使用169.254.0.0–169.254.255.255网段的地址

DHCP服务器的配置

  • DHCP服务
    为大量客户机自动分配地址,提供集中管理
    减轻管理和维护成本、提高网络配置效率

  • 可分配的地址信息主要包括
    网卡的IP地址、子网掩码
    对应的网络地址、广播地址
    默认网关地址
    DNS服务器地址

安装DHCP服务器

  • DHCP服务器软件
    centos镜像中的dhcp…rpm
  • dhcp软件包的主要文件
    主配置文件:/etc/dhcpd.conf
    执行程序:/usr/sbin/dhcpd,/usr/sbin/dhcrelay
    执行参数配置:/etc/sysconfig/dhcpd

dhcpd.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; 				主机声明,固定的主机地址
    }
}

全局设置,作用于整个DHCP服务器

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地址

subnet网段声明,作用于整个子网段

range参数:设置用于分配的IP地址池
option subnet-mask 参数: 设置客户机的子网掩码
option routers 参数: 设置客户机的默认网关地址

host主机声明,作用于单个主机

hardware ethernet 参数:指定对应主机的MAC地址
fixed-address参数:指定为该主机保留的IP地址

DHCP实验

  • 实验环境
    VM虚拟机里一台win7客户机 一台linux里配置DHCP服务器
  • 实验步骤
    dhcp固定IP地址
    安装dhcp包
    修改配置文件(根据模板复制)
    设置subnet {地址池, 子网掩码,网关,dns地址}
    启动服务
[root@pan ~]# yum install dhcp* -y				下载dhcp所有包
下载完后把win10 和linux 绑在一个网卡上  (我这里用仅主机模式)
[root@pan ~]# rpm -cq dhcp
/etc/dhcp/dhcpd.conf						DHCP配置文件
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@pan ~]# cd /etc/dhcp/
[root@pan dhcp]# ls
dhclient.d  dhclient-exit-hooks.d  dhcpd6.conf  dhcpd.conf  scripts
[root@pan dhcp]# vim dhcpd.conf 	 进去看一下配置文件	 		里面是空的
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example					DHCP配置文件模板 进去看看
#   see dhcpd.conf(5) man page
#
~                                                                                      
......                                       
[root@pan dhcp]# cp /usr/share/doc/dhcp-
dhcp-4.2.5/        dhcp-common-4.2.5/ dhcp-devel-4.2.5/  
[root@pan dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example  /etc/dhcp/dhcpd.conf  把配置模板里的信息复制到刚刚的空配置文件里
[root@pan dhcp]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 				配置DHCP固定ip地址
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=96401a89-2a9e-4214-b827-df367567dc24
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.120						加上ip地址
NETMAKS=255.255.255.0						子网掩码
GATEWAY=192.168.100.2						网关
[root@pan dhcp]# service network restart 			重启网络服务
[root@pan dhcp]# vim dhcpd.conf 					
  1 # dhcpd.conf
  2 #
  3 # Sample configuration file for ISC dhcpd
  4 #
  5 
  6 # option definitions common to all supported networks...
  7 option domain-name "example.org";						
  8 option domain-name-servers 8.8.8.8;					DNS地址(分号不能少;)
  9 
 10 default-lease-time 600;					默认租约
 11 max-lease-time 7200;					最大租约
 12 
 13 # Use this to enble / disable dynamic dns updates globally.
 14 #ddns-update-style none;						
......
 26 
 27 subnet 192.168.100.0 netmask 255.255.255.0 {					修改网段
 28   range 192.168.100.130 192.168.100.200;						分配ip的地址池(空两格表示层级关系)
 29   option routers 192.168.100.2;								分配给下面客户端的网关
 30 }
 31 

wq保存退出
[root@pan dhcp]# systemctl start dhcpd										启动dhcp服务
[root@pan dhcp]# netstat -nuap													查看
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:5353            0.0.0.0:*                           8628/avahi-daemon:  
udp        0      0 192.168.100.120:52994   185.209.85.222:123      ESTABLISHED 8682/chronyd        
udp        0      0 192.168.122.1:53        0.0.0.0:*                           9773/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           15992/dhcpd         					已启动
udp        0      0 0.0.0.0:67              0.0.0.0:*                           9773/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:*                           8682/chronyd        
udp        0      0 0.0.0.0:738             0.0.0.0:*                           8619/rpcbind        
udp        0      0 0.0.0.0:41760           0.0.0.0:*                           8628/avahi-daemon:  
udp6       0      0 :::111                  :::*                                1/systemd           
udp6       0      0 ::1:323                 :::*                                8682/chronyd        
udp6       0      0 :::738                  :::*                                8619/rpcbind      

切换到win7设置自动获取ip地址
在这里插入图片描述
cmd进去看一下
在这里插入图片描述

DNS子网段里的优先生效
在这里插入图片描述
在这里插入图片描述
改完后保存要重新启动
再去win7查看
在这里插入图片描述
固定分配IP地址
查看客户机的mac地址 我的是00-0C- 29-1A-49-A0
进配置文件搜索/fix
在这里插入图片描述
重启服务进客户机查看
在这里插入图片描述

实验总结

  • 修改完后要重启服务
  • 配置文件修改完要加分号
  • systemctl start dhcpd 启动
  • systemctl restart dhcpd 重启
  • 客户端: ipconfig /release 释放IP地址
    • ipconfig /renew 获取ip地址
    • ipconfig /all 查看IP的主机信息,DNS信息,物理地址信息,DHCP服务器信息等,

DHCP中继实验

eNSP拓扑图
在这里插入图片描述

二层交换机LSW2配置信息
<Huawei>dis cu
#
sysname Huawei
#
vlan batch 10 20 100
#
interface Ethernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 2 to 4094
#
interface Ethernet0/0/2
 port link-type access
 port default vlan 10
#
interface Ethernet0/0/3
 port link-type access
 port default vlan 20
#
interface Ethernet0/0/4
 port link-type access
 port default vlan 100
三层交换机LSW1配置信息
sysname Huawei
#
vlan batch 10 20 100
#
interface Vlanif10
 ip address 192.168.10.1 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 192.168.100.100
#
interface Vlanif20
 ip address 192.168.20.1 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 192.168.100.100
#
interface Vlanif100
 ip address 192.168.100.1 255.255.255.0
 dhcp select relay
 dhcp relay server-ip 192.168.100.100
#
interface MEth0/0/1
#
interface GigabitEthernet0/0/1
 port link-type trunk
 port trunk allow-pass vlan 2 to 4094
linux设置
[root@localhost ~]# yum install dhcp* -y			联网下载dhcp所有包
[root@localhost ~]# rpm -cq 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 ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf			复制dhcp配置文件模板覆盖到空的配置文件上
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf						编辑配置文件

在这里插入图片描述
把拓扑图里的云和linux都绑在一个网卡上
在这里插入图片描述
在这里插入图片描述

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 					配置网络
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=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=96401a89-2a9e-4214-b827-df367567dc24
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.100					配置ip
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=8.8.8.8
~                              
[root@localhost ~]# systemctl restart network					重启后查看ip
[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::649:df95:3c83:ded1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b5:32:3f  txqueuelen 1000  (Ethernet)
        RX packets 8783  bytes 12721541 (12.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2477  bytes 188412 (183.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# ping 192.168.10.1 				ping下其他网段  (不成功检查网卡、云绑定问题)
PING 192.168.10.1 (192.168.10.1) 56(84) bytes of data.
64 bytes from 192.168.10.1: icmp_seq=1 ttl=255 time=42.4 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=255 time=31.1 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=255 time=38.2 ms
[root@localhost ~]# setenforce 0			关闭防火墙
[root@localhost ~]# iptables--F				清楚规则链路
[root@localhost ~]# systemctl start dhcpd				启动dhcp服务

Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.
如果出现这种情况检查配置文件 重新覆盖修改或者重启电脑重新做

在这里插入图片描述
2台PC获取ip成功

实验总结

ping PC不通一般都是在三层交换机设置和绑云上
配置文件不能乱改 每段结尾分号很重要

猜你喜欢

转载自blog.csdn.net/CN_PanHao/article/details/107104392