dhcp协议_网络基础知识:DHCP协议之获取IP地址

一次性付费进群,长期免费索取教程,没有付费教程。

进微信群回复公众号:微信群;QQ群:460500587

 教程列表  见微信公众号底部菜单 |   本文底部有推荐书籍 

28840e7eb67a9afdafc8713e3cac1d92.png

微信公众号:计算机与网络安全

ID:Computer-network

默认情况下,都是由操作系统完成IP地址请求过程的。用户也可以手动请求IP地址。netwox工具提供了编号为171的模块,它可以充当DHCP客户端向DHCP服务器请求IP地址。

模拟DHCP客户端从DHCP服务器获取IP地址。执行命令如下:

root@daxueba:~# netwox 171

执行命令后将完成获取IP地址的整个过程,并输出每个过程相关的信息。为了方便介绍,下面将信息进行拆分,然后分别介绍。

1)发现阶段的输出信息如下:

I send a DISCOVER:

DHCP____________________________________________________________.

| op=request  hops=0    xid=B8ED8552  secs=0      flags=0000

| client=0.0.0.0  your=0.0.0.0

| server=0.0.0.0  agent=0.0.0.0

| clienteth=00:0C:29:FD:DE:B8

| sname:

| file:

| msgtype: discover

| clientidtype: 1

| clientid: 000c29fddeb8

| reqlist[0]: 1 (subnetmask)

#下面为客户端要请求的列表信息

| reqlist[1]: 3 (gateways)

| reqlist[2]: 4 (timeservers)

| reqlist[3]: 5 (nameservers)

| reqlist[4]: 6 (dnsservers)

| reqlist[5]: 7 (logservers)

| reqlist[6]: 9 (lprservers)

| reqlist[7]: 12 (hostname)

| reqlist[8]: 15 (domainname)

| reqlist[9]: 28 (broadcastad)

| reqlist[10]: 31 (performroutdisc)

| reqlist[11]: 33 (staticroutes)

| reqlist[12]: 40 (nisdomain)

| reqlist[13]: 41 (nisservers)

| reqlist[14]: 51 (ipadleasetime)

| reqlist[15]: 58 (renewaltime)

| reqlist[16]: 59 (rebindingtime)

| reqlist[17]: 64 (nispdomain)

| reqlist[18]: 65 (nispserver)

| reqlist[19]: 69 (smtpservers)

| reqlist[20]: 70 (pop3servers)

| reqlist[21]: 71 (nntpservers)

| reqlist[22]: 72 (wwwservers)

| reqlist[23]: 74 (ircservers)

|___________________________________________________________

以上输出信息中,第1行表示客户端发送了一个Discover包,用来向服务器请求租用的IP地址。下面的信息为对应的报文信息。其中,xid表示事务ID为B8ED8552,client表示客户端IP地址为0.0.0.0,your表示此时客户端还没有IP地址,因此也为0.0.0.0。

2)提供阶段的输出信息如下:

Server sent us this OFFER:

DHCP____________________________________________________________.

| op=reply   hops=0    xid=B8ED8552  secs=0      flags=0000

| client=0.0.0.0  your=192.168.59.131

| server=192.168.59.254  agent=0.0.0.0

| clienteth=00:0C:29:FD:DE:B8

| sname:

| file:

| msgtype: offer

| serverid: 192.168.59.254

| ipadleasetime: 1800

| subnetmask: 255.255.255.0       |      #子网掩码

| gateways[0]: 192.168.59.2         |      #网关

| dnsservers[0]: 192.168.59.2       |      #DNS服务器地址

| domainname: 'localdomain'      |      #域名

| broadcastad: 192.168.59.255     |      #广播地址

| renewaltime: 900                       |      #更新时间

| rebindingtime: 1575                  |      #重新连接时间

| end

|_____________________________________________________

Server 192.168.59.254(00:50:56:ED:87:BC) proposes address 192.168.59.131

以上输出信息中,第1行表示服务器向客户端返回了提供IP地址租约的数据包。下面的信息为对应的报文信息。其中,xid表示事务ID为B8ED8552,与发现阶段事务ID相同;your表示服务器给客户端提供的IP地址为192.168.59.131;server表示此时服务器的IP地址为192.168.59.254。从输出信息中还可以看到服务器为客户端提供的子网掩码、网关、DNS服务器地址等信息。输出信息的最后一行为总结信息,表示服务器192.168.59.254为客户端提供的IP地址为192.168.59.131。

3)选择阶段的输出信息如下:

I accept previous OFFER:

DHCP____________________________________________________________.

| op=request  hops=0    xid=B8ED8552  secs=0      flags=0000

| client=0.0.0.0  your=0.0.0.0

| server=0.0.0.0  agent=0.0.0.0

| clienteth=00:0C:29:FD:DE:B8

| sname:

| file:

| msgtype: request

| clientidtype: 1

| clientid: 000c29fddeb8

| requestedipad: 192.168.59.131   |      #选择请求的IP地址

| serverid: 192.168.59.254              |      #服务器IP地址

