How to Install and Use the ‘Traceroute’ Command in Linux

How to Install and Use the ‘Traceroute’ Command in Linux

Linux terminal showing the installation of traceroute a command for network path tracing

Are you trying to trace the route that your data packets take to reach a network host but finding it challenging? Like a digital breadcrumb trail, the ‘traceroute’ command in Linux can help you track this path. The ‘traceroute’ command is a network diagnostic tool for understanding and diagnosing network issues, making it a utility worth mastering. Additionally, it’s readily available on most package management systems, making the installation process straightforward once you know the steps.

In this comprehensive guide, we will walk you through how to install the ‘traceroute’ command on your Linux system. We will cover methods for both APT and YUM-based distributions like Debian, Ubuntu, CentOS, and AlmaLinux. We will delve into more advanced topics like compiling from source and installing a specific version of the command. Finally, we will wrap up with guidance on how to use the ‘traceroute’ command and verify that the correct version is installed.

So, let’s dive in and start installing ‘traceroute’ on your Linux system!

TL;DR: How Do I Install and Use the ‘traceroute’ Command in Linux?

In most Linux distributions, the 'traceroute' command comes pre-installed. If it’s not, you can install it in Debian based distributions like Ubuntu by running the command sudo apt-get install traceroute. For distributions like CentOS that use the RPM package manager, you would run the command sudo yum install traceroute.

For example:

# For Debian based distributions like Ubuntu
sudo apt-get install traceroute

# For RPM based distributions like CentOS
sudo yum install traceroute

# Output:
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# The following NEW packages will be installed:
#   traceroute
# 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
# Need to get 45.3 kB of archives.
# After this operation, 192 kB of additional disk space will be used.
# Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 traceroute amd64 1:2.1.0-2 [45.3 kB]
# Fetched 45.3 kB in 1s (33.3 kB/s)
# Selecting previously unselected package traceroute.
# (Reading database ... 130812 files and directories currently installed.)
# Preparing to unpack .../traceroute_1%3a2.1.0-2_amd64.deb ...
# Unpacking traceroute (1:2.1.0-2) ...
# Setting up traceroute (1:2.1.0-2) ...
# Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

This is a basic way to install the ‘traceroute’ command in Linux, but there’s much more to learn about installing and using ‘traceroute’. Continue reading for more detailed information and advanced installation options.

Understanding and Installing the ‘traceroute’ Command

The ‘traceroute’ command is a network diagnostic tool that provides a detailed view of the path that data packets take from your computer to a specified destination. It’s useful for identifying where problems occur when data is not reaching its intended destination. It’s a must-have tool for network administrators and anyone interested in understanding their network better.

Let’s now dive into how to install the ‘traceroute’ command in Linux using different package managers.

Installing Traceroute with APT

For Debian-based distributions like Ubuntu, we use the APT package manager to install the ‘traceroute’ command. Here’s how:

sudo apt update
sudo apt install traceroute

# Output:
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# The following NEW packages will be installed:
#   traceroute
# 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
# Need to get 45.3 kB of archives.
# After this operation, 192 kB of additional disk space will be used.
# Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 traceroute amd64 1:2.1.0-2 [45.3 kB]
# Fetched 45.3 kB in 1s (33.3 kB/s)
# Selecting previously unselected package traceroute.
# (Reading database ... 130812 files and directories currently installed.)
# Preparing to unpack .../traceroute_1%3a2.1.0-2_amd64.deb ...
# Unpacking traceroute (1:2.1.0-2) ...
# Setting up traceroute (1:2.1.0-2) ...
# Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

The first command updates the list of available packages and their versions, while the second command installs the ‘traceroute’ package. The output confirms that the traceroute package has been successfully installed.

Installing Traceroute with YUM

For RPM-based distributions like CentOS, we use the YUM package manager to install the ‘traceroute’ command. Here’s how:

sudo yum check-update
sudo yum install traceroute

# Output:
# Loaded plugins: fastestmirror
# Loading mirror speeds from cached hostfile
#  * base: mirror.sjc02.svwh.net
#  * extras: mirror.sfo12.us.leaseweb.net
#  * updates: mirror.sfo12.us.leaseweb.net
# Resolving Dependencies
# --> Running transaction check
# ---> Package traceroute.x86_64 0:2.0.22-2.el7 will be installed
# --> Finished Dependency Resolution

