pwnat is a tool that enables direct communication between clients and servers that are each behind separate NATs without requiring port forwarding, third-party services, or router configuration.
The tool solves the problem of establishing peer-to-peer connections across NAT boundaries by exploiting properties of NAT translation tables. Its approach uses a two-phase technique: the server continuously sends ICMP echo requests to a fixed address, and when a client wants to connect, it sends an ICMP Time Exceeded packet back to the server containing the original packet. This allows the server to learn the client's public IP address without prior knowledge. Once both endpoints know each other's public addresses, they can establish direct communication by crafting packets that traverse the NAT translation tables, effectively punching through the firewall without spoofing or DNS manipulation.
The tool suits developers who need to run services behind NATs without administrative access to routers or the ability to configure port forwarding. It works whether one or both endpoints are behind NATs, and can tunnel any TCP-based service including HTTP, SSH, FTP, or game servers. The README indicates the tool will work behind many corporate NATs and firewalls but acknowledges it will not work behind all of them, so testing in your specific environment is necessary before relying on it for production use.
Development activity on the project appears minimal, with no recent commits or active maintenance indicated in the repository details provided.