| reqlist[0]: 1 (subnetmask)            |      #下面为请求的其他信息

| reqlist[1]: 3 (gateways)

| reqlist[2]: 4 (timeservers)

| reqlist[3]: 5 (nameservers)

| reqlist[4]: 6 (dnsservers)

| reqlist[5]: 7 (logservers)

| reqlist[6]: 9 (lprservers)

| reqlist[7]: 12 (hostname)

| reqlist[8]: 15 (domainname)

| reqlist[9]: 28 (broadcastad)

| reqlist[10]: 31 (performroutdisc)

| reqlist[11]: 33 (staticroutes)

| reqlist[12]: 40 (nisdomain)

| reqlist[13]: 41 (nisservers)

| reqlist[14]: 51 (ipadleasetime)

| reqlist[15]: 58 (renewaltime)

| reqlist[16]: 59 (rebindingtime)

| reqlist[17]: 64 (nispdomain)

| reqlist[18]: 65 (nispserver)

| reqlist[19]: 69 (smtpservers)

| reqlist[20]: 70 (pop3servers)

| reqlist[21]: 71 (nntpservers)

| reqlist[22]: 72 (wwwservers)

| reqlist[23]: 74 (ircservers)

|_________________________________________________

以上输出信息中,第1行表示客户端接收了服务器提供的地址租约。下面的信息为对应的报文信息。其中,xid表示事务ID为B8ED8552;由于客户端选择了要请求的IP地址,但是没有真正获取到IP地址,因此client和your均为0.0.0.0;requestedipad表示客户端选择的IP地址为192.168.59.131。serverid表示服务器的IP地址为192.168.59.254。

4)确认阶段的输出信息如下:

Server sent us this ACK:

DHCP____________________________________________________________.

| op=reply   hops=0    xid=B8ED8552  secs=0      flags=0000

| client=0.0.0.0  your=192.168.59.131

| server=192.168.59.254  agent=0.0.0.0

| clienteth=00:0C:29:FD:DE:B8

| sname:

| file:

| msgtype: ack

| serverid: 192.168.59.254

| ipadleasetime: 1800

| subnetmask: 255.255.255.0      |      #客户端的子网掩码

| gateways[0]: 192.168.59.2        |      #客户端的网关

| dnsservers[0]: 192.168.59.2      |      #客户端的DNS服务器

| domainname: 'localdomain'

| broadcastad: 192.168.59.255

| renewaltime: 900

| rebindingtime: 1575

| end

|_________________________________________________

Server 192.168.59.254(00:50:56:ED:87:BC) gave address 192.168.59.131

Press q to quit.

以上输出信息中,第1行表示服务器确认了客户端要租约的IP地址信息,客户端可以使用请求的IP地址了。下面的信息为对应的报文信息。其中,your表示客户端可以租用的IP地址为192.168.59.131;其他信息给出了客户端使用的子网掩码、网关、DNS服务器地址等。输出的最后一行信息表示用户可以使用快捷键q退出。如果退出,则客户端将不再租用这个IP地址,会释放该地址。

5)为了确认模拟客户端从服务器上是否获取到了IP地址,可以通过抓包进行验证,如图1所示。其中的4个数据包就是获取IP地址的4个阶段的数据包。

0c1994a14b038669101f13d292c16c0e.png

图1  捕获的数据包

6)如果使用了快捷键q退出,将产生释放地址的数据包。输出信息如下:

I RELEASE the address:

DHCP__________________________________________________________.

| op=request  hops=0    xid=CC6236A1  secs=0      flags=0000

| client=192.168.59.131  your=0.0.0.0

| server=0.0.0.0  agent=0.0.0.0

| clienteth=00:0C:29:FD:DE:B8

| sname:

| file:

| msgtype: release

| serverid: 192.168.59.254

| clientidtype: 1

| clientid: 000c29fddeb8

|___________________________________________________________

以上输出信息,第1行表示客户端释放了IP地址。下面的信息为对应的报文信息。其中,xid的值为CC6236A1,这与获取IP地址时所产生的事务ID不同;client表示客户端要释放的IP地址为192.168.59.131。

7)通过抓包捕获的释放地址数据包如图2所示。

ca7a1ed2a7cb407d3cfa4266b89d0245.png

图2  释放地址数据包

8)从DHCP服务器上获取IP地址时,为了隐藏真实的MAC地址,可以伪造虚假MAC地址。例如,设置假MAC地址为01:02:03:A1:A2:A3。执行命令如下:

root@daxueba:~# netwox 171 -e 01:02:03:a1:a2:a3

输出信息如下:

I send a DISCOVER:

DHCP____________________________________________________________.

| op=request  hops=0    xid=BDC49614  secs=0      flags=0000

| client=0.0.0.0  your=0.0.0.0

| server=0.0.0.0  agent=0.0.0.0

| clienteth=01:02:03:A1:A2:A3

···     #省略其他信息

从输出信息报文中可以看到,此时客户端的MAC地址为假的地址01:02:03:A1:A2:A3。

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值