我打开了两个终端窗口,分别输入nc -vv -lp 9999
了第一个和nc -vv $(dig +short myip.opendns.com @resolver1.opendns.com) 9999
第二个。但是,两个netcats没有连接,我得到了
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
(我在局域网中的 ip)时,它工作得很好。会出什么问题?UPD 我刚刚测试了从网络外部的另一台计算机连接的可能性,但它也失败了。
nc -vv my.i.p.address 9999
我在另一台机器上对我的公共 IP 使用了相同的命令
是一种通过在您的网络之外使用第三方“resolver1.opendns.com”来找出您在互联网上的IP 地址的方法。
由于您在 NAT 后面,您的机器无法找出如何将这些数据包路由给您。
只要您的路由器支持“环回寻址”(将发往您的公共 IP 的内部数据包路由回您),您的路由器仍然需要知道这些数据包是发往该端口上您的内部IP 地址的。这称为端口转发。
如果您将端口转发到路由器的端口 9999 到您的内部 IP 地址 192.168.1.4,那么它可能会起作用,但大多数 SOHO 调制解调器/路由器不支持这种行为,因为它在正常操作中非常不寻常。用例是,如果您在 LAN 内,为什么不通过 LAN IP 进行通信?
我见过这种用法的唯一情况是在配置不佳的 DNS 解析器中。如果您有本地 DNS 服务器,那么它应该使用内部 IP 回复本地服务,而不是通过 Internet 发送所有流量。