如何让netcat接受局域网外的连接?

时间:2010-03-31 11:43:32

标签: gateway portforwarding netcat

我正在使用netcat作为后端来为我正在制作的程序来回挖掘数据。我在本地网络上测试了我的程序,一旦它工作,我认为只需从我的路由器转发一个端口让我的程序通过互联网工作。唉!情况似乎并非如此。

如果我使用以下命令启动netcat侦听端口6666:

nc -vv -l -p 6666

然后在浏览器中转到127.0.0.1:6666,正如预期的那样,我看到HTTP GET请求来自netcat(我的浏览器等待是徒劳的)。但是,如果我转到my.external.ip.address:6666,则根本没有任何内容,浏览器显示“无法连接到my.external.ip.address:6666”。

我知道端口被正确转发,因为www.canyouseeme.org说端口6666是打开的(当netcat没有监听时,它已关闭)。

如果我使用-g my.adslmodem's.local.address运行netcat来设置网关地址,我会得到相同的行为。我正确使用此命令行选项吗?对于我做错了什么的任何见解?

3 个答案:

答案 0 :(得分:26)

您必须在公共界面上侦听。您当前正在侦听计算机外部没有人可以连接的本地主机。

你的milage可能会有所不同,但是我的netcat实现后,我必须使用这个命令行来监听所有的公共接口。

netcat -vv -l 0.0.0.0 6666

答案 1 :(得分:14)

原来没有问题。它只是出现这种方式,因为我的路由器不允许发夹连接。也就是说,即使我已正确设置它,当源和目标都在NAT后面时,路由器也不会建立连接。只要请求来自局域网外,只需ncat -l -p 6666即可。为了测试这一点,我使用我的3G手机浏览了my.external.ip.address:6666,果然,HTTP请求来了:)

这个答案来自:a serverfault question,这是我应该首先提出这个问题的地方。为此道歉。

答案 2 :(得分:8)

指定收听地址:

nc -l -s <LISTENING_IP_ADDR> -p <LISTENING_PORT>

使用netcat-traditional-1.10-41

在Debian Jessie上测试