The first command checks for updates, and the second command installs the ‘traceroute’ package. The output confirms that the traceroute package has been successfully installed.

Installing Traceroute from Source Code

If the package managers don’t offer the version of ‘traceroute’ you need, or if you simply prefer to compile your own binary, you can install ‘traceroute’ from the source code.

First, you need to download the source code. For ‘traceroute’, you can find it on the Debian website. Use the ‘wget’ command to download it:

wget http://deb.debian.org/debian/pool/main/t/traceroute/traceroute_2.1.0.orig.tar.gz

# Output:
# --2022-01-01 12:00:00--  http://deb.debian.org/debian/pool/main/t/traceroute/traceroute_2.1.0.orig.tar.gz
# Resolving deb.debian.org (deb.debian.org)... 151.101.0.204, 151.101.64.204, 151.101.128.204, ...
# Connecting to deb.debian.org (deb.debian.org)|151.101.0.204|:80... connected.
# HTTP request sent, awaiting response... 200 OK
# Length: 45484 (44K) [application/x-gzip]
# Saving to: ‘traceroute_2.1.0.orig.tar.gz’

Next, decompress the tarball and navigate into the new directory:

tar xvf traceroute_2.1.0.orig.tar.gz

# Output:
# traceroute-2.1.0/
# traceroute-2.1.0/COPYING
# traceroute-2.1.0/ChangeLog
# ...

Finally, use ‘make’ to compile the source code and ‘make install’ to install it:

make
sudo make install

# Output:
# cc -DHAVE_CONFIG_H -I.  -D_GNU_SOURCE   -g -O2 -c traceroute.c
# cc -g -O2  -o traceroute traceroute.o -lnsl -lm -lresolv
# /usr/bin/install -c traceroute /usr/local/bin/traceroute
# /usr/bin/install -c -m 644 traceroute.8 /usr/local/share/man/man8/traceroute.8

Installing Different Versions of Traceroute

Different versions of ‘traceroute’ may have different features or be compatible with different systems.

Installing Different Versions from Source Code

To install a different version from source code, you can follow the same steps as above, but download a different tarball. For example, to install version 2.0.22, you would start with:

wget http://deb.debian.org/debian/pool/main/t/traceroute/traceroute_2.0.22.orig.tar.gz

Installing Different Versions with Package Managers

With package managers, you can often specify a version to install. For example, with APT, you can use the ‘=’ operator:

sudo apt-get install traceroute=2.0.22-2

With YUM, you can use the ‘-‘ operator:

sudo yum install traceroute-2.0.22-2

However, not all versions may be available in the repositories used by your package manager.

Version Comparison

VersionNotable ChangesCompatibility
2.1.0Latest stable releaseMost systems
2.0.22Last version before major updateOlder systems

Basic Usage of Traceroute

To use ‘traceroute’, you simply need to type ‘traceroute’ followed by the destination you want to trace a route to. For example:

traceroute example.com

# Output:
# traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
#  1  router (192.168.1.1)  1.275 ms  1.233 ms  1.211 ms
#  2  10.0.0.1 (10.0.0.1)  10.591 ms  10.589 ms  10.564 ms
#  3  * * *
#  4  * * *
#  5  * * *
#  6  example.com (93.184.216.34)  20.204 ms  20.393 ms  20.360 ms

This shows the route from your computer to example.com, including the time taken to reach each hop. If a ‘*’ is shown, that means the packet was lost or dropped.

Verifying Traceroute Installation

To verify that ‘traceroute’ is installed correctly, you can use the ‘which’ command:

which traceroute

# Output:
# /usr/sbin/traceroute

This shows the location of the ‘traceroute’ binary, confirming that it is installed.

Exploring Alternative Methods for Route Tracing in Linux

While ‘traceroute’ is a powerful tool, it’s not the only method for tracing routes in Linux. Let’s look at some alternative approaches, their advantages and disadvantages, and when you might want to use them.

The ‘tracepath’ Command

The ‘tracepath’ command is another tool for tracing network paths. It’s similar to ‘traceroute’, but it doesn’t require root privileges and it automatically adjusts the packet length to find the MTU along the path.

Here’s how to use ‘tracepath’:

tracepath example.com

# Output:
#  1?: [LOCALHOST]                      pmtu 1500
#  1:  gateway                                            2.598ms 
#  1:  gateway                                            2.570ms 
#  2:  no reply
#  3:  no reply
#  4:  no reply
#  5:  example.com                                       20.265ms reached
#      Resume: pmtu 1500 

