我在连接到 Amazon EC2 Linux 实例时遇到问题。有没有工具可用来排查网络连接问题?

TCP/IP 网络节点之间的连接问题通常是因为路由信息错误,导致这种错误的原因包括但不限于以下几点:

  • 非法 DNS 服务器 – 如果客户端从配置错误的未授权 DNS 服务器请求信息,则返回的信息不可靠。
  • HOSTS 文件条目错误 – 大部分操作系统会实施一个 HOSTS 文件,可在该文件中静态定义主机与 IP 的映射关系。在 Linux 操作系统上,该文件通常保存在 /etc/hosts 中并采用以下格式:
        1.2.3.4    hostname
    其中,1.2.3.4 是在引用 hostname 时将使用的物理 IP 地址。
  • 硬件故障 – 如果 DNS 服务器发生硬件故障,则 DNS 服务器维护的 DNS 记录不会按预期更新,这可能导致将错误的主机与 IP 映射发送到客户端。
  • TCP/IP 端口被阻止 – 如果应用程序层协议或服务所需的端口被阻止,则会阻止网络通信。
  • 客户端 TCP/IP 配置错误 – 如果客户端未正确配置,则可能会出现不同程度的连接问题。当客户端配置为使用自动 TCP/IP 配置,但却无法检索配置信息或收到错误的配置信息时,会出现这种情况。

ping 实用工具将 Internet 控制消息协议 (ICMP) 数据包从客户端发送给指定的网络名称或 IP 地址:

ubuntu@ip-10-0-0-252:~$ sudo ping -c 1 www.amazon.com

PING www.amazon.com (54.239.19.16) 56(84) bytes of data.

--- www.amazon.com ping statistics ---

1 packets transmitted, 0 received, 100% packet loss, time 0ms

很多可公开访问的服务器会忽视传入的 ICMP 数据包。因此,ping 请求返回 100% 数据包丢失统计信息的情况并不少见。在发起 ping 请求时,务必检查以下项:

  1. ping 请求是否将名称解析为 IP 地址?例如,在前面的示例中,即使未返回任何 ping 响应,名称 www.amazon.com 也解析为 IP 地址 54.239.19.16。如果使用了其他主机名 (例如 www.bamazon.com),名称解析将会失败,并且不会尝试任何 ping 请求:
           ubuntu@ip-10-0-0-252:~$ sudo ping -c 1 www.bamazon.com
           ping: unknown host www.bamazon.com
  2. 如果名称解析为 IP 地址,就很有可能可以通过其他应用程序层协议或服务访问目标。例如,即使对 www.amazon.com 的 ping 请求超时,一般也会成功连接到 http://www.amazon.com,因为该目标是通过端口 80 接受浏览器请求的 Web 服务器。
  3. 如果 ping 请求成功且返回了回复,请验证回复是否在合理的时间内返回 (<250 ms)。使用 -c 开关指定 ping 请求数。如果返回数不足指定 ping 请求数的一半,或者平均响应时间超过 250 ms,则可能需要采取其他问题排查步骤。若要为 ping 请求指定超时 (以毫秒为单位),请使用 -W 开关。若要继续对目标执行 ping 操作,直到停止,请使用值为 0 的 -W 开关;例如:
           sudo ping –W 0 www.ubuntu.org
    按 Ctrl+C 组合键停止生成 ping 请求。
  4. 地址是否解析为主机名?若要测试地址到主机名的解析,请使用 Linux nslookup 命令并指定目标的 IP 地址。例如,以下非交互模式 nslookup 请求针对与 www.ubuntu.org 关联的其中一个 IP 地址测试地址到主机名的解析:
           ubuntu@ip-10-0-0-252:~$ nslookup 82.98.134.233
           Server:      10.0.0.2
           Address:    10.0.0.2#53

           Non-authoritative answer:
           233.134.98.82.in-addr.arpa      name = hl231.dinaserver.com.

    注意,响应返回了名称 hl231.dinaserver.com,这是为 http://www.ubuntu.org 处理请求的其中一个负载均衡 Web 服务器。

