如何通过waireshack过滤dhcp数据包格式

当前位置: >>>>>>
如何读懂DHCP数据报文
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP 协议是
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP 协议是基于UDP层之上的应用,本文结合抓报所得数据分析DHCP协议实现原理 一、先了解一下需要抓取的DHCP报文 客户发出的IP租用请求报文  DHCP客户机初始化TCP/IP,通过UDP端口67向网络中发送一个DHCPDISCOVER广播包,请求租用IP地址。该 广播包中的源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。
DHCP回应的IP租用提供报文  任何接收到DHCPDISCOVER广播包并且能够提供IP地址的DHCP服务器,都会通过UDP端口68给客户机回应一个DHCPOFFER广播包,提供一个IP地址。该广播包的源IP地址为DCHP服务器IP,目标IP地址为255.255.255.255;包中还包含提供的IP地址、子网掩码及租期等信息。
客户选择IP租用报文  客户机从不止一台DHCP服务器接收到提供之后,会选择第一个收到的DHCPOFFER包,并向网络中广播一个 DHCPREQUEST消息包,表明自己已经接受了一个DHCP服务器提供的IP地址。该广播包中包含所接受的IP地址和服务器的IP地址。 所有其他的DHCP服务器撤消它们的提供以便将IP地址提供给下一次IP租用请求。
DHCP服务器发出IP租用确认报文
  被客户机选择的DHCP服务器在收到DHCPREQUEST广播后,会广播返回给客户机一个DHCPACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。
客户配置成功后发出的公告报文
  客户机在收到DHCPACK包,会使用该广播包中的信息来配置自己的TCP/IP,则租用过程完成,客户机可以在网络中通信。
至此一个客户获取IP的DHCP服务过程基本结束,不过客户获取的IP一般是用租期,到期前需要更新租期,这个过程是通过租用更新数据包来完成的。客户IP租用更新报文
(1)在当前租期已过去50%时,DHCP客户机直接向为其提供IP地址的DHCP服务器发送DHCPREQUEST消息包。如果客户机接收到该服务器回应的DHCPACK消息包,客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数,更新自己的配置,IP租用更新完成。如果没收到该服务器的回复,则客户机继续使用现有的 IP地址,因为当前租期还有50%。 (2)如果在租期过去50%时未能成功更新,则客户机将在当前租期过去87.5%时再次向为其提供IP地址的DHCP联系。如果联系不成功,则重新开始IP租用过程。 (3)如果DHCP客户机重新启动时,它将尝试更新上次关机时拥有的IP租用。如果更新未能成功,客户机将尝试联系现有IP租用中列出的缺省网关。如果联系成功且租用尚未到期,客户机则认为自己仍然位于与它获得现有IP租用时相同的子网上(没有被移走)继续使用现有IP地址。 如果未能与缺省网关联系成功,客户机则认为自己已经被移到不同的子网上,将会开始新一轮的IP租用过程。
  DHCP客户机在发出IP租用请求的DHCPDISCOVER广播包后,将花费1秒钟的时间等待DHCP服务器的回应,如果1秒钟没有服务器的回应,它会将这一广播包重新广播四次(以2,4,8和16秒为间隔,加上1~1000毫秒之间随机长度的时间)。四次之后,如果仍未能收到服务器的回应,则运行Windows 2000的DHCP客户机将从169.254.0.0/16这个自动保留的私有IP地址(APIPA)中选用一个IP地址,而运行其他操作系统的DHCP客户机将无法获得IP地址。DHCP客户机仍然每隔5分钟重新广播一次,如果收到某个服务器的回应,则继续IP租用过程。
