Linux Networking: A Simplified Guide to IP Addresses and Routing

Linux Networking: A Simplified Guide to IP Addresses and Routing

Every Linux enthusiast or administrator, at some point, encounters the need to configure or troubleshoot network settings. While the process can appear intimidating, with the right knowledge and tools, mastering Linux networking can be both enlightening and empowering. In this guide, we'll explore the essentials of configuring IP addresses and routing on Linux systems.

Understanding Basic Networking Concepts

What is an IP address?

Every device connected to a network has a unique identifier known as an IP address. This serves as its 'address' in the vast interconnected world of the Internet.

  • IPv4 vs. IPv6: While IPv4 is still prevalent, its successor, IPv6, offers a larger address space and improved features. IPv4 addresses look like, whereas IPv6 addresses resemble 1200:0000:AB00:1234:0000:2552:7777:1313.

  • Public vs. Private IPs: Public IPs are globally unique and directly reachable over the Internet. Private IPs are reserved for internal network use and are not routable on the public Internet.

Subnet Masks and Gateways

A subnet mask determines which portion of an IP address is the network and which is the host. The gateway, typically a router, connects local networks to external networks.


At its core, routing is the mechanism that determines how data should travel from its source to its destination across interconnected networks.

Network Configuration Tools in Linux

Linux offers both traditional tools like ifconfig and route and modern ones like ip, nmcli, and nmtui. The choice of tool often depends on the specific distribution and the administrator's preference.

NetworkManager and systemd-networkd have also modernized network management, providing both CLI and GUI tools for configuration.

Configuring IP Addresses in Linux

  1. Using the ip command:

    • Display Current Configuration: ip addr show
    • Assign a Static IP: ip addr add dev eth0
    • Remove an IP Address: ip addr del dev eth0
  2. Using nmcli for NetworkManager:

    • Display Connection Details: nmcli connection show
    • Set a Static IP: nmcli con mod "Connection Name" ipv4.addresses "" ipv4.method manual
    • Activate a Connection: nmcli con up "Connection Name"
  3. Using GUI tools: Different Linux distributions come with different desktop environments. Most of these environments provide intuitive network configuration utilities.

Configuring Routing in Linux
  1. Understanding Routing Tables: A routing table contains rules that determine where network traffic should go. To view it, use: ip route show

  2. Modifying the Routing Table:

    • Add a Route: ip route add via
    • Delete a Route: ip route del
    • Change the Default Gateway: ip route add default via
  3. Using nmcli for Routing:

    • Display Routes: nmcli connection show "Connection Name" | grep route
Automatic IP Configuration: DHCP

DHCP automatically assigns IP addresses and other network configurations to devices. This dynamic approach eliminates the need for manual configuration.

To request a DHCP lease: dhclient eth0

IPv6 Considerations

While IPv4 remains dominant, IPv6 is gaining traction. One notable feature of IPv6 is its link-local addresses, which are automatically configured for every interface and used for local communications.

Troubleshooting Network Issues

Common tools for troubleshooting include:

  • ping: Check the reachability of a host.
  • traceroute: Trace the route packets take to a network host.
  • netstat: Display network connections, routing tables, and more.
Securing Your Network Configuration

To protect your Linux system, use firewalls like ufw or iptables. Also, ensure you regularly update your software to patch vulnerabilities and adopt good security practices.


With a foundational understanding and hands-on experimentation, Linux networking becomes less daunting. While challenges may arise, equipped with knowledge and tools, you're well-prepared to navigate the interconnected web of Linux networks.

George Whittaker is the editor of Linux Journal, and also a regular contributor. George has been writing about technology for two decades, and has been a Linux user for over 15 years. In his free time he enjoys programming, reading, and gaming.

Load Disqus comments