• 使用DHCP协议获取IP地址

    默认情况下,都是由操作系统完成 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 地址,可以通过抓包进行验证,如图所示。

更多...

加载中...