使用 Nmap 扫描端口转发?

信息安全 地图 路由器 网络扫描仪 港口
2021-08-31 13:17:19

我已经在我的路由器上启用了端口转发,以便使用 Nmap 进行一些测试。端口 4245 上的内部 IP 地址 10.0.0.10 正在发送到端口 4245 上的公共 IP 地址。我可以使用x.x.x.x:4245

但是,Nmap 报告端口 4245 将被关闭。可以肯定的是,我已经指定了端口号并禁用了主机发现。我已经通过 TCP 和 UDP 尝试过这个。我尝试过的命令sudo nmap -sS -Pn -p 4245 x.x.x.xsudo nmap -sU -Pn -p 4245 x.x.x.x

这两个结果都显示端口 4245 已关闭。

注意:x.x.x.x是我的公共 IP 地址。

2个回答

长答案,请参阅下面的TL;DR

我认为这不是 Nmap 问题,而是端口转发问题。我想你是从本地网络扫描的(如果不是这样,请忽略这个)。

出于一个非常简单的原因,端口转发通常在本地网络中不起作用。假设这是您的网络:

(A)--+
     |                    (           )
     |---(Rpr--R--Rpu)---(  Internet   )---(X)
     |                    (           )
(B)--+

A 和 B 是您本地网络中的两台计算机,都具有私有 IP 地址,R 是您的路由器(执行 NAT 和端口转发),在您的 LAN 上有一个公共地址 (Rpu) 和一个私有地址 (Rpr)。X 是 Internet 上的计算机,具有公共地址。

您已在 R 上配置端口转发,以便将到达 Rpu:4245(这意味着 IP 地址 Rpu,端口 4245)的数据包转发到 A:4245。

当 X 向 Rpu:4245 发送一个数据包时,它到达 R,R 将目标地址转换为 A:4245 并将数据包路由到 A。当 A 应答时,它从 A:4245 向 X 发送一个数据包。这个数据包被发送到 R,因为它的目的地在 LAN 之外,而 R 是网关。R把source从A:4245改成Rpu:4245,把包路由到X,作为Rpu:4245到X的包到达X,一切OK。

现在当 B 向 Rpu:4245 发送一个数据包时,它会将它发送给 R(因为 Rpu 在 LAN 之外,而 R 是路由器)。假设 R 仍然进行端口转发,它将目的地设置为 A:4245 并将数据包(从 B 到 A:4245)路由到 A。当 A 应答时,它从 A:4245 向 B 发送数据包。这一次它不会将数据包发送到 R,而是直接发送到 B,因为 B 在 LAN 上。数据包作为从 A:4245 到 B 的数据包到达 B,因此不能看作是从 B 到 Rpu:4245 的数据包的答案,源地址不匹配。

如果 R 也将源地址更改为 Rpr(或 Rpu,或 LAN 外的任何地址),这可能会起作用,因为在这种情况下,A 会将答案发送给 R 并且 R 可以反向翻译地址,但这可能不是案件。

TL;博士。从 LAN 外的计算机运行测试:(nmap -sP4245 -p 4245 x.x.x.x指示-sP4245Nmap 在 ping 扫描期间使用 SYN 数据包到端口 4245)。在您的 LAN 中,您只能通过扫描(使用相同的选项)您的私人地址来检查端口是否打开,但这会使端口转发设置未经测试。

如果 nmap 正在报告 TCP 端口,closed这意味着它在尝试启动与服务的连接时得到了响应 (RST),如果它没有收到响应,您将得到一个filtered通常意味着“我什么都没得到”的结果回来,所以我不知道发生了什么”。

通常,这发生在端口打开但没有任何东西在上面运行(或者没有任何东西在上面运行以响应收到的请求)的情况下

关于你的问题的一些想法

1)您从哪里进行端口扫描?通常我不会尝试从网络内部扫描您的外部 IP 地址,NAT 可能会因此而感到困惑。

2) 如果您尝试从内部网络扫描内部 IP 地址(10.0.0.10),结果如何?你在那个端口上得到一个开放的响应吗?