我正在尝试在不使用 DHCP 的网络上查找一个空闲的 IP 地址。我决定使用 Nmap 从 10.0.5.0 到 10.0.5.255 进行一次密集扫描。(我知道这不是查找未使用 IP 地址的最佳方法,但对于这种情况来说已经足够了。不过我愿意接受建议。)我在不同的子网上,我不能 100% 确定我的扫描经过了什么(防火墙、NAT 等)。
每个 IP 地址都显示端口 113/tcp 已关闭,包括未使用的 IP/死主机。这使得我的结果很丑陋并且很难挑选。
- 有没有办法跳过 Nmap 中扫描这个端口?
- 为什么即使在死去的宿主身上也会显示这种情况?
答案1
有没有办法跳过 Nmap 中扫描这个端口?
是的。看这里(为方便起见,在此转载):
您可以使用逗号作为分隔符来分隔两个不同的端口范围。例如,在您的例子中,您可以给出以下内容
$ nmap 24.0.0.0/24 -p 1-79,81-65535
因此,通过这种方式,我们就省略了对 80 端口的端口扫描。
为什么即使在死去的宿主身上也会显示这种情况?
在您的路由链中,您可能有一个路由器/强制代理/状态防火墙,它会执行某种数据包检查并向您的主机返回实际响应,试图告诉您端口已被阻止。它甚至可能在发送此响应之前不检查 IP。
简而言之,除非使用强加密,否则您不能假设从网络收到的任何响应实际上都来自您要求到达的端点。任何“中间人”都可以发回虚假请求,无论是告诉您“您无权这样做!”还是只是一些错误配置。发生这种情况的实际情况是极其具体到您的硬件/软件配置,以及您的 ISP 等——基本上与您的网络设置相关的所有内容。
答案2
113/tcp 是ident
服务,它曾经被用来识别特定 TCP 连接后面的用户。由于 ident 作为服务器运行,因此无法在 NAT 设备后面访问它。如果不进行任何进一步的配置,发送到 NAT 设备后面的客户端的 ident 请求将会丢失,并且请求将会超时。当远程服务器尝试识别无法访问的 NAT 设备后面的客户端时,这可能会导致较长的连接延迟。
许多 NAT 设备、防火墙和其他网络设备不会浪费所有时间在超时的 ident 请求上,而是简单地为所有到端口 113 的传入连接返回 TCP RST。这使得 ident 请求可以快速终止,每个人都可以继续他们的生活。
要跳过某个特定端口,您可以提供有效端口范围,忽略该端口。在本例中:-p 1-112,114-1024
将扫描从 1 到 1024 的所有端口,忽略 113。目前,您可以指定比所需更多的端口,然后将它们限制为X最常打开的是 端口。和--top-ports X
之间的这种交互记录不明确,--top-ports
-p
未来可能会改变。