Linux---网络服务---DHCP原理与配置理论+实验

一:了解DHCP服务

1.1:DHCP概述

DHCP服务器的作用是2113为客户机分配IP地址。

DHCP方式对上网的用户进行临时的地bai址分配。也就是你的电脑连上du网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关。

DHCP也可用于直接为服务器和桌面计算机分配地址,并且通过一个PPP代理,也可为拨号及宽带主机,以及住宅NAT网关和路由器分配地址。DHCP一般不适用于使用在无边际路由器和DNS服务器上。

mark

1.2:DHCP的优点

internet是目前世界用户最多的服务之一,有几亿人在使用internet。由于上网时间的不确定性以及使用人员的技术水平不同,为每位用户分配一个固定的IP地址,不仅造成了IP地址的浪费,也会为ISP服务商来带来高额的维护成本。

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

1.3:DHCP分配方式

自动分配(Automatic allocation)

手动分配(Manual Allocation)

动态分配(Dynamic Allocation)

  • 自动分配是当DHCP客户端第一次成功的从DHCP服务器获取一个IP地址后,就永久的使用这个IP地址。

    扫描二维码关注公众号,回复: 11410378 查看本文章
  • 手动分配是由DHCP服务器管理员专门指定的IP地址

  • 动态分配是当客户端第一次从DHCP服务器获取到IP地址后,并非永久使用该地址,每次使用完后,DHCP客户端就需要释放这个IP,供其他客户端使用。

第三种是最常见的使用形式。

二:DHCP的工组原理

2.1:DHCP的租约过程(重点)

1:discover 请求ip地址  客户-----> 服务端   广播

2:offer      服务器回应可用ip信息(可用ip,子网掩码,网关,dns,租约期限) 服务器---> 客户机端广播

3:request  客户端请求确认可用ip   客户-----> 服务端   广播

特殊情况:如果offer中的ip被占用 直接回应noack

4:ack        服务端确认ip可用     服务端----> 客户      广播

租约期限 假如8天 租约期限过半 第5天续约  

服务器挂了没有DHCP就会获取169.254.0.0/24   有DHCP会自动discover 

2.2:DHCP租约详解(重点)

2.21:客户机发送IP请求:发送DHCP discover广播

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

mark

2.22:服务器收到客户机的请求响应发送:DHCP offer广播

  • 当DHCP服务器接收到来自客户机请求IP地址的信息时,他就在自己的IP地址池中查找是否有合法的IP地址提供给客户机.
  • 如果有,DHCP服务器就将此IP地址做上标记,加入到DHCP offer的消息中,然后DHCP服务器就广播一则DHCP offer消息(服务端是固定静态IP,客户端没有地址就会发送广播给客户端)
    客户机仍没有IP地址,所以发送广播
    mark

2.23:客户机选项IP地址:发送DHCP requsest广播

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

mark

2.24:服务器确定租约:发送DHCP ACK广播

DHCP服务器接收到DHCP request消息后,以DHCP ACK消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的消息

当客户机收到DHCP ACK消息时,他就配置了IP地址,完成TCP/IP的初始化

此时服务器发出的仍旧是广播,因为客户机还没有IP地址

mark

2.25:重新登录

DHCP客户机每次重新登录网络时,不需要在发送DHCP的discover信息,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息

DHCP服务器收到请求后,检查IP地址资源池

1.发现客户机请求中的IP地址仍旧存在,便发送ACK,将IP地址分配给客户机

2.发现客户机请求中的IP地址已被占用,便返回一个Nack否认信息,然后客户机重新开始请求IP地址的步骤。
mark

这里补充一点:当DHCP服务器想客户机出租的IP到期限是10天,那么到达5天的时候就要

  • 更新租约,也就是说到达续约的一半时候就要更新租约.

  • 客户机直接向提供租约的服务器发送DHCP request包,要求更新现有的地址租约

  • 若DHCP服务器宕机,客户机租约到期后,会自动释放地址,然后使用169.254.0.0–169.254.255.255网段的地址. 这边169.254.0.0是不能用的.

三:使用DHCP动态配置主机地址

3.1:DHCP服务

  • 为大量客户机自动分配地址,提供集中管理

  • 减轻管理和维护成本、提高网络配置效率

3.2:可分配的地址信息主要包括(重要)

  • 网卡IP地址、子网掩码

  • 对应的网络地址、广播地址

  • 默认网关地址

  • DNS服务器地址

3.3安装DHCP服务器

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

