端口转换——如何将出站流量分散到随机端口?

端口转换——如何将出站流量分散到随机端口?

我希望能够进行 PAT,以便将给定目标端口的出站流量按每个 PDU 或每个数据包转换为一定范围内的某个随机端口。

目的是使出站流量“分散”在指定的端口范围内,类似于无线电传输的跳频原理......最好是,我希望这对上游应用程序是透明的。

一个示例场景是文件传输实用程序,它将分组数据流发送到目标端口为 9080 的主机。我想转换(甚至可能在本地主机 TCP 端口 9080 上监听)目标端口为 9080 的给定主机的所有流量,以便每个数据包都通过 49000 到 50000 之间的随机端口发送到给定主机。

进一步说明一下,我并不关心流量的源端口。我的目的是让发送方发送目的地端口“N”通过链路传送到接收方,该接收方正在监听来自目标端口“N”的流量。流量离开发送方后,我想将目标端口随机化为已知范围内的值...这样,网络上就会出现大量流量,这些流量的目标端口是随机的...因为范围是已知的,所以这些流量随后可以通过接收方端的防火墙或类似设备重新转换到目标端口“N”。

如同:

[N]         = packet with destination port 'N'

[A <=N=> B] = packet with destination port between A and B

                                     /--[49000 <=N=> 50000]--\
SENDER --[N]-[N]-[N]--> (RANDOMISER)<---[49000 <=N=> 50000]--->(UNDO)-[N]-[N]-[N]-->RECEIVER
                                     \--[49000 <=N=> 50000]--/

我希望在 Windows 和 Linux 平台上实现这一点。到目前为止,我找不到太多有用的信息或建议,因此任何建议或意见都将不胜感激。

答案1

除非应用程序指定了连接端口,否则 Windows 默认将传出客户端连接分配给第一个可用的 TCP 端口 > 1024。

您可以使用此处显示的 netsh 命令更改此行为的起始端口:http://www.windowsnetworking.com/kbase/WindowsTips/WindowsServer2008/AdminTips/Admin/DefaultDynamicPortRange.html因此,如果您愿意,可以将其设置为从 40000 开始,从 50000 结束。

在 Linux 中,你可以使用 sysctl 更改起始/结束端口行为: http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/

也就是说,使用这些技术,您将无法随机选择端口。如果您可以在不更改操作系统源代码的情况下更改该功能,我会感到惊讶,而且许多应用程序无法很好地使用该功能。

希望有帮助。

相关内容