有关 ICMP 协议的更多信息,请参阅了解 ICMP 协议 (第 1 部分)了解 ICMP 协议 (第 2 部分)

Linux traceroute 实用工具可识别从客户端节点到指定目标节点的路径,以及路径中识别的每个路由器响应请求所用的时间 (以毫秒为单位)。默认情况下,traceroute 实用工具使用默认的最大值 30 个跃点;如果客户端和目标之间的路径需要的路由器数或跃点数超过 30 个,则可以使用 -h 开关增加最大跃点数。由于 traceroute 请求取决于对 ICMP 请求的响应,因此路由上的某些跃点可能会丢弃请求以支持更高优先级的网络流量。

以下 traceroute 命令从 Ubuntu Linux 14.04 的 Amazon Web Services EC2 实例发出。参数 -T -p 80 -n 对端口 80 执行基于 TCP 的跟踪,返回 IP 地址,而不是主机名。指定基于 TCP 的跟踪而非依赖 ICMP 的 Linux traceroute 选项很有帮助,因为大部分 Internet 设备会忽略基于 ICMP 的跟踪请求。仅检索 IP 地址的 Linux traceroute 选项在返回的主机名错误或具有误导性时非常有用:

ubuntu@ip-10-0-0-252:~$ sudo traceroute -T -p 80 -n www.ubuntu.org

traceroute to www.ubuntu.org (82.98.134.233), 30 hops max, 60 byte packets

1  * * *

2  * * *

3  * * *

4  100.64.16.75    1.176 ms

   100.64.16.129   1.059 ms

   100.64.16.209   0.923 ms

5  54.239.48.178   3.958 ms

   54.239.48.184   1.200 ms

   54.239.48.178   1.805 ms

6  205.251.232.204 1.198 ms

   205.251.232.154 1.793 ms

   205.251.232.142 1.549 ms

7  205.251.232.76  6.341 ms

   205.251.232.78  6.546 ms

   205.251.232.76  7.611 ms

8  205.251.226.230 6.220 ms  7.418 ms

   205.251.226.192 8.096 ms

9  198.104.202.189 9.178 ms

   129.250.201.165 9.006 ms

   198.104.202.181 9.001 ms

10 129.250.5.44    8.746 ms

   129.250.5.48    8.912 ms

   129.250.5.44    27.57 ms

11 * 129.250.2.50  86.83 ms  *

12 129.250.3.127   153.9 ms  144.401 ms  161.867 ms

13 129.250.4.138   176.5 ms  165.466 ms  181.772 ms

14 62.73.183.78    166.5 ms  166.834 ms  169.297 ms

15 * * *

16 82.98.134.233   177.9 ms  164.656 ms  169.607 ms

通常不用担心少量的超时请求,而是应关注发送到目标的数据包丢失或路由的最后一个跃点中的数据包丢失情况。几个跃点处累积的数据包丢失也可能表示出现了问题。

