《TCP/IP详解 卷一》第6章 DHCP

目录

6.1 引言

6.2 DHCP

6.2.1 地址池和租用

6.2.2 DHCP和BOOTP消息格式

6.2.3 DHCP和BOOTP选项

6.2.4 DHCP协议操作

6.2.5 DHCPv6

6.2.6 DCHP中继

6.2.7 DHCP认证

6.2.8 重新配置扩展

6.2.9 快速确认

6.2.10 位置信息(LCI和LoST)

6.2.11 移动和切换信息(MoS和ANDSF)

6.2.12 DHCP嗅探

6.3 无状态地址自动配置

6.4 DHCP 和 DNS 交互

6.5 以太网上的PPP

6.6 与系统配置相关的攻击

6.7 总结


6.1 引言

获取IP方式:

        DHCP

        IPv6无状态地址自动配置(SLAAC,Stateless Address Autoconfiguration)

        ISP+PPPoE拨号

VoIP(Voice over Internet Protocol):

        一种通信技术。

        将语音转换数字,并通过IP网络传输的技术。

        用途:各种即时通讯应用程序。如Skype、WhatsApp、Zoom、微信电话等。

SIP(Session Initiation Protocol):

        一种通信协议。

        SIP定义了一套信令,用于终端之间会话控制和协商,包括会话建立、维护和结束会话。

        SIP通常用于VoIP系统中作为信令协议,负责处理呼叫建立、呼叫转移、状态更新等任务。

     

        使用SIP地址标识终端设备。类似于电子邮件地址。

VoIP和SIP总结:

        VoIP技术使用SIP协议进行会话控制和信令交换。

6.2 DHCP

DHCP:分配IPv4地址,源于BOOTP,客户端端口68,服务器端口67。

DHCPv6:分配IPv6地址。

DHCP分配方式:

        自动分配:从地址池中分配,IP地址根据客户端MAC绑定关系来分配。

        动态分配:从地址池中分配,客户端每次分配的IP可能不一样。

        手动分配:不从地址池中分配。

6.2.1 地址池和租用

DHCP服务器将租用信息保存在持久性存储器中。即使重启DHCP服务器,租约完好。

6.2.2 DHCP和BOOTP消息格式

BOOTP是DHCP的前身。

DHCP报文格式:

Op(op code):表示报文类型。

        值为1:客户端请求报文。

        值为2:服务器响应报文。

htype:硬件类型,以太网时值为1。

hlen:硬件地址长度,以太网时值为6。

hops:跳数,DHCP报文经过的中继数量。每经过一个路由器,值加1。若同网段则不经过路由器,值为0。

xid:事务ID。DHC客户端发起请求时设置的随机数,服务器响应报文复制该值,用于匹配请求和响应报文。

secs:DHCP客户端从获取到IP地址或续约开始到现在的时间,单位秒。获得IP地址之前均为0。

flags:只使用bit0,用来标识DHCP服务器应答报文是单播还是广播发送。0:单播,1:广播。

ciaddr:DHCP客户端的IP地址。仅用于DHCP服务器发送的ACK报文,在其他报文为0。因为DHCP服务器确认前,DHCP客户端还没有分配到IP。

yiaddr:DHCP服务器分配给客户端的IP地址。仅用于DHCP服务器发送的Offer和ACK报文,其他报文为0。

siaddr:为DHCP客户端分配IP地址等信息的其他DHCP服务器IP地址。仅在DHCP Offer、DHCP ACK报文中显示,其他报文中显示为0。

Giaddr:DHCP客户端请求报文后经过的第一个DHCP中继IP(跨网段)。如果不经过DHCP中继, 则为0。

Chaddr:DHCP客户端的MAC地址。

Sname:为DHCP客户端分配IP的DHCP服务器名称。在Offer和ACK报文中显示,其他报文为0。

File:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径。仅在DHCP Offer报文中显示,其他报文为空。

Options:可选项字段,长度可变,格式为"代码+长度+数据"。

        详细在下节结束。

6.2.3 DHCP和BOOTP选项

子网掩码:Option Code 1

        用于指定客户端设备所在子网的掩码。

网关:Option Code 3

        给提供客户端网关IP。

域名服务器:Option Code 6

        给客户端提供一个或多个 DNS 服务器的IP。