3.4:dhcpd.conf的内容构成

mark

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

ddns-update-style none:           ##禁用DNS动态更新   不关闭DNC更新 IP会一直变化
default-lease-time 21600;          ##默认的租约期限
max-lease-time 43200;              ##最大的租约期限
option domain-name"domain.org";    ##域名”domain.ory“
option domain-name-servers 202.106.0.20;   ##分配域名:给dns

3.6:subnet网段声明,作用整个网段

  • 参数:设置用于分配的IP地址池
  • option subnet-mask 参数:设置客户机的子网掩码
  • option routers 参数:设置客户机的默认网关地址
[root@localhost dhcp]# vim /etc/dhcp/dhcpd.conf
subnet 10.254.239.32 netmask 255.255.255.224 {
  range dynamic-bootp 10.254.239.40 10.254.239.60;
  option broadcast-address 10.254.239.31;
  option routers rtr-239-32-1.example.org;
}

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

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

查看租约文件

  • 启动DHCP

  • 查看租约文件 /var/lib/dhcpd/dhcpd.lease

[root@localhost ~]# vim /var/lib/dhcpd/dhcpd.leases 
或者
[root@localhost ~]# less /var/lib/dhcpd/dhcpd.leases 
或者其他的

实验:配置DHCP

[root@shuai ~]# setenforce 0      ##设置SELinux 成为permissive模式 临时关闭selinux的
[root@shuai ~]# iptables -F ##清空防火墙
[root@shuai ~]# systemctl status firewalld      ##查看防火墙状态
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since 日 2020-06-21 21:46:25 CST; 1 weeks 4 days ago
     Docs: man:firewalld(1)
 Main PID: 8741 (firewalld)
    Tasks: 2
   CGroup: /system.slice/firewalld.service
           └─8741 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

6月 21 21:46:25 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
6月 21 21:46:25 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.

安装DHCP包

[root@shuai ~]# yum install dhcp* -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.163.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                     | 3.6 kB     00:00     
extras                   | 2.9 kB     00:00     
updates                  | 2.9 kB     00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 dhcp.x86_64.12.4.2.5-79.el7.centos 将被 安装
--> 正在处理依赖关系 libisc-export.so.169()(64bit),它被软件包 12:dhcp-4.2.5-79.el7.centos.x86_64 需要
--> 正在处理依赖关系 libdns-export.so.1102()(64bit),它被软件包 12:dhcp-4.2.5-79.el7.centos.x86_64 需要
---> 软件包 dhcp-common.x86_64.12.4.2.5-68.el7.centos.1 将被 升级
已安装:
  dhcp.x86_64 12:4.2.5-79.el7.centos            
  dhcp-devel.x86_64 12:4.2.5-79.el7.centos      

作为依赖被安装:
  bind-export-libs.x86_64 32:9.11.4-16.P2.el7_8.6

更新完毕:
  dhcp-common.x86_64 12:4.2.5-79.el7.centos     
  dhcp-libs.x86_64 12:4.2.5-79.el7.centos       

作为依赖被升级:
  dhclient.x86_64 12:4.2.5-79.el7.centos        

完毕!

下一步进行两台主机的网络调配:配成同一个网络模式vmnet1,此时vmnet1相当于交换机

编辑-----虚拟网络首选项

mark

mark

mark

[root@shuai ~]# rpm -q dhcp     ##查看dhcp安装
dhcp-4.2.5-79.el7.centos.x86_64
[root@shuai ~]# rpm -qc dhcp       ##查看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@shuai ~]# cd /etc/dhcp      ##进入dhcp目录
[root@shuai dhcp]# ll             ##查看dhcp列表 发现里面有dhcpd.conf
总用量 8
drwxr-xr-x. 2 root root   37 4月   2 21:29 dhclient.d
drwxr-xr-x. 2 root root   28 7月   3 16:26 dhclient-exit-hooks.d
-rw-r--r--. 1 root root  120 4月   2 21:29 dhcpd6.conf
-rw-r--r--. 1 root root  117 4月   2 21:29 dhcpd.conf
drwxr-x---. 2 root dhcpd  28 7月   3 16:26 scripts

[root@shuai dhcp]# vim dhcpd.conf ###编辑dhcpd.conf

mark