This output is similar to ‘traceroute’, but it includes the Path MTU (PMTU) at each hop.

Manual Route Tracing

You can also trace a route manually by using the ‘ping’ command with increasing TTL values. This method is more time-consuming and less convenient, but it can be useful for understanding exactly what happens at each step of the route.

Here’s how to trace a route manually:

for i in {1..30}; do ping -c 1 -t $i example.com; done

# Output:
# PING example.com (93.184.216.34) 56(84) bytes of data.
# From gateway (192.168.1.1) icmp_seq=1 Time to live exceeded
# ...

This runs a ‘ping’ command for each TTL value from 1 to 30. The output shows the response from each hop along the route.

Comparing Route Tracing Methods

Each of these methods has its own advantages and disadvantages:

MethodAdvantagesDisadvantages
tracerouteDetailed output, widely usedRequires root privileges for full functionality
tracepathAutomatically finds PMTU, doesn’t require rootLess detailed output
ManualComplete control, educationalTime-consuming, less convenient

Which method you should use depends on your specific needs and constraints. If you’re just starting out, ‘traceroute’ is a good choice because of its wide usage and detailed output. If you need to find the PMTU or can’t use root privileges, consider ‘tracepath’. If you want to learn more about how route tracing works, try tracing a route manually.

Common Issues and Solutions with ‘traceroute’

While ‘traceroute’ is a powerful tool, like any software, it can sometimes behave unexpectedly or produce confusing results. Let’s discuss some common issues you may encounter when using the ‘traceroute’ command and how to solve them.

‘traceroute’: command not found

If you see this error, it means ‘traceroute’ is not installed on your system. You can install it using your package manager, as we discussed earlier.

sudo apt-get install traceroute

# Output:
# Reading package lists... Done
# Building dependency tree
# Reading state information... Done
# The following NEW packages will be installed:
#   traceroute
# 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
# Need to get 45.3 kB of archives.
# After this operation, 192 kB of additional disk space will be used.
# Get:1 http://archive.ubuntu.com/ubuntu bionic/universe amd64 traceroute amd64 1:2.1.0-2 [45.3 kB]
# Fetched 45.3 kB in 1s (33.3 kB/s)
# Selecting previously unselected package traceroute.
# (Reading database ... 130812 files and directories currently installed.)
# Preparing to unpack .../traceroute_1%3a2.1.0-2_amd64.deb ...
# Unpacking traceroute (1:2.1.0-2) ...
# Setting up traceroute (1:2.1.0-2) ...
# Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

‘traceroute’ output shows ‘*’ for all hops

If you see ‘*’ for all hops, it means the packets are not reaching their destination or responses are not coming back. This could be due to a network issue, a firewall blocking ICMP packets, or the destination host not responding. You may need to check your network settings or contact your network administrator.

‘traceroute’ takes a long time or doesn’t finish

If ‘traceroute’ takes a long time or doesn’t finish, it could be due to network congestion, high packet loss, or a routing loop. You can try using the ‘-w’ option to adjust the wait time for responses, or the ‘-m’ option to adjust the maximum number of hops.

traceroute -w 5 -m 20 example.com

# Output:
# traceroute to example.com (93.184.216.34), 20 hops max, 60 byte packets
#  1  router (192.168.1.1)  1.275 ms  1.233 ms  1.211 ms
#  2  10.0.0.1 (10.0.0.1)  10.591 ms  10.589 ms  10.564 ms
#  3  * * *
#  4  * * *
#  5  * * *
#  6  example.com (93.184.216.34)  20.204 ms  20.393 ms  20.360 ms

In this example, we’ve set the wait time to 5 seconds and the maximum number of hops to 20. This can help speed up ‘traceroute’ or prevent it from getting stuck in a routing loop.

Remember, ‘traceroute’ is a diagnostic tool, so unexpected results often indicate network issues that need to be investigated.

Delving into Network Routing Fundamentals in Linux

Before we delve deeper into the ‘traceroute’ command, let’s take a step back and understand the underlying concept: network routing in Linux. This knowledge will help you get a better grasp of the ‘traceroute’ command and its importance in network troubleshooting.

Static vs Dynamic Routing

In Linux, there are two main types of routing: static and dynamic. Static routing is where routes are manually set up by an administrator, while dynamic routing involves protocols that automatically calculate routes.

