28 Responses

  1. michadar
    michadar June 30, 2010 at 2:07 PM |

    I have a question. What if many hosts share the same public ip adress?

  2. 32xseni
    32xseni June 21, 2011 at 9:06 PM |

    hello !
    so the client MUST use pwnat to connect to pwnat’server too ? If yes , so that’s a big problem, ’cause if I want to make a website server on the computer behind nat , every client has to use pwnat ???

  3. Corey
    Corey September 8, 2011 at 4:50 PM |

    I’m a little confused. I have Machine1 behind NAT1 and Machine2 behind NAT2. Machine1 is hosting a page on port 8080. How would I use pwnat to access Machine1’s hosted page from Machine2?

  4. yann
    yann October 7, 2011 at 4:43 PM |


    Thanks for making this example, however, I want to use an SSH server on machine B. This is still possible, right?

    Thanks in advance!

  5. Jonathan
    Jonathan January 19, 2012 at 1:16 PM |

    Great example. I wonder… because you can specify the remote host name, could you contact other hosts on the server network? Instead of specifying “localhost 22” to access a remote SSH server, could you specify “192.168.1.X 22” to attempt to contact 192.168.1.X on the server’s local subnet? If so, you could essentially use a pwnat server as a port forwarding service to access the entire subnet!

  6. Bala
    Bala January 20, 2012 at 4:25 AM |

    Can I somehow turn on verbose mode to see what happens ? I cannot connect for some reason 🙁

  7. Rob
    Rob July 19, 2012 at 6:38 PM |

    I tried the above example like you did but with no luck. That is what i had and what it did:
    – 2 PCs (Windows 7) behind different NATs
    – No firewalls (no local and no network firewall)

    Server side (internal IP:; external IP: 91.2.xxx.xxx) with a webserver on port 80
    Command: pwnat.exe -s 2222

    Output: Listening on UDP (looked quite well)

    Client side: (IP:
    Command: pwnat.exe -c 2222 91.2.xxx.xxx 2222 locahlost 80

    Output: Listening on TCP (something like that)

    So now i tried to connect to port 2222 at ( in the browser at the client side. Something like a time out appeared and it blocked nearly the whole internet traffic so that i was not able anymore to control the machine via TeamViewer.

    I even used google.com 80 instead localhost 80 but no difference. Neither an output at the client side nor at the server side was given. Did i make anything wrong?

  8. Rasha
    Rasha November 10, 2013 at 8:55 AM |

    Hi Sumit,

    I want to test pwnat but I no longer have access to the MS dev environment to build the Windows exe. Can you share yours? Pls email.


  9. Disa
    Disa August 26, 2014 at 5:09 PM |

    Great article!
    You mentioned that you are planning to write .NET library. Have you succeeded and willing to release the source? I need this to use in my project, and if I don’t find I will have to probably do it by my own

  10. Disa
    Disa August 30, 2014 at 3:29 PM |

    Thanks for the reply and suggested work around. The problem is that not everyone own IPv6 address yet or I am not up to date with news about IPv6.

  11. Disa
    Disa September 2, 2014 at 6:16 PM |

    Even if IPv6 is supported by OS does not mean it’s supported by ISP

  12. krembuk
    krembuk February 3, 2017 at 4:16 AM |

    Sumit, will pwnat work for multi layer of NAT?

    1. krembuk
      krembuk February 10, 2017 at 5:11 AM |

      no problem..

  13. Merrouche MOHAMED
    Merrouche MOHAMED February 18, 2017 at 12:19 PM |

    Great article,
    what is the instruction to make pwnat with NMAKE, thanks you

  14. xAddict3Dx
    xAddict3Dx April 24, 2017 at 12:01 AM |

    According to some comments on http://stackoverflow.com/questions/22985793/is-pwnat-still-working pwnat won’t work at present day anymore. Is there any alternative/successor (in the making)?

    Best regards,

Comments are closed.