在尝试诊断我的 Cisco ASA 5520 防火墙的故障转移问题时,我运行了一个到 www.btfl.com 的跟踪路由,令我惊讶的是,一些跃点作为 RFC 1918 地址返回。
需要说明的是,这台主机不在我的防火墙后面,也没有涉及 VPN。我必须通过开放的互联网连接才能到达那里。
这怎么可能?
asa# traceroute www.btfl.com
Tracing the route to 157.56.176.94
1 <redacted>
2 <redacted>
3 <redacted>
4 <redacted>
5 nap-edge-04.inet.qwest.net (67.14.29.170) 0 msec 10 msec 10 msec
6 65.122.166.30 0 msec 0 msec 10 msec
7 207.46.34.23 10 msec 0 msec 10 msec
8 * * *
9 207.46.37.235 30 msec 30 msec 50 msec
10 10.22.112.221 30 msec
10.22.112.219 30 msec
10.22.112.223 30 msec
11 10.175.9.193 30 msec 30 msec
10.175.9.67 30 msec
12 100.94.68.79 40 msec
100.94.70.79 30 msec
100.94.71.73 30 msec
13 100.94.80.39 30 msec
100.94.80.205 40 msec
100.94.80.137 40 msec
14 10.215.80.2 30 msec
10.215.68.16 30 msec
10.175.244.2 30 msec
15 * * *
16 * * *
17 * * *
它通过我在家里的 FiOS 连接做同样的事情:
C:\>tracert www.btfl.com
Tracing route to www.btfl.com [157.56.176.94]
over a maximum of 30 hops:
1 1 ms <1 ms <1 ms myrouter.home [192.168.1.1]
2 8 ms 7 ms 8 ms <redacted>
3 10 ms 13 ms 11 ms <redacted>
4 12 ms 10 ms 10 ms ae2-0.TPA01-BB-RTR2.verizon-gni.net [130.81.199.82]
5 16 ms 16 ms 15 ms 0.ae4.XL2.MIA19.ALTER.NET [152.63.8.117]
6 14 ms 16 ms 16 ms 0.xe-11-0-0.GW1.MIA19.ALTER.NET [152.63.85.94]
7 19 ms 16 ms 16 ms microsoft-gw.customer.alter.net [63.65.188.170]
8 27 ms 33 ms * ge-5-3-0-0.ash-64cb-1a.ntwk.msn.net [207.46.46.177]
9 * * * Request timed out.
10 44 ms 43 ms 43 ms 207.46.37.235
11 42 ms 41 ms 40 ms 10.22.112.225
12 42 ms 43 ms 43 ms 10.175.9.1
13 42 ms 41 ms 42 ms 100.94.68.79
14 40 ms 40 ms 41 ms 100.94.80.193
15 * * * Request timed out.
不只是 RFC 1918...还有RFC 6598,即
100.64.0.0/10
CGN 空间。这两个都是专用网络,但后者最近才标准化并且鲜为人知。从跟踪路由的角度来看,这并不罕见。您实际上并不是在直接与那些 10space 和 100space 主机对话,而是将 TTL 越来越大的数据包发送到下一跳路由器。为了避免答案过长,此维基百科链接总结了该过程。
不同寻常的是,此数据包遍历公共 IP 空间,然后通过私有 IP 空间隧道再次到达“公共”网络。
157.56.176.94
由 Microsoft 所有,并且数据包在到达专用网络之前遍历 MS 拥有的网络...因此,这只是 Microsoft 选择在专用空间两端使用其网络空间所做的事情。他们宣传路线;其他路由器只做他们被告知的事情。作为一般规则,不,网络运营商通常不会沿着从其网络外部到公共 IP 空间的路由暴露他们的私有网络。这就是为什么这如此不寻常。
(这可能是它们边界上某处丢失的路由,导致数据包遍历最终到达目的地的非最佳路径,但我不是网络专家,有人可能会更好地尝试它)
允许路由器使用 RFC1918 或其他私有地址相互连接,事实上,这对于点对点链接以及发生在 AS 内部的任何路由是很常见的。
只有网络上的边界网关实际上需要可公开路由的 IP 地址才能进行路由。如果路由器的接口不连接到任何其他 AS(或任何其他服务提供商,更简单地说),则无需在 Internet 上通告路由,并且只有属于同一实体的设备才需要直接连接到界面。
数据包在 traceroute 中以这种方式返回给您,这是对 RFC1918 的轻微违反,但实际上没有必要为这些设备使用 NAT,因为它们本身不会连接到互联网上的任意事物;他们只是通过交通。
流量采用(可能是迂回的)路由通过多个组织,这仅仅是外部网关路由协议运行的结果。微软有一定的骨干力量并且有些人已经与之同行,这似乎是完全合理的;您不必成为批发 ISP 即可路由流量。
流量已经通过多个具有私有 IP 的路由器系列,通过中间具有公共 IP 的路由器传输,这并不特别奇怪 - 它只是表明(在这种情况下)路径上的两个不同网络已经通过它们自己的路由器路由流量他们选择以这种方式编号。