Search code examples
network-programmingnat

NAT punching implementation


I am trying to run a file sharing software behind NAT. As I am going through the papers on NAT Punching, I found it very difficult to implement since there are nearly 27 different implementation of NATs and hence I am facing a lot of difficulty in deciding how to start.

Which way should I implement it so that I can punch holes in most of the NATs?

Is this difficult to do in C?


Solution

  • You can check how NAT punching is implemented in popular RakNet open-source library (intended for game networking). It also provides an excellent description of NAT punching technique.