我是一名程序员,我们可以过滤掉路由器中的数据包来操纵 IP 或 MPLS 标头。我的问题是有什么方法可以区分 UDP 1 字节跟踪路由数据与用户流量数据?traceroute udp 数据包将具有不同的 udp 源和目标端口号,并且没有标准端口。是否有任何 IP 字段可以让我区分 traceroute 数据包?
如何区分UDP traceroute数据包和正常数据流量?
网络工程
路由器
UDP
跟踪路由
第4层
2021-07-26 10:47:18
3个回答
Unix tracertroute 将使用目标端口范围 33434 - 33464,它将以 33434 开始第一跳,并且每个节点将增加一个直到达到 33464
Traceroute 依靠 TTL 来查找每个跃点。
第一个 traceroute 数据包的 TTL 为 1,然后对于每个后续节点,该值递增 1。
常规流量将(几乎)始终具有操作系统的默认 TTL 值,通常为 64 或 128,对于在始发主机和数据包嗅探器之间穿越的每个路由器,该值当然会减少。
因此,除非您对距离超过 30 跳(大于 Internet 直径)的目的地执行跟踪路由,否则对 TTL 字段的过滤应该会为您提供很好的匹配。
有一个实际的跟踪路由协议,现在已被弃用(请参阅RFC 1393,使用 IP 选项的跟踪路由)。这可能仍然被一些操作系统使用,但有些操作系统使用ICMP,有些使用其他协议,但关键是增加TTL。
寻找的关键是 IP 数据包头中的小 TTL。大多数操作系统以 64 开头(有些以 128 开头)的最小 TTL。您可以在大约 12 跳中向全世界发送数据包,因此如果您看到一位数的 TTL,您可以假设您看到的是跟踪路由数据包。
Traceroute 经常被误解。它是您自己网络上的一个有用工具,您可以在其中了解网络设计并知道路由应该是什么。在 Internet 上使用 traceroute 可能会产生很大的误导,因为路径中的某些 ISP 可能会查找 ICMP 或 traceroute,然后重新路由这些数据包。那是为了防止你随便发现ISP的内部网络。在这种情况下,您的正常流量所采用的路径可能与 traceroute 显示的路径大不相同。