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
    • 最新
    • 标签
主页 / server / 问题 / 509941
Accepted
Robbie Mckennie
Robbie Mckennie
Asked: 2013-05-23 07:31:39 +0800 CST2013-05-23 07:31:39 +0800 CST 2013-05-23 07:31:39 +0800 CST

为什么篡改 IP 的 TTL 是危险的?

  • 772

我一直在阅读 iptables 手册页(睡前阅读),我遇到了“TTL”目标,但它警告说:

设置或增加 TTL 字段可能非常危险

和

永远不要设置或增加离开本地网络的数据包的值!

我可以看到递减或设置较低的 TTL 可能如何导致数据包在到达目的地之前被丢弃,但递增会产生什么影响?

linux
  • 5 5 个回答
  • 8250 Views

5 个回答

  • Voted
  1. Best Answer
    Kyle Brandt
    2013-05-23T08:05:22+08:002013-05-23T08:05:22+08:00

    TTL 在通过路由器时会递减。这确保了如果数据包绕着圈子移动,它最终会死掉。

    IPv4 数据包的 TTL 字段是一个 8 位字段(十进制为 255)。所以在开始时将它设置得高并不是什么大问题,因为它实际上不可能在格式良好的数据包中那么大(尽管有些东西可能会接受格式错误的 IP 数据包)。

    然而,如果有什么东西增加它,并且增加步骤是循环的一部分,数据包可以继续循环而不会达到零。随着时间的推移(可能非常短,或逐渐泄漏),数据包可能会在包含该循环的系统中累积,从而导致其过载。

    • 68
  2. Nathan C
    2013-05-23T07:39:24+08:002013-05-23T07:39:24+08:00

    数据包上的 TTL 基本上使路由保持正常。如果一个数据包具有非常大的 TTL 并且由于某种原因被困在循环路由中,它可能会导致大量流量(称为“数据包风暴”)并干扰正常操作。TTL 太低会导致连接丢失,因为您会在数据包到达目的地之前丢失它。

    • 20
  3. Matthew Steeples
    2013-05-23T09:17:47+08:002013-05-23T09:17:47+08:00

    答案似乎遗漏了一点,但这纯粹是学术性的(因为互联网上似乎需要多少跳):如果数据包通常由于 TTL 到期而无法到达目的地,则增加它将允许数据包到达目的地,但不会影响返回的数据包,并且它们会在到达您的网络之前过期。

    更新:根据维基百科上的这个页面:

    理论上,在 IPv4 下,生存时间以秒为单位,尽管每个通过数据报的主机都必须将 TTL 至少减少一个单位。实际上,TTL 字段在每一跳上都减少一个。为了反映这种做法,该字段在 IPv6 中被重命名为 hop limit。

    更新 2:当有人更新了我的帖子并引用了维基百科时,我认为最好参考 RFC 本身 - http://www.ietf.org/rfc/rfc791.txt - 只需在那里搜索 TTL 就可以了很好地解释它:

    该字段表示允许数据报保留在 Internet 系统中的最长时间...每个处理数据报的模块都必须将 TTL 至少减少一个,即使它处理数据报的时间不到一秒
    • 5
  4. ott--
    2013-05-23T07:52:50+08:002013-05-23T07:52:50+08:00

    我只知道一个程序可以使用更高的 TTL 值,那就是traceroute. 顾名思义,它通过修改 TTL 值来跟踪到目标主机的路由。标准的最大跳数是 20,但您可以增加它。

    • 3
  5. ronalchn
    2013-05-25T05:02:41+08:002013-05-25T05:02:41+08:00

    每个处理数据包的路由器都会递减 TTL 值,直到数据包到达目的地,或者 TTL 达到零,然后终止。

    正如其他人所说,如果存在负循环,增加 TTL 可能会导致数据包永不死亡。通常,如果 TTL 值不够大,尝试更大 TTL 的逻辑可能应该由端到端客户端处理。

    如果您确定路由器不在循环(树状拓扑)中,理论上您可以安全地增加 TTL 值。话虽如此,允许比标准更多的跃点可能会使外部网络更容易发生拥塞。如果在内部和外部网络之间有很长的路由器链,只要没有循环,较大的 TTL 值可能会有所帮助。话虽如此,有人可以很容易地向网络添加边缘并创建一个循环,因此从数据包最初起源的较大 TTL 值开始会更安全。

    • 0

相关问题

  • Linux 主机到主机迁移

  • 如何在 Linux 机器上找到有关硬件的详细信息?

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 在 RHEL4 上修改 CUPS 中的现有打印机设置

  • 为本地网络中的名称解析添加自定义 dns 条目

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