目录
[6.1 引言](#6.1 引言)
[6.2 DHCP](#6.2 DHCP)
[6.2.1 地址池和租用](#6.2.1 地址池和租用)
[6.2.2 DHCP和BOOTP消息格式](#6.2.2 DHCP和BOOTP消息格式)
[6.2.3 DHCP和BOOTP选项](#6.2.3 DHCP和BOOTP选项)
[6.2.4 DHCP协议操作](#6.2.4 DHCP协议操作)
[6.2.5 DHCPv6](#6.2.5 DHCPv6)
[6.2.6 DCHP中继](#6.2.6 DCHP中继)
[6.2.7 DHCP认证](#6.2.7 DHCP认证)
[6.2.8 重新配置扩展](#6.2.8 重新配置扩展)
[6.2.9 快速确认](#6.2.9 快速确认)
[6.2.10 位置信息(LCI和LoST)](#6.2.10 位置信息(LCI和LoST))
[6.2.11 移动和切换信息(MoS和ANDSF)](#6.2.11 移动和切换信息(MoS和ANDSF))
[6.2.12 DHCP嗅探](#6.2.12 DHCP嗅探)
[6.3 无状态地址自动配置](#6.3 无状态地址自动配置)
[6.4 DHCP 和 DNS 交互](#6.4 DHCP 和 DNS 交互)
[6.5 以太网上的PPP](#6.5 以太网上的PPP)
[6.6 与系统配置相关的攻击](#6.6 与系统配置相关的攻击)
[6.7 总结](#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 ,完全限定域名。互联网上唯一标识设备的域名。
包含完整域名层级结构,从右到左依次表示主机名、子域名、顶级域名和根域名。
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消息格式:
-
常规:客户端/服务器使用。
-
中继代理使用。
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地址。
流程:
-
DHCP客户端向DHCP中继发送DHCP请求包,而 DHCP中继收到广播包后,再以单播形式发给DHCP服务器。
-
服务器端再向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两种方法:
-
在本地路由器RA消息的前缀选项中关闭自动标志,即之前说的M/O标志。
-
命令禁止全局地址自动配置。如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通信:
- 发现阶段 以太网类型为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)会话终止
- PPP会话阶段 以太网类型为0x8864
PPPoE具体流程可看我的文章
PPP & PPPoE & L2TP & PPTP 一文全介绍_冫。。。ptptppp-CSDN博客