源代码中的防火墙旁路技术

时间:2011-02-16 09:40:33

标签: c++ networking p2p firewall

我打算编写一个需要绕过防火墙的p2p软件。我知道有许多方法可以使用许多第三方工具绕过防火墙,就像我的谷歌搜索一样。但是,如何编写一个超出防火墙以连接节点的p2p软件,我无法获得太多结果。

所以我的问题是要知道我可以在源代码中使用的算法或技术绕过防火墙 - 包括NAT防火墙和软件/个人防火墙。

请帮助我了解如何根据您的建议或过去的经验来做到这一点。

由于

4 个答案:

答案 0 :(得分:3)

也许这会对你有帮助吗? http://samy.pl/pwnat/

你也可以看看实施UPnP。

答案 1 :(得分:2)

首先,如果可以转发防火墙中的端口,则应使用uPnPInternet Gateway Device Protocol。如果不可用,请使用TCP hole punching techniques

答案 2 :(得分:0)

IIRC,一种运行良好的技术是在端口80上通过普通旧HTTP运行所有内容。这是有效的,因为大多数防火墙都会通过HTTP流量来允许Web浏览。

与专门针对p2p的方法相比,它不是一种非常有效的方法,并且它不能保证工作,因为有一些防火墙足够聪明,可以检测HTTP何时以这种方式被滥用。有些人还会限制访问端口80,以防止此类事情发生。

答案 3 :(得分:0)

防火墙倾向于允许传出流量但阻止传入流量,除非存在预先存在的会话。对于TCP,这很容易,一旦建立连接,防火墙将允许双向连接。

对于UDP,这有点棘手,因为没有会话的概念。诸如基于UDP的DNS之类的协议是请求响应协议,因此一旦客户端发送请求,就期望来自服务器的响应。防火墙将在给定端口上注册请求,并允许响应在稍后的时间内返回。

所以一个技巧是,如果一个人期望UDP流量是发送少量垃圾数据。这将被服务器忽略,但希望打开防火墙以允许传入流量。

相关问题