首页 > 编程笔记 > TCP/IP笔记

获取DHCP服务器的配置信息

如果客户端有了 IP 地址,将不再发送 DHCP Discover 包。这时,如果要获取网络内 DHCP 服务器信息,可以使用 netwox 提供的编号为 179 的模块来实现。该模块通过向 DHCP 服务器广播发送一个 DHCP INFORM 包,以获取相关的配置参数。

DHCP 服务器接收到该数据包后,将根据租约查找相应的配置信息,并返回一个 DHCP ACK 消息。该消息包括相应的客户配置参数,但不包括分配的网络地址。

【实例】获取DHCP服务器详细的网络配置信息,执行命令如下:

root@daxueba:~# netwox 179

执行命令后将向 DHCP 服务器广播发送 INFORM 报文,同时会得到 DHCP 服务器返回的 ACK 报文。为了方便讲解,下面将信息进行拆分后分别讲解。

1) 发送的 INFORM 报文信息的输出信息如下:
I send a INFORM:
DHCP____________________________________________________________.
| op=request  hops=0    xid=52FEF936  secs=0    flags=0000   |
| client=192.168.59.133  your=0.0.0.0                        |
| server=0.0.0.0  agent=0.0.0.0                              |
| clienteth=00:0C:29:FD:DE:B8                                |      #客户端MAC地址
| sname:                                                     |
| file:                                                      |
| msgtype: inform                                            |
| 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 行表示 DHCP 客户端向 DHCP 服务器发送了 INFORM 报文,用来请求网络配置信息。

下面的信息为报文包含的信息。其中,xid 表示事务 ID 为 52FEF936;client 表示当前客户端的 IP 地址为 192.168.59.133;clienteth 表示当前客户端的 MAC 地址为 00:0C:29:FD:DE:B8。

2) 客户端收到 DHCP 服务器返回的 ACK 报文,并输出如下信息:
Server sent us this ACK:
DHCP____________________________________________________________.
| op=reply   hops=0    xid=52FEF936  secs=0      flags=0000    |
| client=192.168.59.133  your=0.0.0.0                          |
| 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                                     |      #服务器IP地址
| 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                                  |      #广播地址
| end                                                          |
|____________________________________________________          |
以上输出信息中,第 1 行表示 DHCP 返回了 ACK 报文。其中,xid 的值也为 52FEF936,子网掩码为 255.255.255.0,网关为 192.168.59.2。

3) 为了验证该命令发送的数据包,下面通过抓包进行查看,如图所示。

在获取 DHCP 服务器信息时,为了避免被发现,可以伪造 IP 地址和 MAC 地址。

例如,设置 IP 地址为 192.168.59.150,MAC 地址为 b1:b2:b3:0a:1a:3a。执行命令如下:

root@daxueba:~# netwox 179 -i 192.168.59.150 -e b1:b2:b3:0a:1a:3a

输出信息如下:
I send a INFORM:
DHCP____________________________________________________________.
| op=request  hops=0    xid=5D72AD9C  secs=0      flags=0000                |
| client=192.168.59.150  your=0.0.0.0                                       |
| server=0.0.0.0  agent=0.0.0.0                                             |
| clienteth=B1:B2:B3:0A:1A:3A
…                                                      #省略其他信息
其中,客户端的 IP 地址为伪造的地址 192.168.59.150,客户端的 MAC 地址为伪造的址 B1:B2:B3:0A:1A:3A。

所有教程

优秀文章