AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-305389

cmikeb1's questions

Martin Hope
cmikeb1
Asked: 2020-05-22 14:20:27 +0800 CST

什么可能导致发送 TTL 为 64 的请求在连接到 traceroute 显示距离为 33 跳的目标 IP 时失败?

  • 2

从在 AWS ECS 上运行的 docker 容器(运行 ubuntu 18)中,我试图建立与外部数据中心的连接。我们已将问题解决到我们认为是本地 docker 网络添加的额外跃点导致故障的地方。支持这一点的事实是,从 docker 主机 EC2 实例成功完成对目标 IP 的 curl 请求,以及在部署到距离目标 IP 不到 33 跳的子网时从同一个 docker 容器内部完成。

traceroute <destination_ip>从容器内运行时,我看到 33 个跃点:

root@1cfbdf43c8f5:~# traceroute -m36 <destination_ip>
traceroute to <destination_ip> (<destination_ip>), 36 hops max, 60 byte packets
 1  ip-172-17-0-1.us-east-2.compute.internal (172.17.0.1)  0.039 ms  0.014 ms  0.013 ms
 2  ip-10-133-216-197.us-east-2.compute.internal (10.133.216.197)  1.185 ms  1.146 ms  1.107 ms
 3  ec2-52-15-0-157.us-east-2.compute.amazonaws.com (52.15.0.157)  8.188 ms ec2-52-15-0-169.us-east-2.compute.amazonaws.com (52.15.0.169)  5.615 ms ec2-52-15-0-161.us-east-2.compute.amazonaws.com (52.15.0.161)  10.227 ms
 ...
32  <destination_ip>  24.706 ms  24.584 ms  24.698 ms
33  <destination_ip>  24.411 ms  24.426 ms  24.323 ms

第一个跃点是 docker,第二个是 AWS NAT 网关,然后蜿蜒穿过 AWS 网络,最终到达第 33 个跃点。

在运行docker 的 EC2 主机上curl <destination_address>捕获时运行时,我看到请求因 ttl 而失败:tcpdump -v host <destination_ip>

ip-10-133-218-86.us-east-2.compute.internal > <destination_ip>: ICMP time exceeded in-transit, length 52

然而,同样的检查tcpdump显示请求在通过主机时的 TTL 为 63,表明它正确使用了 ubuntu 系统默认值 64:

Time to live: 63

我的问题是:什么可能导致发送 TTL 为 64 的请求无法连接到 traceroute 显示的目标 IP 仅 33 远?

在这一点上,我们的选择似乎是(1)减少源和目标之间的跳数,或者(2)增加传出请求的 TTL。

为了尝试做(2),增加 TTL,我尝试将 sys 属性更新/proc/sys/net/ipv4/ip_default_ttl=64为/proc/sys/net/ipv4/ip_default_ttl=128. tcpdump 检查显示在传出请求中这得到了尊重,但是调用仍然失败并显示ICMP time exceeded in-transit.

编辑 1

tcpdump从主机上 添加 Wireshark 屏幕抓取。来自 ec2 主机的 tcpdump

编辑 2

添加另一个 tcpdump,在卷曲同一主机时捕获,但来自我的本地计算机。 在此处输入图像描述

正如答案所指出的,[SYN,ACK] 响应的 TTL 太低,无法返回到发起请求的机器。在我在本地访问同一台服务器的图像中,您可以看到它比该服务器的任何其他响应少了大约 200 跳。

networking amazon-web-services ipv4 traceroute
  • 1 个回答
  • 549 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve