是否可以在不接触 ICMP 的情况下跟踪路由?

Dum*_*mmy 1 traceroute icmp unix-sockets

我经常遇到一种情况,我想在 Linux 中跟踪没有 root 或 NET_RAW 上限的 IP。

我试图发送一个带有小 TTL 的 UDP 数据包,但根本没有发出 ttl 错误。似乎获得 TTL 超出错误需要使用 ICMP 套接字。是否可以仅在不涉及 ICMP 的情况下使用 UDP 或 TCP 协议,同时仍然收到 TTL 错误通知,以便我可以使用有限的功能跟踪路由?

Ipo*_*cer 5

当然,您可以使用任何协议。尝试tcptraceroute

或者标准的traceroute

从手册页:

   -I, --icmp
          Use ICMP ECHO for probes

   -T, --tcp
          Use TCP SYN for probes

   -U, --udp
          Use UDP to particular destination port for tracerouting (instead
          of  increasing  the  port  per  each  probe). Default port is 53
          (dns).

   -UL    Use UDPLITE for tracerouting (default port is 53).

   -D, --dccp
          Use DCCP Requests for probes.

   -P protocol, --protocol=protocol
          Use raw packet of specified protocol for  tracerouting.  Default
          protocol is 253 (rfc3692).
Run Code Online (Sandbox Code Playgroud)

  • @RuiFRibeiro /sf/answers/1618392611/。`cp $(which traceroute) 。&& ./traceroute google.com` 作为非特权用户对我来说效果很好。(`cp` 证明这不是由于 set-uid root)。 (3认同)
  • (在 Linux 上)。哦,对于设置 TTL,请参阅 /sf/answers/2174645511/ 。关于这个答案,请注意 `traceroute --tcp` *确实*需要 root。Linux 允许您在没有特权的情况下执行 UDP 跟踪路由。 (2认同)