为什么traceroute会忽略带有VPC的AWS EC2中的路由表

Zet*_*oop 7 amazon-ec2 amazon-web-services amazon-vpc

这是我在带有 VPC 的 AWS EC2 中的路由表

ubuntu@ip-10-10-47-44:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.10.32.1      0.0.0.0         UG    100    0        0 eth0
10.10.32.0      0.0.0.0         255.255.240.0   U     0      0        0 eth0
10.10.32.1      0.0.0.0         255.255.255.255 UH    100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
Run Code Online (Sandbox Code Playgroud)

我预计互联网流量将抛出 10.10.32.1

ubuntu@ip-10-10-47-44:~$ traceroute 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  ec2-52-56-0-2.eu-west-2.compute.amazonaws.com (52.56.0.2)  20.219 ms ec2-52-56-0-0.eu-west-2.compute.amazonaws.com (52.56.0.0)  14.119 ms  14.127 ms
 2  100.66.0.170 (100.66.0.170)  12.679 ms 100.66.0.130 (100.66.0.130)  18.149 ms 100.66.0.164 (100.66.0.164)  19.795 ms
 3  100.66.0.49 (100.66.0.49)  16.561 ms 100.66.0.15 (100.66.0.15)  17.874 ms 100.66.0.29 (100.66.0.29)  17.863 ms
 4  100.65.1.97 (100.65.1.97)  0.556 ms 100.65.1.193 (100.65.1.193)  0.273 ms 100.65.1.97 (100.65.1.97)  0.278 ms
 5  52.94.33.3 (52.94.33.3)  0.956 ms 52.94.33.7 (52.94.33.7)  0.970 ms  1.037 ms
 6  52.94.33.126 (52.94.33.126)  2.002 ms 52.94.33.116 (52.94.33.116)  2.753 ms  2.549 ms
 7  52.95.61.97 (52.95.61.97)  1.461 ms 52.94.34.17 (52.94.34.17)  0.936 ms 54.239.101.109 (54.239.101.109)  1.355 ms
 8  52.95.219.217 (52.95.219.217)  1.604 ms 52.95.219.127 (52.95.219.127)  0.833 ms 72.21.221.227 (72.21.221.227)  1.900 ms
 9  74.125.242.65 (74.125.242.65)  1.305 ms  1.841 ms 74.125.242.97 (74.125.242.97)  3.129 ms
10  172.253.50.223 (172.253.50.223)  1.235 ms 172.253.68.23 (172.253.68.23)  1.280 ms 172.253.50.223 (172.253.50.223)  1.731 ms
11  dns.google (8.8.8.8)  0.732 ms  1.242 ms  1.056 ms
Run Code Online (Sandbox Code Playgroud)

相反,它会抛出指定52.56.0.2在哪里52.56.0.2?为什么它不去扔10.10.32.1

Mad*_*n S 6

首先我们可以看到两件事——VPC流量路由和traceroute的工作原理

  • VPC流量路由

    当您创建子网时,子网的五个 IP 被保留用于内部用途,其中第二个 ip xxx1(对于您的子网来说是 10.10.32.1)被用于 vpc 网关(虚拟),并且从路由表中您可以看到默认情况下,所有流量都会流向它,并根据子网的路由表规则从网关路由到下一个目标。下一个目标可能是另一个网关(对于公共子网),或者如果目标不在本地网络内部,则它可能是 NAT(私有子网)。对于外部互联网流量,数据包从 vpc 互联网网关路由到 aws 互联网路由器之一,对于您的情况,其 IP 为 52.56.0.2。

  • 跟踪路由工作

    简而言之,traceroute 在 ICMP 协议上工作,它最初发送 TTL 为 1 的数据包,当它从任何路由器收到 ICMP 超时错误时,它记录路由器 IP 并发送另一个带有最后 TTL + 1 的数据包,直到到达目标。

现在的问题是,为什么 10.10.32.1 IP 没有记录在跟踪路由中,是因为这些中间 VPC 网关不会递减 TTL 值,而只是为了将数据包转发到下一跳,当数据包到达互联网路由器时,就会开始正常的递减过程正在发生并且 ICMP 错误消息正在被发送回并记录。