route Command in Linux

Introduction

In this practical lab, delve into the world of Linux networking and discover how to effectively utilize the route command for both static and dynamic routing configurations. Gain hands-on experience as you explore the function and structure of the route command, learn to set up static routes, and manage dynamic routing scenarios. Through real-world examples, you'll master viewing the routing table, adding new static routes, and removing existing ones. This tutorial equips systemadmin professionals and developers with essential knowledge for managing Linux network routing.

Understand the Purpose and Syntax of the route Command

This section introduces you to the route command within a Linux environment. The primary function of the route command is to interact with the IP routing table, allowing you to view and modify its contents. The IP routing table is fundamental to network communication as it dictates the optimal path for network traffic to reach its designated destination.

Let's examine the basic syntax that governs the route command:

sudo route [command] [destination] [gateway] [metric]

Deconstructing each parameter:

  • command: This parameter specifies the intended action, with common options being add for route creation, del for route deletion, and show for displaying the routing table.
  • destination: Defines the target network or specific host to which the route applies.
  • gateway: Represents the gateway or next-hop router responsible for forwarding network packets toward the destination.
  • metric: This parameter determines the cost or priority associated with the route, which influences routing decisions. Lower values indicate higher priority.

Let's put the route command into practice with some practical examples.

To view the existing routing table, execute the show command:

sudo route -n show

Example output:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

The output showcases the default gateway (0.0.0.0), which handles traffic destined for networks not explicitly listed, and the local network route (172.17.0.0), allowing communication within the local network.

To create a new static route, utilize the add command:

sudo route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.1

This command establishes a route directing traffic destined for the 192.168.1.0/24 network to the gateway at 10.0.0.1.

To remove an existing route, invoke the del command:

sudo route del -net 192.168.1.0 netmask 255.255.255.0

This removes the previously defined route to the 192.168.1.0/24 network.

Configure Static Routes Using the route Command

This section focuses on configuring static routes using the route command. Static routes are manually configured and added to the routing table. They have higher precedence than routes obtained through dynamic routing protocols.

Let's begin by adding a static route to the routing table:

sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 10.0.0.2

This command creates a static route, directing traffic intended for the 192.168.2.0/24 network to the gateway at 10.0.0.2.

Verify the newly added route by executing the route -n command:

sudo route -n

Example output:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    100    0        0 eth0
10.0.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.2.0     10.0.0.2        255.255.255.0   UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

The output clearly displays the new static route for the 192.168.2.0/24 network, utilizing the gateway 10.0.0.2.

To ensure the static route remains persistent even after system reboots, append it to the /etc/network/interfaces file. This file is read during system startup to configure network interfaces and routes.

sudo nano /etc/network/interfaces

Add the following lines to the file:

up route add -net 192.168.2.0 netmask 255.255.255.0 gw 10.0.0.2

This configuration ensures that the static route is automatically added whenever the network interface is activated.

Manage Dynamic Routing with the route Command

This section explains how to manage dynamic routing using the route command. Dynamic routing protocols, such as OSPF, RIP, or BGP, dynamically update the routing table based on network changes. This simplifies the management of complex network topologies by automating route discovery and propagation.

Let's add a default route using the add default command:

sudo route add default gw 10.0.0.1

This command configures a default route. All traffic that doesn't match more specific routes in the routing table will be directed to the specified gateway.

Verify the creation of the new default route by executing route -n:

sudo route -n

Example output:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.1        0.0.0.0         UG    0      0        0 eth0
10.0.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.2.0     10.0.0.2        255.255.255.0   UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

The routing table now contains the default route, using the gateway 10.0.0.1.

To remove a dynamic route, you can use the del command. For example, to remove the default route:

sudo route del default

This removes the default route from the routing table.

Summary

This lab provided a comprehensive overview of the route command in Linux, a fundamental tool for systemadmin professionals managing network routing. Initially, you grasped the purpose and syntax of the command, learning how to view and manipulate the IP routing table. You then progressed to configuring static routes, which offer manual control over network traffic paths. Finally, you explored dynamic routing management, understanding how the route command interacts with dynamic routing protocols to automatically adjust to network changes. This knowledge is crucial for effective network administration and troubleshooting within a Linux environment. You practiced viewing the routing table, as well as adding and deleting routes. Whether you're a seasoned systemadmin or a developer working with Linux networking, the skills acquired in this lab will empower you to efficiently manage network routes.

400+ Linux Commands