簡體   English   中英

為什么 traceroute 使用 VPC 忽略 AWS EC2 中的路由表

[英]Why traceroute ignores route table in AWS EC2 with 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

我預計到互聯網的流量將 go 拋出 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

相反,它會拋出52.56.0.2 52.56.0.2哪里指定? 為什么 go 不拋出10.10.32.1

首先我們可以看到兩件事——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 沒有記錄在 traceroute 中的問題是因為這些中間 VPC 網關沒有遞減 TTL 值,只是為了將數據包轉發到下一跳,當數據包到達互聯網路由器時,正常的遞減過程開始正在發生並且 ICMP 錯誤消息正在被發回並記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM