为什么 Nmap 在我的 Windows 8.1 笔记本电脑上运行很慢?

为什么 Nmap 在我的 Windows 8.1 笔记本电脑上运行很慢?

Nmap 太慢了,在我的 Windows 8.1 笔记本电脑上几乎无法使用。

我使用的是 Nmap 6.40,在同一网络上的其他计算机上运行一个简单的检查需要一分钟多的时间,而这个检查只需几分之一秒。我尝试过使用不同版本的 Nmap 的其他几台计算机,但它们都在几分之一秒内得到了相同的结果。在我的笔记本电脑上尝试不同的扫描和不同的目标,结果相同。总的来说,这不是一台运行速度慢的笔记本电脑,核心 i7/16GB/SSD,其他应用程序运行速度足够快

这是 Nmap 在我的笔记本电脑上显示的内容(主机名等已更改):

C:\Users\colinp>nmap -p4730 target 

Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-20 14:28 GMT Standard Time
Nmap scan report for target (192.168.1.1)
Host is up (0.0013s latency).
rDNS record for 192.168.1.1: target
PORT     STATE SERVICE
4730/tcp open  unknown
MAC Address: 2C:76:8A:00:00:00 (Hewlett-Packard Company)

Nmap done: 1 IP address (1 host up) scanned in 79.92 seconds

C:\Users\colinp>

与同一网络上的示例 Ubuntu 计算机相比:

colin@ubuntu:~$ nmap -p 4730 target 

