2009-10-26 63 views
2

我对至少试图为我的高级项目实施NAT突破非常感兴趣。 (我正在做一个网络API)。 这甚至不是我的项目的要求,只是我的兴趣。 我知道它是如何工作的基础知识,如果我错了,请纠正我: 两个客户端连接到一个不在NAT后面的服务器,并且知道这两个客户端的IP,告诉客户端连接到彼此在同一时间。因此“突破”。测试NAT突破代码

这似乎不是非常容易或非常难以编码。 但是,我坚持的部分是对此的测试。我能用一台路由器/一台NAT和三台可用电脑进行合理设置吗?

感谢您的任何建议!

+0

我很想听听你了解这个anyhting。 – Nate 2009-10-28 18:45:59

+0

如果/当我这样做时,我会尽力记得回到这里。 :) – bobber205 2009-10-28 23:43:14

回答

1

在NAT破解的代码/理论方面,我无法提供建议,但我可以对建立测试环境提出一些建议。

您可以下载m0n0wall的副本,并在虚拟PC映像(都是免费的)中运行它。这会给你第二台路由器无法购买任何额外的硬件。有了这个额外的路由器,您可以为您的两个客户端创建一个单独的子网。

另一个更容易掌握的选项是简单地拾取第二个路由器,你可以得到一个很好的一个很便宜。

然后像现在这样设置现有的路由器和服务器,即192.168.1.x/24子网;然后将第二台路由器(m0n0wall /硬件路由器)设置为192.168.2.x/24子网,并将第二台路由器的“互联网”端口插入第一台路由器的“PC”端口之一。然后将两个客户端插入第二个路由器。

(我知道那是有点混乱,评论,如果你不能按照我的意思)

1

让我看看我是否有这样的笔直。你有两个都在NAT后面的客户端和一个不是的服务器。两个客户端都连接到服务器,并通知其他公共IP地址。由于每个目标都有一个目的地,因此它们与服务器断开连接并直接通过各自的NAT盒互相连接。这是你的想法吗?如果是这样,我可能会给你一些坏消息。

为了完全起作用,您必须在每个NAT配置中设置专用端口,以将至少一个外部端口转发到预定义的内部IP地址/端口号。在通用的NAT设置中,传出连接请求将被NAT捕获,这将打开一个临时的外部端口。该外部端口号仅用于与该一个始发地址和端口的通信。当连接关闭时,该外部端口将消失,稍后将重新分配给其他连接。因此,如果两个客户端都与服务器通话并断开连接,则服务器发送的信息现在无效。

假设你已经以某种方式解决了这个问题,将两个客户端连接到NAT的“内部”一侧并将服务器PC连接到“外部”一侧应该相当容易。然后你必须希望你的NAT盒子足够聪明,可以将数据包从一个本地外部端口循环回另一个。我确信netfiler可以这种方式进行配置,但我怀疑家庭互联网“路由器”(例如,Linksys,NetGear等)会这样做。

+0

感谢您的信息。我知道在同一个局域网上可能会遇到很多障碍。我可能会尝试继续这样做,但是用我的资源,我可能不会向我的教授做出任何承诺吧? – bobber205 2009-10-26 23:26:41