我打开了两个终端窗口,nc -vv -lp 9999
在第一个和nc -vv $(dig +short myip.opendns.com @resolver1.opendns.com) 9999
第二个中输入了命令。但是,两个 netcat 没有连接,我得到了
Warning: forward host lookup failed for 11.22.333.44.in-addr.arpa [44.333.22.11] 9999 (?) : Connection timed out
,其中 44.333.22.11 不是我的真实 IP。我使用 iptables 关闭了 INPUT 块,关闭了路由器防火墙,但什么都没变。但是,当我尝试nc -vv 127.0.0.1 9999
或nc -vv 192.168.1.4 9999
(LAN 中的 IP)时,它工作正常。可能出了什么问题?UPD 我刚刚测试了从网络外的另一台计算机连接的可能性,但也失败了。
nc -vv my.i.p.address 9999
我在另一台机器上使用我的公共 IP 使用了相同的命令
答案1
dig +short myip.opendns.com @resolver1.opendns.com
是一种找出你的 IP 地址的方法在互联网上通过使用第三方“resolver1.opendns.com”在您的网络之外。
由于您位于 NAT 后面,您的机器无法找到如何将这些数据包路由给您。
只要你的路由器支持“环回寻址”(将发往你的公共 IP 的内部数据包路由回你),你的路由器仍然需要知道这些数据包的目的地是你的内部的该端口上的 IP 地址。这称为转发端口。
如果你将路由器的 9999 端口转发到你的内部 IP 地址 192.168.1.4,那么可能可以工作,但大多数 SOHO 调制解调器/路由器不支持这种行为,因为这在正常操作中非常不常见。用例是,如果您在 LAN 内,为什么不通过 LAN IP 进行通信?
我见过的唯一这种情况是 DNS 解析器配置不当。如果您有本地 DNS 服务器,那么它应该使用本地服务的内部 IP 回复,而不是通过互联网发送所有流量。