Starting Nmap 5.21 ( http://nmap.org ) at 2014-03-20 14:29 GMT
Nmap scan report for target (192.168.1.1)
Host is up (0.00044s latency).
rDNS record for 192.168.1.1: target 
PORT     STATE SERVICE
4730/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds
colin@ubuntu:~$

编辑:我刚刚注意到另一台主机所花费的时间非常相似,不确定这是否意味着什么:

C:\Users\colinp>nmap -p4730 target2

Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-20 14:47 GMT Standard Time
Nmap scan report for target2 (192.168.1.2)
Host is up (0.00013s latency).
rDNS record for 192.168.1.2: target2
PORT     STATE  SERVICE
4730/tcp closed unknown
MAC Address: 00:25:90:00:00:00 (Super Micro Computer)

Nmap done: 1 IP address (1 host up) scanned in 79.71 seconds

C:\Users\colinp>

尝试扫描不存在的主机速度更快,但变化很大,在 3 到 16 秒之间。同样,在 ubuntu 服务器上需要 0.03 秒。

在我的笔记本电脑上,名称解析似乎不是问题,nslookup几乎立即返回。


编辑:@bonsaiviking 建议的诊断输出:

C:\Users\colinp>nmap -d -sL target

Starting Nmap 6.40 ( http://nmap.org ) at 2014-03-20 16:40 GMT Standard Time
Winpcap present, dynamic linked to: WinPcap version 4.1.2 (packet.dll version 4.
1.0.2001), based on libpcap version 1.0 branch 1_0_rel0b (20091008)
--------------- Timing report ---------------
  hostgroups: min 1, max 100000
  rtt-timeouts: init 1000, min 100, max 10000
  max-scan-delay: TCP 1000, UDP 1000, SCTP 1000
  parallelism: min 0, max 0
  max-retries: 10, host-timeout: 0
  min-rate: 0, max-rate: 0
---------------------------------------------
mass_rdns: Using DNS server 192.168.x.12
mass_rdns: Using DNS server 192.168.x.11
mass_rdns: Using DNS server 192.168.1.254
mass_rdns: Using DNS server 192.168.2.1
mass_rdns: Using DNS server 192.168.x.12
mass_rdns: Using DNS server 192.168.x.11
mass_rdns: Using DNS server 192.168.x.12
mass_rdns: Using DNS server 192.168.x.11
Initiating Parallel DNS resolution of 1 host. at 16:41
mass_rdns: 52.89s 0/1 [#: 8, OK: 0, NX: 0, DR: 0, SF: 0, TR: 1]
Completed Parallel DNS resolution of 1 host. at 16:41, 0.00s elapsed
DNS resolution of 1 IPs took 52.90s. Mode: Async [#: 8, OK: 1, NX: 0, DR: 0, SF:
 0, TR: 1, CN: 0]
Nmap scan report for target (192.168.1.1)
rDNS record for 192.168.1.1: target
No data files read.
Nmap done: 1 IP address (0 hosts up) scanned in 53.36 seconds

IP 地址再次更改。列出的 DNS 服务器中,192.168.x.11192.168.x.12是我真正的 DNS 服务器。不知道其他服务器与此有何关系。当我这样做时,它们没有列出,ipconfig /all尽管以下奇怪的条目位于我与内部 Hyper-V 交换机的连接下:

   DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1

不知道这个问题是否与我运行的 Hyper-V 有关?另外,我没有主动禁用 IPv6,不知道这是否是导致这个问题的原因?


更多的诊断,IP 地址仍然模糊,希望始终如一......

C:\Users\colinp>nslookup -type=PTR 1.1.168.192.in-addr.arpa
Server:  dns-at-my-company.example.com
Address:  192.168.x.12

1.1.168.192.in-addr.arpa.co.uk
        primary name server = ns1.sedoparking.com
        responsible mail addr = hostmaster.sedo.de
        serial  = 2007021501
        refresh = 86400 (1 day)
        retry   = 10800 (3 hours)
        expire  = 604800 (7 days)
        default TTL = 86400 (1 day)

上一个命令缺少.。这个看起来更好:

C:\Users\colinp>nslookup -type=PTR 1.1.168.192.in-addr.arpa.
Server:  dns-at-my-company.example.com
Address:  192.168.x.12

1.1.168.192.in-addr.arpa     name = target

答案1

评论中已解决:Nmap 检测用于并行反向 DNS 解析的 DNS 服务器时出现问题。以下是诊断过程和最终解决方法:

首先,您需要确定 Nmap 扫描的哪个阶段会拖慢您的速度。nmap -p4730 target将执行单端口 TCP 扫描,但它也会执行名称解析(如有必要)、主机发现(“ping”)和反向 DNS 名称查找。了解您是否以管理员身份运行也很重要,因为如果 Nmap 没有足够的权限来使用最佳和最快的方法,它将对所有这些步骤使用不同的方法。运行这些单阶段扫描以确定哪个阶段是缓慢的阶段:

  1. nmap -d -n -Pn -p 4730 target- 仅端口扫描阶段。
  2. nmap -d -n -sn target- 仅限主机发现阶段。
  3. nmap -d -sL target- 仅限反向 DNS 解析阶段。

根据您的评论,我们确定慢速是反向 DNS 解析。添加标志-d显示 Nmap 选择了 4 个不同的 DNS 服务器,但其中只有 2 个有效。Nmap 的文档建议使用--dns-servers选项以逗号分隔的列表指定正确的选项。您还可以使用--system-dns操作系统自己的 DNS 解析器而不是 Nmap 的并行解析器。对于许多主机的扫描,这可能会比较慢,但几乎总是可以保证工作。这些选项在官方Nmap 网络扫描戈登·“费奥多尔”·里昂所著的书。

那么,我们的最终解决方法是确定您的 DNS 服务器的 IP 地址,然后使用--dns-servers 192.168.X.X,192.168.X.Y这些服务器的 IP 地址运行 Nmap。

答案2

Windows 上的 Nmap 不如 Linux 上的高效。

您可以通过双击nmap_performance.reg位于Nmap 目录,这将进行三处注册表更改,以增加为 Nmap 等应用程序保留的临时端口数量,并减少已关闭的连接被重新使用之前的时间。

要手动进行更改,请将以下三个注册表 DWORD 值添加到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters::

  1. MaxUserPort:设置一个较大的值,例如655340x0000fffe)。
  2. TCPTimedWaitDelay:设置最小值(0x0000001e)。
  3. StrictTimeWaitSeqCheck: 设置1因此TCPTimedWaitDelay被检查。

信息来源于nmap 站点

相关内容