The packets that Windows
tracert and Linux
traceroute use by default are different. Windows
tracert sends ICMP packets and Linux
traceroute sends UDP packets. The UDP ports are blocked at each hop in your example but ICMP is allowed, so that explains the discrepancy you're seeing.
From Wikipedia: traceroute:
On Unix-like operating systems, traceroute sends, by default, a
sequence of User Datagram Protocol (UDP) packets, with destination
port numbers ranging from 33434 to 33534; the implementations of
traceroute shipped with Linux, FreeBSD, NetBSD, OpenBSD, DragonFly
BSD, and macOS include an option to use ICMP Echo Request packets
(-I), or any arbitrary protocol (-P) such as UDP, TCP using TCP SYN
packets, or ICMP.
On Windows, tracert sends ICMP Echo Request packets, rather than the
UDP packets traceroute sends by default.
You can have
traceroute use ICMP packets in Linux by adding the
From man traceroute:
Print the route packets take to network host.
traceroute [options] host [packetsize]
-I Use ICMP ECHO for probes