重要提示:在使用 traceroute 实用工具排查网络连接问题时,通常最好在两个方向上运行命令:从客户端到服务器,然后从服务器再回到客户端。如果每个路径上有巨大的延迟差异,请考虑查看 Richard A Steenbergen 撰写的优秀文章“Traceroute”(http://cluepon.net/ras/traceroute.pdf)。作者非常深入地描述了纷繁复杂的跟踪分析。

Linux mtr 命令可以提供持续更新的输出,因此您可以分析一段时间的网络性能。

注意:如果 Ubuntu Linux 上未安装 mtr,请运行以下命令获取:
       sudo apt-get install mtr

有关 mtr 命令行选项的列表,请运行 mtr -h

ubuntu@ip-10-0-0-252:~$ mtr www.ubuntu.org

                                  My traceroute  [v0.85]

ip-10-0-0-252 (0.0.0.0)                                            Sat Nov 22 18:54:13 2014

Keys:  Help   Display mode   Restart statistics   Order of fields  quit

                                                    Packets               Pings

Host                                             Loss%   Snt   Last   Avg  Best  Wrst StDev

 1. ???

 2. ???

 3. ???

 4. 100.64.16.139                                 0.0%    64    2.4   2.3   0.6  32.6   5.4

 5. 54.239.48.186                                 0.0%    64    0.9   2.2   0.8  19.8   4.0

 6. 205.251.232.210                               0.0%    64    1.5   2.4   0.7  17.7   3.7

 7. 205.251.232.76                                0.0%    64   37.6  11.1   6.1  47.2   7.9

 8. 205.251.225.165                               0.0%    64   14.2   7.1   5.6  28.4   4.2

 9. ae-8.r05.sttlwa01.us.bb.gin.ntt.net           0.0%    63    7.7   9.3   7.3  26.7   4.9

10. ae-7.r21.sttlwa01.us.bb.gin.ntt.net           0.0%    63    7.4  10.2   7.2  35.4   6.1

11. ae-3.r22.nycmny01.us.bb.gin.ntt.net          22.2%    63   73.7  82.2  73.1 101.7   8.8

12. ae-5.r22.londen03.uk.bb.gin.ntt.net           0.0%    63  153.1 159.2 142.1 223.3  17.7

13. ae-6.r01.mdrdsp03.es.bb.gin.ntt.net           0.0%    63  174.9 176.1 165.4 193.2   6.3

14. dinahosting-0.r01.mdrdsp03.es.bb.gin.ntt.net  0.0%    63  174.6 182.7 164.1 263.1  21.3

15. ???

16. hl231.dinaserver.com                          0.0%    63  175.5 178.4 166.1 200.4   7.4

 

mtr 还提供了 --report 选项,可用于总结将 10 个 ping 数据包发送到每个跃点的结果:

ubuntu@ip-10-0-0-252:~$ mtr --report www.ubuntu.org

Start: Sat Nov 22 19:06:10 2014

HOST: ip-10-0-0-252               Loss%   Snt   Last   Avg  Best  Wrst StDev

  1.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0

  2.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0

  3.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0

  4.|-- 100.64.16.139              0.0%    10    0.8   0.8   0.5   1.4   0.0

  5.|-- 54.239.48.186              0.0%    10    1.0   1.1   0.8   2.0   0.0

  6.|-- 205.251.232.210            0.0%    10    0.8   1.3   0.8   2.9   0.5

  7.|-- 205.251.232.76             0.0%    10    6.1   8.3   6.1  18.2   3.4

  8.|-- 205.251.225.165            0.0%    10    6.3   5.8   5.6   6.3   0.0

  9.|-- ae-8.r05.sttlwa01.us.bb.g  0.0%    10    7.5   7.5   7.4   7.6   0.0

 10.|-- ae-7.r21.sttlwa01.us.bb.g  0.0%    10    8.8  10.2   7.3  33.4   8.1

 11.|-- ae-3.r22.nycmny01.us.bb.g  0.0%    10   73.8  78.2  73.3 108.2  10.9

 12.|-- ae-5.r22.londen03.uk.bb.g 10.0%    10  151.6 154.8 145.4 169.5   6.5

 13.|-- ae-6.r01.mdrdsp03.es.bb.g  0.0%    10  175.0 174.1 165.7 178.3   3.5

 14.|-- dinahosting-0.r01.mdrdsp0  0.0%    10  173.8 172.2 165.1 176.4   4.3

 15.|-- ???                       100.0    10    0.0   0.0   0.0   0.0   0.0

 16.|-- hl231.dinaserver.com      10.0%    10  183.1 177.9 168.1 192.4   7.5

注意:由于方向逆转时,TCP/IP 网络节点之间的路径可能发生变化,因此获得两个方向的跟踪路由结果非常重要。


此页面对您有帮助吗? |

返回 AWS Support 知识中心

需要帮助? 请访问 AWS 支持中心

发布时间:2014 年 12 月 5 日