# Example of a static route
sudo ip route add 192.0.2.0/24 via 203.0.113.1 dev eth0

# Output:
# [No output means the command was successful]

In this example, we’re manually adding a static route to the network 192.0.2.0/24 via the gateway 203.0.113.1 on the network interface ‘eth0’. This command doesn’t produce any output if it’s successful.

Dynamic routing, on the other hand, uses protocols like RIP, OSPF, or BGP to automatically calculate the best path for data packets.

Importance of Route Tracing in Network Troubleshooting

Route tracing, as performed by the ‘traceroute’ command, is an essential tool for network troubleshooting. It allows you to visualize the path data packets take from your computer to a destination host. This can help you identify where problems are occurring when data isn’t reaching its intended destination.

For example, if you’re experiencing a slow network connection, running a ‘traceroute’ to the server you’re trying to reach can help identify if there’s a particular hop along the route that’s causing a delay.

traceroute slow-website.com

# Output:
# traceroute to slow-website.com (203.0.113.1), 30 hops max, 60 byte packets
#  1  router (192.168.1.1)  1.275 ms  1.233 ms  1.211 ms
#  2  10.0.0.1 (10.0.0.1)  10.591 ms  10.589 ms  10.564 ms
#  3  * * *
#  4  slow-isp.com (203.0.113.1)  120.204 ms  120.393 ms  120.360 ms
#  5  slow-website.com (203.0.113.2)  20.204 ms  20.393 ms  20.360 ms

In this example, you can see that the fourth hop to ‘slow-isp.com’ is taking significantly longer than the other hops. This suggests that the issue may be with ‘slow-isp.com’.

The Relevance of Route Tracing in Network Administration and Security

Route tracing is an essential tool in the arsenal of network administrators and security professionals. By providing a detailed path of network traffic, it enables these professionals to pinpoint bottlenecks, detect anomalies, and troubleshoot connectivity issues. It’s a first line of defense in diagnosing network problems and ensuring optimal performance.

Exploring IP Routing and Subnetting in Linux

‘IP routing’ and ‘subnetting’ are two fundamental concepts in network administration. IP routing is the process of sending data from a source to a destination on a network. Subnetting, on the other hand, is a way to divide a network into smaller, more manageable pieces.

# Displaying the IP routing table
ip route show

# Output:
# default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.2 metric 100
# 192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
# 192.168.1.1 dev eth0 proto dhcp scope link src 192.168.1.2 metric 100

In this example, we’re displaying the IP routing table, which shows how packets will be forwarded based on their destination IP address.

Further Resources for Network Mastery in Linux

If you’re interested in delving deeper into these topics, here are some resources that provide a wealth of information:

  1. Linux Network Administrator’s Guide: An in-depth guide to network administration in Linux, covering everything from basic networking concepts to advanced topics like IP routing and subnetting.

  2. The Linux Documentation Project: A comprehensive resource for all things Linux, including detailed guides on networking and security.

  3. Linux Networking Commands: This tutorial covers the basics of networking in Linux, including IP addressing, routing, and subnetting.

Wrapping Up: Installing the ‘traceroute’ Command in Linux

In this comprehensive guide, we’ve explored how to install and use the ‘traceroute’ command in Linux, an essential tool for network diagnostics.

We began with the basics, learning how to install ‘traceroute’ using package managers such as APT and YUM. We then ventured into more advanced territory, exploring how to install ‘traceroute’ from source code, and how to install specific versions. We also delved into the usage of ‘traceroute’, demonstrating how to trace a route to a destination and interpret the output.

Along the way, we tackled common issues you might face when using ‘traceroute’, such as command not found errors and confusing output, providing you with solutions and workarounds for each issue.

We also looked at alternative approaches to route tracing in Linux, comparing ‘traceroute’ with other methods like ‘tracepath’ and manual route tracing. Here’s a quick comparison of these methods:

MethodProsCons
tracerouteDetailed output, widely usedRequires root privileges for full functionality
tracepathAutomatically finds PMTU, doesn’t require rootLess detailed output
ManualComplete control, educationalTime-consuming, less convenient

Whether you’re just starting out with ‘traceroute’ or you’re looking to level up your network troubleshooting skills, we hope this guide has given you a deeper understanding of ‘traceroute’ and its capabilities.

With its balance of detail and wide usage, ‘traceroute’ is a powerful tool for network diagnostics in Linux. Happy troubleshooting!