主机名:Option Code 12

        客户端向DHCP服务器提供其主机名。

域名:Option Code 15

        指定DHCP客户端的DNS域名。

IP地址租用时间 (Lease Time) :Option Code 51

        指定为客户端分配的IP的租用时间,以秒为单位。

DHCP消息类型:Option Code 53

        指定DHCP消息类型,如Discover、Offer、Request、Decline等。

DHCP服务器标识:Option Code 54

        用于给DHCP客户端分配IP的服务器的IP地址。

参数请求列表:Option Code 55

        客户端使用该选项告知DHCP服务器请求的配置参数,如子网掩码、网关、DNS 服务器等。

更新服务器 (Renewal Time Value) - Option Code 58

        指定客户端应尝试更新其租用的IP地址的时间,以秒为单位。

其中DHCP消息类型选项(Option Code 53):

        每个DHCP消息都需要使用,可能值:

                DHCPDISCOVER(1)、DHCPOFFER(2)、DHCPREQUEST(3)、

                DHCPDECLINE(4)、 DHCPACK(5)、DHCPNAK(6)、DHCPRELEASE(7)

                DHCPINFORM(8)、DHCPFORCE- RENEW(9),DHCPLEASEQUERY(10)

                DHCPLEASEUNASSIGNED(11),DHCPLEASEUNKNOWN(12),DHCPLEASEACTIVE(13)

6.2.4 DHCP协议操作

DHCPOFFER报文中Your IP address字段是DHCP服务器提供的IP地址。

DHCPOFFER消息中包含租约时间(T),更新时间(T1),重新绑定时间(T2)。

        租约时间:Lease Time,值为定时器T,即不更新租约情况下IP地址可使用时间上限。

        更新时间:Renewal Time,值为定时器T1,即客户机经过多久尝试向服务器请求更新租约时间。

        重新绑定时间:Rebinding Tim,值为定时器T2,即客户机当前地址租约即将过期,向服务器请求更新地址。

        默认时,T1 =(T/2),T2=(7T/8)

客户端分配到IP地址后,可向该IP发送ARP请求,来检测IP是否冲突,若发现冲突则向服务器发送DHCP DECLINE,拒绝该IP。

DHCP INFORM:用于向DHCP服务器请求特定的配置信息,但并不请求分配IP地址。

FQDN:Fully Qualified Domain Name ,完全限定域名。互联网上唯一标识设备的域名。

        包含完整域名层级结构,从右到左依次表示主机名、子域名、顶级域名和根域名。

        如:www.example.com

windows命令:

        释放当前IP:ipconfig /release

        重新获取IP:ipconfig /renew

        可触发DHCP分配IP的流程,方便抓包学习。

DHCP客户端状态机:

6.2.5 DHCPv6

IPv6四种IP分置方式:

        静态

        SLAAC: 无状态地址自动配置,无法分配DNS

        无状态DHCPv6: 分配地址前缀,网关,DNS

        有状态DHCPv6: 分配IP,网关,DNS

SLAAC:

        Stateless Address Autoconfiguration,无状态地址自动配置。

        特点:简单,无需DHCPv6服务器。

        工作原理:

                IPv6路由器周期向本地链路所有主机发送路由器通告RA消息,其中包含网络前缀和其他网络配置。

                主机根据RA消息中的网络前缀和接口标识符Interface ID(即MAC地址)生成一个唯一的IPv6地址。

                然后进行IPv6地址冲突检测。

                SLAAC本身不提供其他网络参数(如DNS服务器、默认网关等),但是路由器通告RA中通常会包含该配置。此外主机还可用DHCPv6获取额外参数。

        接口标识符:由EUI-64生成,即根据MAC或者随机(windows)生成,MAC 中插入FFFE,最后从左到右的第七位翻转。

无状态DHCPv6:

        此时DHCPv6服务器不用于提供IPv6地址,而是提供其他网络配置信息,如 DNS、域名、NTP服务器等。

        因为常与SLAAC协同使用,SLAAC为客户端分配IPv6地址,而无状态DHCPv6提供其他网络配置参数。

Radvd(Router Advertisement Daemon):。一个周期发送IPv6路由通告RA报文的守护程序,RA报文中包含网络前缀、默认路由,其他配置(如MTU、邻居发现信息)。

