nmap 需要几分钟扫描本地主机

nmap 需要几分钟扫描本地主机

我正在尝试运行nmap以查看我的计算机已打开哪些端口,作为以下操作的一部分本指南将指导您如何设置 docker。 我用

sudo nmap -sU -sS -T4 --defeat-rst-ratelimit -p 1-65535 localhost

这需要很长时间。我将其减少到只有 500 个端口,大约需要 45。在指南中,我看到扫描所有 65000 个端口仅需约 3 秒。我不知道发生了什么。

系统是全新的 Centos 7.4.1708(昨晚安装)。无论如何,它都不是一台很棒的笔记本电脑(大约 2010 年),但它的速度慢了这么多数量级,这毫无道理。我使用的是消费级路由器,但我认为这没什么关系,因为我正在进行本地主机扫描。

非常感谢任何帮助/建议。我试过了这个问题中建议的命令

nmap -d -n -Pn -p 4730 localhost

nmap -d -n -sn localhost

nmap -d -sL localhost

和 的响应非常快,第一个需要 0.07 秒,其余的需要 0.01 秒。单个端口扫描相当快,但对于大量端口来说,速度非常慢。此外,删除--defeat-rst-ratelimit和 并-T4没有明显改变速度。

这个问题的答案可能非常明显,因为我对网络几乎一无所知。

答案1

Nmap 不是用于此目的的最佳工具。我喜欢 Nmap,我的全职工作就是研究和推广它,但在这种情况下,它不是完成这项工作的最佳工具。Linux 内核会详细记录哪些端口是打开的以及哪些进程打开了这些端口,常用的命令行工具可以查询这些信息。对您最有用的命令是,netstat -tulnp它列出了所有正在监听的 ( -l) TCP ( -t) 和 UDP ( -u) 端口号 ( -n) 及其关联的进程 ID ( -p)。有些系统正在弃用 netstat 命令,因此您可以使用ss反而:ss -tunpo state listening

至于 Nmap 为何花费如此长的时间,最有可能的原因是 UDP 扫描 ( -sU)。Nmap 希望找到哪些端口是打开的,哪些是关闭的,但 UDP 不需要来自打开端口的响应数据包。相反,它会发送 ICMP 端口不可达消息来响应对关闭端口的探测。Linux 限制了这些 ICMP 消息的速率,因此 Nmap 必须放慢速度才能区分“打开端口,无响应”静默和“关闭端口,但还不到发送 ICMP 消息的时候”静默。

相关内容