我使用netcat作为后端来处理我正在制作的程序来回传输数据。 我在本地networking上testing了我的程序,一旦工作,我认为这只是简单地从我的路由器转发一个端口,让我的程序通过互联网工作。 唉! 这似乎并非如此。
如果我启动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没有听,它closures)。
如果我用-g my.adslmodem's.local.address运行netcat来设置网关地址,我会得到相同的行为。 我是否正确使用这个命令行选项? 任何洞察力,我做错了什么?
因此,如果您在netcat正在监听6666的情况下从系统之外的系统扫描您的系统,则外部系统会看到它正在运行。 但是,当您从networking内部尝试连接到外部IP地址以将其路由回去时,它会发出错误,而netcat显示没有连接? 我几乎怀疑你有一个路由问题,试图从本地机器到路由器,然后回来,也许你的硬件NAT问题。 你在用什么设备? 您可能想要检查是否通过尝试从networking外部连接到该端口(或者有朋友尝试它)并查看结果是否相同。
原来没有问题。 这只是因为我的路由器不允许发夹连接。 也就是说,即使我已经正确设置,当源和目的地都位于NAT后面时,路由器也不会build立连接。 只要ncat -l -p 6666工作正常,只要请求来自局域网之外。 为了testing这个,我用我的3G手机浏览了my.external.ip.address:6666 ,果然,一个HTTP请求来了:)