ICMPv6报文类型包括:

        回显请求/响应: Echo Request/Reply

                作用:ping

        邻居请求/邻居通告: Neighbor Solicitation/Advertisement

                作用:查询邻居的IPv6地址,类似ARP。

                        确认其可达性

                        地址冲突检测

        路由器请求/路由器通告:Router Solicitation/Advertisement

                作用:请求/发送路由器的配置信息

        重定向: Redirect

                作用:用于通知主机将包路由到更优路径,优化包传输。

        参数问题: Parameter Problem

                作用:用于通知发送方包中某些字段或选项存在问题。

        报文过大:Packet Too Big

                作用:用于通知发送方包过大,无法传输。

      

        超时:Time Exceeded

                作用:TTL为0时,用于通知源主机。

        目的地不可达:Destination Unreachable

                作用:用于通知源主机目的地不可达,包括网络不可达、端口不可达等。

两种DHCPv6消息格式:

        1. 常规:客户端/服务器使用。

        2. 中继代理使用。

DUID:DHCP唯一标识符,用于标识客户端或服务器,全球唯一。通常基于设备硬件地址、时间戳、随机数等生成。

DHCPv6分配流程

DAD:重复地址检测,通过向该地址发送IPv6邻居请求NS实现。

客户机获得IPv6地址方式是DHCP还是SLACC?

        取决于客户机接收的ICMPv6路由器通告RA中配置选项。

        即根据RA消息中M位,O位字段:

                M位:即Managed Address Configuration Flag,表示通过DHCPv6获得IPv6地址。

                O位:即Other Configuration Flag。

                        表示除IPv6地址外的配置可使用DHCPv6获得。

M和O组合方式:

        M=1,O=1:使用DHCPv6分配地址和其他配置信息。

        M=1,O=0:使用DHCPv6分配地址,但其他配置通过其他方式获取。

        M=0,O=1:不使用DHCPv6分配地址,但其他配置信息通过DHCPv6获取。

        M=0,O=0:不使用DHCPv6分配地址和其他配置信息,通过其他方式获取。

DHCPv6 SOLICIT

        作用:用于DHCPv6客户端向服务器请求地址分配或前缀分配。

DHCPv6 ADVERTISE

        作用:用于DHCPv6服务器向客户端分配IPv6地址和网络配置信息。

6.2.6 DCHP中继

DHCP中继代理:

        使用场景:跨网段时分配IP地址。

流程:

        1. DHCP客户端向DHCP中继发送DHCP请求包,而 DHCP中继收到广播包后,再以单播形式发给DHCP服务器。

        2. 服务器端再向DHCP中继返回应答,并由DHCP中继将此包广播给DHCP客户端。

DHCP中继:仅中继IPv4广播或IPv6组播流量。

如何实现DHCP中继功能?

        开启DHCP Option 82选项,即RAIO选项。

        RAIO:Relay Agent Information Option,中继代理信息选项。

6.2.7 DHCP认证

使用较少。

认证选项:用于确定DHCP消息来自授权的发送方。

6.2.8 重新配置扩展

允许服务器主动触发客户端更新租约。

作用:当网络状态改变时,使客户端重新获得地址或丢弃原来地址。

6.2.9 快速确认

允许DHCP服务器通过DHCP ACK响应DHCP DISCOVER消息,跳过标准流程中的DHCP OFFER和REQUEST消息。

目的:用于加快DHCP客户端获取IP地址和配置的过程。

使用场景:

        移动网络中设备频繁切换网络,用于减少IP地址分配延迟。

        大规模网络中,大量设备请求IP。减少DHCP消息数量和交换时间,提高网络性能。

        降低延迟,如VoIP或视频流。

Linux如何开启DHCP快速确认:

        客户端:如dhclient,配置文件/etc/dhcp/dhclient.conf中添加:

                send dhcp-requested-address 1;

                request dhcp6 rapid-commit;

        服务器:如dhcpcd,配置文件/etc/dhcpcd.conf中添加:

                option rapid_commit;

6.2.10 位置信息(LCI和LoST)

LCI(Location Configuration Information):位置配置信息

        一种DHCPv6选项。

        用于在DHCPv6中传递客户端位置信息。如地理坐标、楼层号、建筑物名称、部门名等。

        这样便服务器可根据位置信息为客户端分配适当的 IP 地址和配置参数。