[root@shuai dhcp]#cp /usr/share/doc/dhcp*/dhcpd.conf.example  ##这边把*换成”-“tab补全 会跳出 dhcp-4.2.5/        dhcp-common-4.2.5/ dhcp-devel-4.2.5/  
[root@shuai dhcp]# cp /usr/share/doc/dhcp-/dhcpd.conf.example
dhcp-4.2.5/        dhcp-common-4.2.5/ dhcp-devel-4.2.5/  
[root@shuai dhcp]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcd.conf  ##复制文件dhcd.conf  
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes   ##这边提示是否覆盖源文件 这边选择”yes“

配置静态网卡

[root@shuai dhcp]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=“static”          ##设置静态IP
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=86503bd2-47b6-4518-8a5f-63e4de03d11e
DEVICE=ens33
ONBOOT=yes           ”开启“
IPADDR=192.168.138.100     ##设置IP地址
PREFIX=24##子网掩码
GATEWAY=192.168.138.1      ##设置网关

~             :wq保存退出   

[root@shuai dhcp]# service network restart      ##配置完重启网卡
Restarting network (via systemctl):                        [  确定  ]
[root@shuai dhcp]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.138.100  netmask 255.255.255.0  broadcast 192.168.138.255
        inet6 fe80::fce1:77f:7a9:b103  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:84:c1:e3  txqueuelen 1000  (Ethernet)
        RX packets 134  bytes 15864 (15.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 353  bytes 34790 (33.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 100220  bytes 8487504 (8.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 100220  bytes 8487504 (8.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:95:60:04  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置dhcp文件

[root@shuai dhcp]# vim /etc/dhcp/dhcpd.conf       ##进入dhcp编辑
进去今后   :set nu设置行号
  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 ns1.example.org, ns2.example.org;
  ####ns1.example.org, ns2.example.org;删除换成8.8.8.8;
  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;
 15 
 16 # If this DHCP server is the official DHCP server for the local
 17 # network, the authoritative directive should be uncommented.
 18 #authoritative;
 19 
 20 # Use this to send dhcp log messages to a different log file (you also
 21 # have to hack syslog.conf to complete the redirection).
 22 log-facility local7;
 23 
 24 # No service will be given on this subnet, but declaring it helps the 
 25 # DHCP server to understand the network topology.
 26 
 27 subnet 10.152.187.0 netmask 255.255.255.0 {  ##这边地址是空的我们给他分配一下
 28 }
 
 27 subnet 192.168.138.0 netmask 255.255.255.0 {        ##这边配置网段跟子网掩码
 28   range 192.168.138.100 192.168.138.200;                  ##配置地址池  子选项range前面空两格 后面的分号一定不能漏掉  很多小伙伴粗心大意 漏掉就配置起不来 
 29   option routers 192.168.138.1;                     ##这边配置网关  

:wq保存退出
[root@shuai ~]# systemctl start dhcpd               ##重启dhcpd服务
[root@shuai ~]# netstat -nuap                       ##查看服务相关进程

mark

下一步查看客户端能不能获取

打开客户机网络设置一下自动获取IP地址

mark

mark

已经获取到DHCP的IP

实验:2:测试DHCP全局跟子段两者DNS地址冲突首先会分配哪个?

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf ##编辑配置文件

mark

:wq ##保存退出

[root@localhost ~]# systemctl restart dhcpd     ##重启dhcpd服务
[root@localhost ~]# 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:*                           8610/avahi-daemon:  
udp        0      0 192.168.122.1:53        0.0.0.0:*                           9679/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           18584/dhcpd         
udp        0      0 0.0.0.0:67              0.0.0.0:*                           9679/dnsmasq        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
udp        0      0 0.0.0.0:45311           0.0.0.0:*                           8610/avahi-daemon:  
udp        0      0 127.0.0.1:323           0.0.0.0:*                           8654/chronyd        
udp        0      0 0.0.0.0:720             0.0.0.0:*                           8602/rpcbind        
udp6       0      0 :::111                  :::*                                1/systemd           
udp6       0      0 ::1:323                 :::*                                8654/chronyd        
udp6       0      0 :::720                  :::*                                8602/rpcbind        

下一步进入客户机

先释放地址ipconfig /release

然后在获取ipconfig /renew

mark

实验结果当DHCP在全局跟子段地址同时冲突时会首先分配子段的地址

实验3:服务器固定给客户机分配IP

获取服务器的MAC地址

这边我们就直接复制

mark

打开dhcp配置文件

[root@localhost ~]# vim /etc/dhcp/dhcpd.conf

进入直接/ fix查找

mark
配置完成在重启dhcpd服务都是相同的步骤

最后去客户机获取地址就行

感谢观看,不足之处多多指教

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/107123543