二、设置SNIFFER PRO抓取DHCP通讯报文
本文使用的抓包工具软件是NAI公司推出的功能强大的协议分析软件---Sniffer Pro。Sniffer Pro 具有强大的网络分析功能和特征,是解决网络问题的好工具。Sniffer支持丰富的的协议,而且能够进行快速解码分析。Sniffer Pro 4.6可以运行在各种Windows平台上(其它类似软件如Netxray不能在Windows 2003和Windows XP上正常运行)。Sniffer软件比较大,运行时需要的计算机内存比较大,否则运行比较慢,这也是它与Netxray相比的一个缺点。
设置包过滤条件 网络中传输的数据包很多,这里只抓取跟DHCP有关的数据,设置如下:点击Capture菜单,选择define filter打开define filter-capture对话框,设置入图参数。
Address选项(图DHCP1)Address: HardwareMode:IncludeStation 1: 10E08C5FC28A(网卡的物理MAC地址,不同的网卡MAC是不同)Station 2: any
Advanced选项(图DHCP2)
IP:ICMPUDP:BOOTP/DNS(UDP)Packer Size:ALL
其它用默认设置,给这个配置起个名字:BOOTP
现在可以抓包了
先弹出Capture Panel(监视抓包情况),点击Capture菜单中的START开始抓包。进入命令提示符,分别执行IPCONFIG/RELEASE 、IPCONFIG/RENEW命令,通过监视器可以看到已经以抓到数据包了,停止抓包并分析包,还是先保持包到磁盘以备分析。图DHCP3 可以看到已经抓到5个报文
三、分析抓到的数据包
用户从DHCP获取IP过程如下:
1、 用户发出DHCPDISCOVER报文;
图DHCP4 用户发出DHCPDiscover广播报文
开始抓报文时首先执行的IPCONFIG/RELEASE命令的作用是用来释放IP,这条报文后面分析,在释放IP后执行的更新IP命令IPCONFIG/RENEW将发起一个DHCP过程,分析从这里开始。现在,客户机没有地址,它就会发出一个DHCPDiscover报文,该报文是广播报文,所有的具有DHCP Server功能的服务器都会收到该报文。图DHCP5
在图中我们可以看到该报文在链路层中发的确实是广播报文。由于DHCP协议是初始化协议,更简单的说,就是让终端获取IP 地址的协议,既然终端连IP地址都没有,何以能够发出IP报文呢?
为了解决这个问题,DHCP报文的封装采取了如下措施:
1、首先链路层的封装必须是广播形式,即让在同一物理子网中的所有主机都能够收到这个报文。在Ethernet_II格式的网络中,就是目标MAC为全1。2、由于终端没有IP地址,IP头中的原IP规定填为全0。3、当终端发出DHCP请求报文,它并不知道DHCP SERVER的IP地址,因此IP头中的目标IP填为子网广播IP――全1,以保证DHCP SERVER的IP协议栈不丢弃这个报文。4、上面的措施保证了DHCP SERVER能够收到终端的请求报文,但仅凭链路层和IP层信息,DHCP SERVER无法区分出DHCP报文,因此终端发出的DHCP请求报文的UDP层中的原端口为68,目标端口DstPort为67。即DHCP SERVER通过知名端口号67来判断一个报文是否是DHCP报文。图DHCP6
DHCP协议的报文中主要数据格式详解图DHCP7Boot record type为1时表示是Client的请求,为2时表示是Server的应答。Hardware address typeClient 的网络硬件地址类型,1表示Client 的网络硬件是10MB的以太网类型/Hardware address lengthClient 的网络硬件地址长度,6表示Client 的网络硬件地址长度是6bytes(即以太网类型的6bytes的MAC地址)。HOPS跳数,表示当前的DHCP报文经过的DHCP RELAY(中级)的数目,每经过一个DHCP中继,此字段就会加1,此字段的作用是限制DHCP报文不要经过太多的DHCP RELAY,协议规定,当“hops”大于4(现在也有规定为16)时,这个DHCP报文就不能再进行处理,而是丢弃。Transaction id事务ID,Client每次发送DHCP请求报文时选择的随机数,用来匹配server的响应报文是对哪个请求报文的响应。Client会丢弃“ID”不匹配的响应报文。
Elapsed boot time秒数,用来表示client开始DHCP请求后的时间流逝秒数flags标志,在 BOOTP中此字段是保留不用的,在DHCP协议中也只使用了其左边的最高位。Client self-assigned IPaddress客户机IP地址Client IP address server分配给client的IP地址Next Server to use in bootstrap服务器IP地址Relay AgentDHCP中继代理IP地址Client hardware address客户机硬件地址MACHost name 服务器的主机名Boot file nameClient 的启动配置文件名
Vendor Information tag选项字段,此字段中包含了大量可选的终端初始配置信息和网络配置信息,对于BOOTP协议,此字段为64bytes,对于DHCP协议,此字段为64---312 bytes。其中最常用的选项列表如下:
Dhcp message typecode = 53, length = 1, value= 1-8,此字段表示DHCP报文类型Router Ipcode = 3, length = IP地址长度, value=client的默认网关的 IP地址;DNS Ipcode = 6, length = IP地址长度的倍数, value= client的DNS服务器的IP地址序列; Wins Ipcode = 44, length = IP地址长度的倍数, value= client的WINS服务器的 IP地址序列; Client idcode = 61, length = client的网络硬件地址的长度+2, value=“htype”+“hlen”+ client的网络硬件地址;server idcode = 54, length = IP地址长度, value= DHCP SERVER的IP地址;
其中我们要注意Transaction ID=CF04CD61和DHCP Message Type一项中type=Discover,前一项表示会话ID,即DHCP Server发回的响应报文中该结构的数值要与发出去的DHCP Discover中的该结构数值一样,后一项说明DHCP报文类型为Discover类型报文。
2 DHCP SERVER回送DHCPOFFER报文图DHCP8
从图中可以看出,DHCPOFFER报文是单播而不是广播,报文明确给出了目标MAC和IP,这一点不同与一般的技术文章介绍。其实,DHCP SERVER给终端的响应报文是根据DHCP报文中的内容决定是广播还是单播,一般都是广播形式。通讯源端口是67,目标端口为68,客户端通过端口号68来判断一个报文是否是DHCP SERVER的响应报文,Transaction ID=CF04CD61,表示这个报文是与图DHCP7中的DHCPDiscover报文相关的报文,因为二者标示一致。 从DHCP Server回应的DHCPOffer报文中我们还可以得到DHCP拟分配给客户端的初始配置信息和网络配置信息,其中
Client self-assigned IP address =0.0.0.0表示客户机还没有使用该地址Client server-assigned IP address =10.177.124.73表示DHCP Server分配给该客户机的IP地址
Server IP ID=218.290.240它标示了客户机下一次发出DHCPRequest报文时,哪个DHCP Server会发出回应DHCP Message Typee=DHCP Offer表示这是一个对DHCPDiscover的回应报文Request IP address lease time =6000 表示租期是100分钟Domain Name Server=218.29.0.251域名服务器地址Gateway address=10.177.124.254网关地址Subnet mask=255.255.255.0 表示这个地址的网段是一个标准的C类地址网段
详细的请参见图DHCP9
所有发送DHCP Offer信息包的服务器将保留它们提供的一个IP地址。在该地址不再保留之前,该地址不能分配给其他的客户。
用户发出DHCPREQUEST报文
图DHCP10客户以广播的方式发送DHCP Request信息包作为响应。注意其中的DHCP Message Type一项中type=Request表示这是一个请求报文。客户利用DHCP Request询问服务器其它的配置选项,如:DNS或网关地址如图DHCP11
DHCP SERVER回送DHCPACK报文图DHCP12
该信息包是以单播的方式发送的。当服务器接收到DHCP Request信息包时,它以一个DHCP Acknowledge信息作为响应,其内容同DHCPOFFER类似,并在“选项”字段中增加了IP地址使用租期选项。
CLIENT收到DHCPACK报文后(经过上面的处理后,有且只有一个DHCPACK报文),会检查DHCP SERVER分配给自己的IP地址是否能够使用,如在以太网类型的网络中,CLIENT会发出一个ARP请求来确定DHCP SERVER分配的IP地址是否已经被别人使用,如果可以使用,则CLIENT成功获得IP地址,并根据IP地址使用租期自动启动续延过程。
如图DHCP13
DHCP协议报文的种类
前面反复提到DHCP Message Type项,这里列出所有DHCP协议报文的种类。DHCP协议采用CLIENT-SERVER方式进行交互,其报文格式共有8种,具体含义如下:
1:DHCPDISCOVER(0x01),此为Client开始DHCP过程的第一个报文
2:DHCPOFFER(0x02),此为Server对DHCPDISCOVER报文的响应
3:DHCPREQUEST(0x03),此报文是Slient开始DHCP过程中对server的DHCPOFFER报文的回应,或者是client续延IP地址租期时发出的报文
4:DHCPDECLINE(0x04),当Client发现Server分配给它的IP地址无法使用,如IP地址冲突时,将发出此报文,通知Server禁止使用IP地址
5:DHCPACK(0x05),Server对Client的DHCPREQUEST报文的确认响应报文,Client收到此报文后,才真正获得了IP地址和相关的配置信息。
6:DHCPNAK(0x06),Server对Client的DHCPREQUEST报文的拒绝响应报文,Client收到此报文后,一般会重新开始新的DHCP过程。
7:DHCPRELEASE(0x07),Client主动释放server分配给它的IP地址的报文,当Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。
8:DHCPINFORM(0x08),Client已经获得了IP地址,发送此报文,只是为了从DHCP SERVER处获取其他的一些网络配置信息,如route ip,DNS Ip等,这种报文的应用非常少见。
图DHCP14是一个运行IPCONFIG/RELEASE后释放IP的报文,从图中可以看出DHCP Message Type是7,他的作用是主动释放server分配给它的IP地址的报文,Server收到此报文后,就可以回收这个IP地址,能够分配给其他的Client。
上面提到的都是在已经开机的情况下获得的报文,如果计算机重新启动,是不是完全按照文章提到的四步得到IP参数。看下面的图DHCP15其中包含关机前获得的IP=192.168.0.22,这是不同与前面提到的10.177.124.X段的IP。原来客户机保留了上一次获得的地址,客户机在重新启动时,如果租用期未超过50%,它就会认为它已经知道该与哪台DHCP服务器进行联系,于是就跳过前两步,并发送另一个DhcpRequest报文给同一个服务器。如果该IP地址仍然可用的话,该DHCP服务器将给这台客户机返回另一个确认消息。 同样,DHCP服务器上也会保留(在租用期内的)客户机的地址。如果你的DHCP服务器中的租用期设的足够长,你就会发现,重启一台客户机后,客户机总是得到同一个地址。这正是由于客户机、服务器能保存已分配地址所造成的。
如果一台客户机未从该DHCP服务器获取过地址,或者它获得的地址已过期,那么它将需要经过全部四个步骤才能得到一个IP地址。
------分隔线----------------------------
------分隔线----------------------------
1 、概述 Skype是由Kazaa于2003年发明的基于P2P 技术的VoIP客户端,用户可以通过Skype...
IRISSniffer是著名网络安全eeye公司的一个用于网络诊断的嗅探器程序,与SnifferPro相...
概述 我所作的 协议 是在黑箱基础上面作出, 并参考了LumaQQ 的文档, 还有网上流传很...
包结构类型: TCPF包我们把它分为5类: 登录请求包(LIP,LogIn Packet),它是由客...
QQ的版本: QQ的版本升级比较频繁,而且与多数的软件不同的是,它客户端的升级往往伴...如何设置和使用DHCP服务器
用圣才电子书APP或微信扫一扫,在手机上阅读本文,也可分享给你的朋友。
作者:佚名 &&来源:网络
DHCP是我们常用的网络协议。在交换机和路由器中,我们也能常遇到相关的设置。下面我们来介绍一下DHCP服务器的设置和使用。希望能够对大家有所帮助。
设置和使用DHCP
在FreeBSD的Packages Collection中,有两个不同的DHCP客户机和服务器软件,一 个为ISC-DHCP,另一个为WIDE-DHCP,两个软件都包括了DHCP客户软件和服务器软件,其中ISC-DHCP 更为常用一些,这里就以ISC-DHCP为例介绍在FreeBSD上安装和设置DHCP。
为了支持DHCP,首先要确认系统内核支持伪设备bpfilter,如果没有,就需要重新编译内核。伪设备bpfilter 是一个允许应用程序接收网络的原始数据包的界面,这样应用程序就能接收目的地址非本机IP地址的数据包 了。DHCP使用bpfilter的原因是在DHCP设置好计算机的TCP/IP之前,由于计算机本身没有定义IP地 址,而TCP/IP堆栈本身不会接收不具备本机IP地址的数据包。要接收DHCP服务器发送回客户的数据包,就需要绕 过TCP/IP堆栈,而必须使用伪设备bpfilter。
1.pseudo-device&&&&bpfilter&&&&4& &
定制内核之后,还要保证/dev/目录下具有对应bpfilter的设备文件。
1.#&cd&/dev &
2.#&sh&MAKEDEV&bpf0&bpf1&bpf2&bpf3 &
从Packages Collecion中安装DHCP软件,这将DHCP软件中的dhcpd,dhclient和dhcprelay 安装到/usr/local/sbin目录下。
1.$&ls&/usr/local/sbin/dhc* &
2./usr/local/sbin/dhclient&&& &
3./usr/local/sbin/dhcpd &
4./usr/local/sbin/dhcrelay&
设置服务器
为了设置DHCP服务器dhcpd,首先就要设置其配置文件/etc/dhcpd.conf。这个配置文件 语法简单,比较容易理解。
1.server-identifier&192.168.3.1; &
3.subnet&192.168.3.0&netmask&255.255.255.0&{ &
4.range&192.168.3.10&192.168.3.20; &
5.default-lease-time&600; &
6.max-lease-time&7200; &
7.option&subnet-mask&255.255.255.0; &
8.option&broadcast-address&192.168.3.255; &
9.option&routers&192.168.3.1; &
10.option&domain-name-servers&192.168.3.1; &
11.option&domain-name&&&; &
14.host&a1&{ &
15.hardware&ethernet&00:90:27:4e:92:09; &
16.fixed-address&192.168.3.32; &
17.option&subnet-mask&255.255.255.0; &
18.option&broadcast-address&192.168.3.255; &
19.option&routers&192.168.3.1; &
20.option&domain-name-servers&192.168.3.1; &
21.option&domain-name&&&; &
基本的dhcpd.conf首先使用server-identifier定义了本服务器的IP地址,这对于有 多个IP地址的服务器系统十分重要,一般不必设置这个参数,dhcpd能自动侦测。然后定义要分配IP地址的客户机组 ,每组拥有一个可用的IP地址范围。有两种客户机组的划分方式,一种为指定子网段来区分,一种为指定主机来区分。
这个例子中的第一组定义了一个子网192.168.3.0/24,这个子网段内,可供DHCP服务器分配的I P地址范围为192.168.3.10到192.168.3.20,这个地址范围也可以不是连续的,不连续的地址可以 使用多个range设置参数来设置。此外,还设置了这一组内分配的IP地址的租期限制default-lease-time 和max-lease-time,可以使用缺省值,而不必改动。后面的option参数设置DHCP的附加功能 ,例如设置DHCP客户的网络掩码、广播地址、DNS服务器、域名等等。事实上这些option设置选项也可以被用作 全局选项设置,即放置在server-identifier之后,对所有的客户机组起作用。
例子的第二组是针对某个特定主机a1进行的设置,这个主机被限定为以太网地址为hardware ethernet 参数值的计算机,将给这个计算机分配一个固定地址。这种分配方式实际等价于固定地址分配方式,唯一的好处就是能够对IP地址进行集中管理,不必每个计算机分别设置了。这里同样也可以使用option参数,设置TCP/IP的参数 。
dhcpd.conf中还能有更多的组,包括对非本网段的子网上的客户机指定的组。
当设置了dhcpd.conf之后,就能启动dhcpd守护进程了,由于计算机会有多个网络界面,需要指定dhcpd 服务器的网络界面,以便回应相应界面上的DHCP请求。
1.#&/usr/local/sbin/dhcpd&fxp0 &
在调试阶段,可以使用-d参数,这样dhcpd就不会进入后台运行,而一直保留在前台,并显示各个与客户计算机通信的过程。当一切都调试完毕之后,就能去除-d参数,并将执行命令放入rc.local启动脚本中,以便系统能够自动执行。
此后,dhcpd正常运行的时候,会将每一次客户请求及其回应的IP地址分配的记录,都记录在/var/run/dhcpd.leases 文件中。为了使dhcpd能正常进行日志记录,应该在启动dhcpd之前使用touch 命令,生成一个新的日志文件。以后就可以查看这个日志文件的内容,以得到当前DHCP服务器的状态和客户机IP地址分 配的情况。以下是一个日志文件的部分内容。
1.lease&192.168.3.11&{ &
2.starts&3&&05:46:28; &
3.ends&4&&05:46:28; &
4.hardware&ethernet&0:80:c2:12:fd:d; &
5.uid&1:0:80:c2:12:fd:d; &
touch命令的优点是在存在相关的文件时,不删除或更改文件内容,只更新其访问时间设置,只有在文 件不存在时才生成新文件。
然后就能设置网络中的客户计算机使用DHCP协议,获取合法的IP地址了。通常Windows计算机的TCP/IP设置 中能直接设置支持DHCP协议,如果为Unix(包括FreeBSD)设置DHCP客户软件,就需要dhclient的支持。
设置客户软件
ISC-DHCP中同样也提供了一个客户程序dhclient,用于FreeBSD系统从DHCP服务器上动态获取一个IP地 址。这个程序同样也要求内核支持bpfilter伪设备。
dhclient使用的配置文件为/etc/dhclient.conf,然而最一般的情况下可以不使用它,软件本身的缺省配置就满足一般情况下请求IP地址的需要了。缺省设置下dhclient在获得了IP地址之后,会自动执行/etc/dhclient-script 这个脚本程序,以针对刚获取的动态IP地址进行必要的设置。很多依赖于IP地址的网络服务,就可以在这个脚 本中启动,或者针对重新分配的动态IP地址对已有的网络服务进行修正。虽然使用者也许不希望使用这个脚本 设置网络,但如果不存在这个脚本程序,或者这个程序不可执行,那么dhclient就不能正常执行。
因此对于最一般的客户机,一般只连接到一个网络上,仅具备一个网络界面,可以使用一个空的dhclient.conf 和空的declient-script文件,就能完成设置IP地址和其他TCP/IP参数的任务了。
1.#&touch&/etc/dhclient.conf &
2.#&touch&/etc/dhclient-script &
3.#&chmod&+x&/etc/dhclient-script &
4.#&/usr/local/sbin/dhclient&fxp0 &
6.Listening&on&BPF/fxp0/00:90:27:4e:92:09/unattached &
7.Sending&on&&&BPF/fxp0/00:90:27:4e:92:09/unattached &
8.Sending&on&&&Socket/fallback/fallback-net &
9.DHCPDISCOVER&on&fxp0&to&255.255.255.255&port&67&interval&22 &
10.DHCPOFFER&from&192.168.3.1 &
11.DHCPREQUEST&on&fxp0&to&255.255.255.255&port&67 &
12.DHCPACK&from&192.168.3.1 &
13.bound&to&192.168.3.32&--&renewal&in&3600&seconds.&
在更复杂的情况下,就要指定更多的内容,例如当系统有多个网卡时,要指定dhclient应该从哪个子网中获 得IP地址设置,就需要使用设置文件dhclient.conf。一般除非有多个局域网网络界面,都应该使用空设置文件, 避免产生配置错误。以下为一个简单的dhclient.conf的例子,可以用于多网络界面的情况:
1.#&Defaults &
2.timeout&60; &
3.reboot&10; &
4.retry&60; &
5.select-timeout&5; &
6.initial-interval&2; &
7.script&&/etc/dhclient-script&; &
8.interface&&fxp0&&{ &
9.request&subnet-mask,&broadcast-address,&routers,&domain-name-servers, &
10.domain-name,&host- &
11.require&domain-name- &
这个设置文件主要用于重新定义一些参数,比较容易理解,更改也比较容易。
成功的手工执行dhclient之后,就可以考虑将其和系统启动文件相结合了。因为很多网络服务是依赖于网络 配置的,应该在启动这些网络服务之前使用DHCP配置好TCP/IP。使用dhclient-script启动服务的想法虽然也能解决问题,然而这就不能使用系统的启动rc文件中的相关设置启动网络服务,而在这个dhclient-script 中重新启动,因此比较麻烦。更简便的做法是仅仅在dhclient-script中设置hostname, 而让系统启动文件完成其他网络服务的启动。这样就要求将dhclient与系统rc文件结合起来。
1.#hostname=&my.domain.name&&
2.network_interfaces=&fxp0&lo0&&&&& &
3.#&List&of&network&interfaces&(lo0&is&loopback). &
4.ifconfig_lo0=&inet&127.0.0.1&&&& &
5.#&default&loopback&device&configuration. &
6.#ifconfig_fxp0=&inet&192.168.3.12&&netmask&255.255.255.0&&
7.defaultrouter=&NO&&&&&&&&&&&&&&& &
8.#&Set&to&default&gateway&(or&NO). &
这样就需要更改rc.conf文件,更改一些设置语句。首先要注释hostname设置,而在dhclient.script中进行设置,也不必设置defaultrouter,它通过DHCP协议自动设置。同时要保证netwo
小编工资已与此赏挂钩!一赏一分钱!求打赏↓ ↓ ↓
如果你喜欢本文章,请赐赏:
已赐赏的人
我的电子书网络编程(5)
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
在wireshark过滤器里输入bootp进行对DHCP包的过滤,在windows命令行里输入ipconfig –renew来重新获取ip,获取ip成功后查看wireshark抓包结果。截图如下:
可以看到,wireshark捕获了4个DHCP包,分别是discover、offer、request、ack。
这刚好就对应着主机向DHCP服务器请求分配IP的4个过程:DHCP服务器发现、DHCP服务器提供、DHCP请求、DHCP ACK。
接下来详细看看每个报文的具体内容:
一、Discover:DHCP服务器发现
从包的信息可以看出,DHCP包的传输层协议是UDP,端口号是67。因为此时主机不知道自己的IP地址,也不知道DHCP服务器的地址,所以使用源地址0.0.0.0和广播目的地址255.255.255.255。
二、Offer:DHCP服务器提供
DHCP服务器收到一个DHCP发现报文后,用一个DHCP提供报文进行响应。从包中可以看出服务器IP地址为192.168.1.1,分配给主机的IP地址是192.168.1.103。该报文的事务ID是0x8100beb0,和上一个发现报文的事务ID是一样的。
另外,还可以从Option字段里获得IP地址租用期、子网掩码、路由信息等。
三、Request:DHCP请求
主机收到Offer报文后,用一个DHCP请求报文进行响应,此时和DHCP发现报文一样,都是使用源地址0.0.0.0和广播目的地址255.255.255.255。并且重新选择一个新的事务ID以及回显配置参数。如请求的IP地址等。
四、ACK:DHCP ACK应答
最后,服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。
至此,整个IP请求分配过程就完成了,客户端能够在租用期内使用DHCP分配的IP地址。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:15131次
排名:千里之外
原创:57篇
转载:12篇
(3)(7)(31)(1)(5)(3)(2)(5)(12)

我要回帖

更多关于 iptables 过滤dhcp 的文章

 

随机推荐