LoST(Location-to-Service Translation):位置到服务转换。

        一种协议。

        用于根据位置信息确定最近的服务节点的地址。

        使用场景:

                紧急呼叫:移动网络中,当用户拨打救急电话是,可根据用户位置信息确定最近的紧急呼叫中心地址,从而将呼叫路由到最近接收方。

                广告投送:LoST帮助广告商根据用户位置向其传递相关广告。

                网络管理:LoST帮助网络管理员根据设备位置动态调整访问控制策略。

6.2.11 移动和切换信息(MoS和ANDSF)

用于移动蜂窝网络中的两个DHCP选项。

MoS (Mobile Operator Service):

        作用:用于指定移动运营商提供的服务信息。

ANDSF (Access Network Discovery and Selection Function):

        即接入网发现和选择功能。

        作用:允许移动设备发现和选择最佳的接入网络。

6.2.12 DHCP嗅探

即DHCP Snooping,一种交换机功能。

作用:检查DHCP消息内容,实现ACL管理DHCP流量,防攻击。

6.3 无状态地址自动配置

IPv4:从链路本地范围169.254.1.1至169.254.254.254使用16位子网,掩码255.255.0.0随机选择IPv4地址,并使用IPv4 ACD检测冲突

IPv6 SLAAC:自动配置的地址可以是链路本地IPv6地址,但主要还是全球单播地址。

IPv6 SLAAC自动配置链路本地地址

        前缀fe80::0+随机数,或前缀fe80::0+接口标识符(MAC地址)

下面重点讲SLAAC如何自动配置全球单播地址。

IPv6 SLAAC配置流程:

        设备发送路由器请求消息RS到本地链路多播地址FF02::。

        路由器收到RS消息后,向本地链路多播地址FF02::回复路由器通告消息RA。

        设备收到RA消息后,获取其中IPv6网络前缀。

        设备将网络前缀和其接口标识符(通常是MAC地址)结合生成IPv6地址。

设备通常还需要DHCPv6获取默认网关,DNS服务器等信息。

所以常见部署:SLAAC + DHCPv6 = 无状态DHCPv6,此时DHCPv6来获得配置信息,不用来获得IP。

配置好IPv6地址后,还需进行DAD(重复地址检测):

        DAD方法:向该地址发送邻居请求NS消息,如果没有收到邻居通告NA消息。则说明IPv6地址没有冲突。

小结:

        全球单播地址的IPv6 SLAAC

                路由器发送ICMPv6 RA,其中提供前缀,首选/有效生命周期,DNS服务器等。

                IPv6地址=前缀+接口标识符(MAC)。

        无状态的DHCPv6

                不提供地址,只用于提供配置信息。

        所以SLAAC和DHCPv6结合即可,完成IP地址+配置信息。

Linux、Windows 可以设置禁止系统给自己分配169.254/16的IP,因为这个IP没用。

IPv6全局地址禁用SLAAC两种方法:

        1. 在本地路由器RA消息的前缀选项中关闭自动标志,即之前说的M/O标志。

        2. 命令禁止全局地址自动配置。如sysctl -w net.ipv6.conf.all.autoconf=0

6.4 DHCP 和 DNS 交互

dnsmasq程序同时实现了DHCP,DNS服务器功能。

6.5 以太网上的PPP

PPP over Ethernet:PPPoE

下图可知,DSL调制解调器起到了网桥作用。

DSL调制解调器作用:数字信号转与模拟信号互相转换。

PPPoE优点:PPP协议提供了比DHCP更细致的配置控制和审计日志,方便计费。

DSL提供点到点数字链路,可与传统模拟电话线同时工作。

PPPoE通信:

        1. 发现阶段 以太网类型为0x8863

                PADI(PPPoE Active Discovery Initiation)初始化

                PADO(PPPoE Active Discovery Offer)提供

                PADR(PPPoE Active Discovery Request)请求

                PADS(PPPoE Active Discovery Session-confirmation)会话确认

                PADT(PPPoE Active Discovery Terminate)会话终止

        2. PPP会话阶段 以太网类型为0x8864

PPPoE具体流程可看我的文章

        PPP & PPPoE & L2TP & PPTP 一文全介绍_冫。。。ptptppp-CSDN博客

6.6 与系统配置相关的攻击

6.7 总结

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山下小童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值