I'm using netcat as a backend to shovel data back and forth for a program I'm making. I tested my program on the local network, and once it worked I thought it would be a matter of simply forwarding a port from my router to have my program work over the internet. Alas! This seems not to be the case.
If I start netcat listening on port 6666 with:
nc -vv -l -p 6666
,
then go to 127.0.0.1:6666
in a browser, as expected I see a HTTP GET request come through netcat (and my browser sits waiting in vain). If I go to my.external.ip.address:6666
, however, nothing comes through at all and the browser displays 'could not connect to my.external.ip.address:6666
'.
I know that the port is correctly forwarded, as www.canyouseeme.org says port 6666 is open (and when netcat is not listening, that its closed).
If I run netcat with -g my.adslmodem's.local.address
to set the gateway address, I get the same behavior. Am I using this command line option correctly? Any insight as to what I'm doing wrong?
You must listen on the public interface. You're currently listening on localhost where no one outside of your computer can connect.
Your milage may vary, but with my implementation of netcat I have to use this command line to listen on all the public interfaces.
netcat -vv -l 0.0.0.0 6666