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

    技术2023-06-06  205

    文章目录

    了解DHCP服务使用DHCP的好处DHCP的分配方式 工作原理租约过程第一个过程:discover 请求IP地址 客户——》服务端 广播第二个过程:offer 服务器回应可用IP信息 服务器——》客户端 广播第三个过程:request 客户端请求确认可用IP 客户端——》服务端 广播第四个过程:ack 服务端确认IP可用 服务端——》客户端 广播更新租约 DHCP服务器的配置安装DHCP服务器dhcpd.conf的内容构成全局设置,作用于整个DHCP服务器subnet网段声明,作用于整个子网段host主机声明,作用于单个主机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…rpmdhcp软件包的主要文件 主配置文件:/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不通一般都是在三层交换机设置和绑云上 配置文件不能乱改 每段结尾分号很重要

    Processed: 0.027, SQL: 9