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

问题描述 投票:26回答:3

我正在使用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来设置网关地址,我会得到相同的行为。我正确使用此命令行选项吗?对于我做错了什么的任何见解?

gateway portforwarding netcat
3个回答
26
投票

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

您的里程可能会有所不同,但随着我对netcat的实现,我必须使用此命令行来监听所有公共接口。

netcat -vv -l 0.0.0.0 6666


14
投票

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

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


8
投票

要指定侦听地址:

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

netcat-traditional-1.10-41测试Debian Jessie

© www.soinside.com 2019 - 2024. All rights reserved.