如何从互联网直接连接到 NAT 后面的设备?

信息安全 网络 防火墙 纳特
2021-09-10 05:24:15

我们在全球互联网上有一个 IP 地址:“A”

我们只能访问“A”。

我们在执行 NAT 的路由器后面有一个网络:192.168.1.0/24

该 NAT 后面有一个客户端:“B”

我们无权访问“B”和“NAT”路由器。

目标:用“A”直接到达“B”。

我们不能使用端口转发或 UPnP 等。

问题:达到“B”的诀窍是什么?如果路由器有状态防火墙,而不仅仅是 NAT,这个技巧可以避免!

我们在想,当“B”浏览网页时,它会上网。当它收到回复时,做 NAT 的路由器需要决定“B”拥有哪个 NATed IP?(NATed 网络后面可能有更多机器)。为此,NAT 路由器也使用端口信息。也许如果我们/他们使用 UDP,我们可以尝试所有 IP 为“A”的非特权端口向“B”发送数据包?

NAT路由器只是一个简单的soho路由器。(原始问题:试图证明 NAT 不是防火墙,但我们需要证据)

3个回答

在一个简单的答案中(如果我理解正确的话),是的。您可以通过使用反向 SSH 隧道来完成此操作。

您需要首先使用 socks 代理(可以通过 Putty 完成)在“B”上设置隧道,然后您需要通过“A”为请求路由流量。

当响应返回时,它们将被引导通过“A”,回到“B”;基本上达到“B直接与A”。

以下是完成此任务的一些额外资源: http ://www.thegeekstuff.com/2013/11/reverse-ssh-tunnel https://unix.stackexchange.com/questions/46235/how-does-reverse-ssh-隧道工作

SSH 反向隧道概念

SSH 反向隧道概念2

实际上,您的计划是否可行,具体取决于 NAT 设备的工作方式。

通常,NAT 设备将内部 IP 和源端口映射到目标 IP 和端口,以便它只允许该 IP 和端口与内部 IP 通信。这使得 NAT 成为一个非常粗糙和差的状态防火墙。

但此功能不是 NAT 的强制部分,这意味着任何供应商都可以选择实施或不实施此方法。

这意味着,如果内部网络上的设备响应连接尝试,理论上可以扫描 NAT 设备的端口并发现内部网络这是一个很大的“如果”系列。但值得。

所以,是的,仅 NAT 是不够的,因为您不知道 NAT 是如何实现的。状态防火墙提供纵深防御来覆盖这个潜在的未知漏洞。NAT 不是一种安全技术,不应被视为一种保护机制。

您可以使用 AnyDesk(版本 5.2+),它允许您在客户端之间建立 TCP 连接。

我用它通过 Internet 将我的客户端 PC 连接到 Team Foundation Server (TFS)。服务器和客户端在 NAT 之后。我将本地和远程端口设置为“8080”,我可以使用客户端上的此地址从客户端连接到服务器:“ http://localhost:8080/tfs/

参考:TCP-Tunneling-AnyDesk