Author

Topic: Who can spare some boxes for testing NAT traversal code? (Read 788 times)

hero member
Activity: 784
Merit: 500
I have a home machine behind a NAT I can spare at least some of the time (although it is on a dynamic IP, and not guaranteed up 24/7). I am willing to run a python script after inspecting it for security flaws, have it log results to a file somewhere, and then send you the contents of that log.
newbie
Activity: 8
Merit: 0
Plz read whole thread.

I'm coding my own peer to peer network and I've noticed there aren't any good libraries for the most simple tasks. What I mean by simple tasks is getting two peers to find each other and to reliably connect. This isn't as simple as it sounds because most peers are behind a router that does NAT and this means you need to do port forwarding to accept inbound connections, which frankly isn't a solution for the average user.

So what I'm doing at the moment is writing cross-platform Python code which uses a number of techniques to connect two peers. I've already written a simple class to forward arbitrary ports with UPnP - all automated with no outside dependencies. My class is a single module that works like this: UPnP().forward_port("TCP", 15666, "192.168.0.5") - (specify destination port as the forth param if its different from source) - it couldn't be easier.  I'm also including code for NAT-PMP which can be used for port forwarding by some routers that don't support UPnP. Finally, I'd like to be able to create a simple implementation of TCP hole punching for developers that works cross-platform and is properly documented. This technique has been well documented in academic papers and RFCs, but has yet to be widely used in software.

The reason I started this thread is because I need boxes to test my code. NAT traversal code by definition requires more than one peer behind a NAT and I only have access to my home connection. Even with multiple servers I cannot easily simulate the diverse NAT environments that will be in use in the wild (or ensure it even works when it comes to the real thing.) So I'm asking if anyone can contribute a spare box behind a NAT so I can work on the code. I only need access to a shell behind a NAT (any NAT / router - the more, the merrier) and I can do the work. If trust is an issue, feel free to cut off anything I don't need and heavily monitor the box.

Why should I help?

If I'm successful, this work may have implications for improving the connectivity in Bitcoin as well as in peer to peer networks in general. Not to mention developers will get a simple library for writing peer to peer programs, with the potential of ports to other languages and (possibly) the eventual inclusion in Bitcoin Core (assuming core devs think it's a good idea.)

Exceeding too long; I have declined to read further

Writing open source library in Python for simplifying peer to peer connectivity, and I need boxes for testing. If anyone wants to help then please keep this thread bumped and/or message me with node details.
Jump to: