我希望 ssh 连接到我家庭网络上的一台机器,所以我打算设置端口转发。但是我的家庭服务器和外部世界(即全局 IP 地址)之间有多少个路由器?
我知道以下连锁店:myServer -> routerA -> routerB -> phoneLine
有没有办法确定一条路线有多少跳先行全球 IP 地址?
routerB
每个 ISP 是否都会为每个用户提供一个全局 IP 地址,或者我的端口转发计划是否可能注定失败,因为 ISP 控制着我和互联网之间的网关?
更新:
我本以为我可以运行traceroute
它并查看其输出,找到与 www.whatismyip.com 告诉我的地址相匹配的 IP 地址,但奇怪的是,没有匹配的 IP 地址。为什么没有呢?(但是,D 块中有一个地址仅相差 1。)
答案1
您的公网 IP 地址应该位于 ISP 提供的设备上。查找该地址的最简单方法是使用 Windows dos shell“tracert”命令。使用方法如下:
tracert www.gooogle.com
这将向您显示到指定位置的跳数,以及每个跳数的 IP 地址。您将看到本地路由器,后面可能是 ISP 提供的设备上的公共 IP 地址。
答案2
请注意:路由器无处不在。您应该担心的是 NAT。互联网上的“真实”路由器不使用它。
每个 ISP 是否都会为每个用户提供全球IPv4地址...?
不幸的是,这个问题的答案是,不,绝对不是。许多移动电话提供商没有足够的 IP 地址来为每个连接的设备提供自己的地址。相反,他们使用运营商级 NAT,这基本上是一个巨大的 NAT 路由器设置。越来越多的常规 ISP 也必须采用这种方法来为不断增加的客户提供服务。
Tracing route to superuser.com [190.93.244.58]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 192.168.2.1
2 26 ms 25 ms 12 ms HSI-KBW-095-208-060-001.hsi5.kabel-badenwuerttem berg.de [95.208.60.1]
3 24 ms 8 ms 8 ms 172.30.21.57
4 8 ms 9 ms 9 ms 84.116.191.33
5 10 ms 11 ms 29 ms 84.116.191.2
6 12 ms 12 ms 10 ms ffm-b1-link.telia.net [62.115.48.101]
7 16 ms 14 ms 12 ms ffm-bb1-link.telia.net [62.115.135.233]
8 11 ms 17 ms 10 ms ffm-b10-link.telia.net [62.115.137.141]
9 14 ms 12 ms 16 ms cloudflare-ic-302937-ffm-b10.c.telia.net [62.115 .35.226]
10 11 ms 13 ms 14 ms 190.93.244.58
Trace complete.
在第一个跳转中,您可以看到我的有线路由器及其内部 IP 地址192.168.2.1
。现在,虽然我确实分配了一个 IPv4 地址,但它在这里不可见。相反,请查看下一个跳转 #2:它的地址是 Internet 可路由的 IP 地址。由此,我们可以推断出我的路由器的外部 IP 也是 Internet 可路由的。
如果存在包含非 Internet IP 地址的额外跳数,则暗示您的 ISP 处设置了运营商级 NAT。
Traceroute 仅返回“面向您”的 IP 地址。这就是您无法获得路由器的公共 IP 地址的原因。幸运的是,有很多 Web 服务可用于解决此问题。