2

So I ran into this issue where doing

traceroute some-server.abc.com

returned *** for multiple lines and finally reached maximum hops limit.

Doing a traceroute -T some-server.abc.com works perfectly fine. I checked the man pages and by default traceroute uses UDP protocol and -T forces it to use TCP probe packets.

What can be the possible reasons for such behaviour. Also note that ping works fine with this host.

1 Answers1

2

Quote from traceroute Wikipedia page:

On Unix-like operating systems, the traceroute utility uses User Datagram Protocol (UDP) datagrams by default, with destination port numbers ranging from 33434 to 33534. The traceroute utility usually has an option to instead use ICMP Echo Request (type 8) packets, like the Windows tracert utility does, or to use TCP SYN packets.[1][2] If a network has a firewall and operates both Windows and Unix-like systems, more than one protocol must be enabled inbound through the firewall for traceroute to work and receive replies.

Most likely reason why traceroute UDP packets are not getting through is firewall.

grekasius
  • 2,056
  • 12
  • 15
  • There was a critical typo in the question. I intended to write `note` instead of `not`. I think it impacts the answer. – Aman Deep Gautam Jul 26 '14 at 20:52
  • I updated my answer. – grekasius Jul 26 '14 at 20:53
  • Also can it be the case that an ICMP Time exceeded messages is not configured for UDP packets? To paraphrase: If UDP packets with TTL 0 reaches the server, it just drops them without returning anything. – Aman Deep Gautam Jul 26 '14 at 20:55
  • If the host you are trying to reach is on the same network, then this might be the case. Otherwise, I would say it's firewall on your own machine or on default gateway getting in the way. – grekasius Jul 26 '14 at 21:05
  • its in the same network. Also I am passing the default gateway. The only difference between `traceroute -T` and `traceroute` is the last hop i.e the one to the destination. – Aman Deep Gautam Jul 26 '14 at 21:06