我正在使用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
来设置网关地址,我会得到相同的行为.我正确使用此命令行选项吗?对于我做错了什么的任何见解?
你必须听公共界面.您当前正在侦听计算机外部没有人可以连接的localhost.
您的milage可能会有所不同,但是通过我的netcat实现,我必须使用此命令行来监听所有公共接口.
netcat -vv -l 0.0.0.0 6666
原来没有问题.它只是出现这种方式,因为我的路由器不允许发夹连接.也就是说,即使我已正确设置它,当源和目标都在NAT后面时,路由器也不会建立连接.只要ncat -l -p 6666
请求来自局域网外,只需工作正常即可.为了测试这一点,我浏览my.external.ip.address:6666
了我的3G手机,果然,HTTP请求来了:)
这个答案来自:一个服务器故障问题,这是我应该首先问这个问题的地方.为此道歉.
要指定侦听地址:
nc -l -s-p
在Debian Jessie上测试过 netcat-traditional-1.10-41