如何让 netcat 接受来自 LAN 外部的连接?

如何让 netcat 接受来自 LAN 外部的连接?

我使用 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 未监听时,端口是关闭的)。

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

答案1

因此,如果您在 netcat 监听 6666 时从网络外部的系统扫描您的系统,外部系统会发现它正在运行某些东西。但是,当您尝试从网络内部连接到外部 IP 地址以将其路由回来时,它会给出错误,并且 netcat 显示没有连接?我几乎怀疑您在尝试从本地计算机转到路由器并返回时遇到了路由问题,也许是您的硬件存在 NAT 问题。您使用的是什么设备?您可能需要尝试从网络外部连接到该端口(或让朋友尝试)并查看结果是否相同,以检查是否存在这种情况。

答案2

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

相关内容