[Twisted-Python] Punching a firewall with Twisted?

Stefan Reich wertiges.produkt at googlemail.com
Thu Jun 17 12:37:32 EDT 2010

Hi Glyph! (Wait, is that really a first name...? :))
> I'm not sure about Deluge, but <http://divmod.org/trac/wiki/DivmodVertex> does some NAT hole-punching.  It does it via sending UDP packets though, not by communicating directly with your router.
Yeah, I found that too... it looks quite interesting, but as you say, it 
is UDP-based. I know that there is a working TCP-solution. As I said, 
Deluge does it, and for example, the original Bittorrent client does it too.

I actually verified this on my machine: With a trick, I can exploit 
these clients for my purposes.

I open a server socket in my own program on port 15667. Then I start 
Bittorrent. It complains because it can't open the server socket - but 
it does open the firewall, and the firewall stays open as long as the 
application runs. So voila, I can now access my server from outside. It 
is actually open right now, you can try if you like:

    telnet 15667

> Good luck; this is always an interesting problem ;).
Yeah... it's actually something that begins to really annoy me. Why are 
we put behind these firewalls? And why is it so complicated to open 
ports on them? It shouldn't be. Let's change that. We have the means!

Every internet user should be able to run a server. This is my credo!


More information about the Twisted-Python mailing list