如何使用外部网络的本地 IP 向 WLAN 内的设备发送 tcp 数据包?

Rif*_*mud 6 networking router wireless-networking port-forwarding wireless-router

我必须从 Internet 向正在侦听端口 9999 的 WLAN 中的设备发送命令。

设备本身只分配了本地 IP。

我也有 n (2-100+) 个具有相同程序的设备(侦听端口 9999)。

我知道所有设备的本地 IP,并且我知道将命令发送到哪个 IP。

如何通过网关路由器将命令从外部网络(云/移动设备)发送到特定的本地 IP?

我知道这可以通过在 WLAN 内部运行的服务器或专用网关设备来实现。但我很想知道这是否仅适用于无线路由器。

Spi*_*iff 12

在无线路由器的 NAT 网关设置中输入n 个端口映射(端口转发)。为方便起见,可以将公共端口与客户端的内部 IP 地址(主机号部分)加上前缀(例如 50000)相关联。

因此,假设您在私有地址 10.0.0.2 到 10.0.0.202 上有客户端计算机。像这样输入端口映射:

[无线路由器公网IP]:50002 -> 10.0.0.2:9999
[无线路由器公网IP]:50003 -> 10.0.0.3:9999
…
[无线路由器公网IP]:50202 -> 10.0.0.202:9999

现在,在您的客户端软件中,要访问每台主机,您始终指定 NAT 网关(您的无线路由器)的公共 IP 地址,但您可以根据要访问的客户端更改指定的端口。

大多数客户端软件允许您指定端口,方法是在 URL 中对其进行编码,例如http://example.com:50001/,或者将其指定为命令行参数,通常在 a-p-P选项之后。检查您的工具的手册页。

  • @RifatMahmud,如果您想要正确的答案,您应该发布正确的问题,我建议您编辑您的问题,因为当您向我们展示问题时,这是正确的答案。 (4认同)
  • @RifatMahmud 65535 个可能端口中的 200 个不到可用端口的 1%。 (2认同)

t0d*_*d0r 5

您有两种选择来完成您的任务

  1. 使用 VPN 访问 WiFi 路由器 - 这样您的外部设备需要使用一些可用的 VPN 协议(例如 PPTP),这样设备将路由到内部 Wifi 网络,然后您可以直接连接到每个 IP。
  2. 使用Socks - 您需要找到具有袜子代理支持的 wifi 路由器。

第一种方法更容易完成,而无需更改您的应用程序代码。您可以将基于DD-WRTMikrotik的 Wifi 路由器用于这两个选项。对我来说 Mikrotik 更容易设置为 VPN 服务器。这里有更多关于Socks实现的信息。


Pet*_*ris 2

除了路由器之外还需要其他东西

根据定义和常见用法,路由器根据指示的目标地址和端口而不是其他因素来路由数据包。

无论您使用什么技术来发送它,当单个 TCP/IP 数据包从外部连接到达路由器时,路由器必须决定如何处理该单个数据包,将其发送到数百个内部设备中的哪一个。应该发送 - 并且需要信息才能做到这一点。

它不能使用 IP 地址信息,因为在您的设置中,您只有一个外部 IP 地址,这将是路由器的地址 - 对于您想要以不同方式路由的所有数据包来说,该地址都是相同的。

正如其他答案中所建议的,它可以使用 TCP 端口信息,但这显然是不可接受的。

可以使用数据包有效负载,但它不会这样做。常用的消费者无线路由器不会对每个数据包有效负载进行检查来决定以任何方式进行路由。您可以制作自定义设备或代码来处理该问题,这实际上与“在 WLAN 内运行的服务器”相同,这显然也是不可接受的。

没有其他信息 - 路由器可能会根据IP 数据包标头中的其他字段做出一些决定,但这些字段要么根本无法满足您的需求,要么不切实际 - 例如,您可以根据IP 地址设置路由并发送具有欺骗源地址的数据包,但它会遇到与仅使用端口相同的配置问题。