Last modified: October 10, 2024

This article is written in: 🇺🇸

Networking

Networking is the practice of connecting computers and devices so that they can communicate and exchange data. It forms the backbone of the internet, local area networks, and even small home networks. To grasp the intricacies of networking, it's imperative to familiarize oneself with key terminologies and concepts.

TODO:

Basic Networking Terms

Understanding the fundamentals can pave the way for more advanced networking tasks. Here's a breakdown of basic networking terms:

Network Interfaces

A network interface serves as the point of interconnection between a device and a network.

+--------------------------------------------------------+
|                      COMPUTER SYSTEM                   |
|                                                        |
|   +------------------------------------------------+   |
|   |                   OPERATING SYSTEM             |   |
|   |                                                |   |
|   |   +--------------+          +--------------+   |   |
|   |   | APPLICATION  |    <->   | APPLICATION  |   |   |
|   |   +--------------+          +--------------+   |   |
|   |                      ...                       |   |
|   |   +----------------------------------------+   |   |
|   |   |            NETWORK STACK               |   |   |
|   |   +----------------------------------------+   |   |
|   +------------------------------------------------+   |
|                |                       |               |
|        +-------+-------+       +-------+-------+       |
|        | NETWORK CARD  |       | WIRELESS CARD |       |
|        +---------------+       +---------------+       |
|                                                        |
+--------------------------------------------------------+

Different types of network interfaces include:

MAC Addresses

A MAC (Media Access Control) address is a hardware-based unique identifier for every network interface. It's used for device identification and tracking on a network. The MAC address is either hardcoded into a physical network card at the time of manufacturing or assigned to a virtual adapter during its creation. A typical MAC address format is: aa:bb:cc:dd:ee:ff.

+-----------------------------------------+
|   Manufacturer ID   | Device Identifier |
+-----------------------------------------+
         xx:xx:xx     :     xx:xx:xx

To retrieve the MAC address of a network interface on a Linux-based system, the ip link command is useful:

ip link show

This command's output will enumerate details about all the network interfaces present on your system. The MAC address is highlighted adjacent to the link/ether field.

For example:

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff

In the provided example, the MAC address associated with the eth0 interface is 00:11:22:33:44:55.

IP Addresses

An IP (Internet Protocol) address is a unique numerical label assigned to every device participating in a computer network that uses the Internet Protocol for communication. IP addresses help in identifying and locating devices on a network, ensuring proper routing of data packets. Contrary to a common misconception, IP addresses range from 0.0.0.0 to 255.255.255.255. While a device can possess multiple IP addresses, each must be unique within its network.

IPv4 Address: 192.168.1.10

+-----+-----+-----+-----+
| 192 | 168 |  1  |  10 |
+-----+-----+-----+-----+
  |     |     |      |
  |     |     |      +--- Host ID (Identifies device in local network)
  |     |     +-------- Subnet (Often represents different segments of a network)
  |     +----------- Private Address Space (Commonly used in local networks)
  +-------------- Network ID (Identifies the specific network)

Private IP Addresses

Private IP addresses are reserved for internal use within a local network and are not routable on the public internet. Devices within the same local network communicate using these private IPs. Routers or other Network Address Translation (NAT) devices translate these addresses to a public IP when accessing the internet. Here are the typical reserved ranges for private IP addresses:

+---------------------------------+
       |       Private IP Address        |
       +---------------------------------+
       |                                 |
+------|---------++-----------------++---|-------------+
| 10.x.x.x       ||  172.16.x.x     || 192.168.x.x     |
| to             ||  to             || to              |
| 10.255.255.255 ||  172.31.255.255 || 192.168.255.255 |
+----------------++-----------------++-----------------+
   |                      |                 |
   |                      |                 +-----> Commonly used in home networks, 
   |                      |                         small offices, etc.
   |                      |
   |                      +--------> Used by medium-sized enterprises due to 
   |                                 the larger subnetting options it offers.
   |
   +---------> Rarely used in home networks but can be found in 
               larger enterprises due to its vast address space.

To retrieve your device's private IP address, utilize the terminal with this command:

ip -4 address show

The output showcases details about your network interfaces and their corresponding IPv4 addresses. Specifically, search for the inet label which is immediately followed by the IP address.

Sample output:

2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0

In the depicted sample, the private IP address for the eth0 interface is 192.168.1.10.

Public IP Addresses

A public IP address uniquely identifies your network on the worldwide internet. Internet Service Providers (ISPs) assign this address to your router or modem, making it the external face of your network. Whenever you interact with a website or an online service, this public IP address is the identifiable source of your connection.

Internet
                      +----------------+
                      |                |
                      |   WWW  Cloud   |
                      |                |
                      +--------+-------+
                               |
                               | Public IP (e.g., 203.0.113.10)
                               |
                      +--------+-------+
                      |    Router      |
                      +--------+-------+
           /                   |                   \
          /                    |                    \
      Private IP           Private IP            Private IP
(e.g., 192.168.1.2)  (e.g., 192.168.1.3)  (e.g., 192.168.1.4)
 Device A     Device B     Device C

For identifying your public IP address, third-party services can be handy. Using tools like curl in combination with online utilities such as ifconfig.me, ipify.org, or icanhazip.com can fetch your public IP. Here's how you can do it:

curl ifconfig.me

Your public IP address will be displayed as an output. For instance:

203.0.113.10

Note: Since public IP addresses are exposed to the internet, they're susceptible to malicious actors and potential cyber threats. It's crucial to ensure proper security measures like firewalls and VPNs to protect your network.

DHCP (Dynamic Host Configuration Protocol)

As networks grow and accommodate more devices, manually assigning IP addresses to each one becomes cumbersome and inefficient. DHCP, or Dynamic Host Configuration Protocol, automates this process, enabling seamless IP address allocation.

Device (DHCP Client)                 DHCP Server
      |                                  |
      |                                  |
      |    1. DHCPDISCOVER               |
      |--------------------------------->|
      |                                  |
      |                                  |
      |    2. DHCPOFFER                  |
      |<---------------------------------|
      |                                  |
      |                                  |
      |    3. DHCPREQUEST                |
      |--------------------------------->|
      |                                  |
      |                                  |
      |    4. DHCPACK                    |
      |<---------------------------------|
      |                                  |
      |                                  |

When a device, often referred to as a DHCP client, joins a network, it sends out a broadcast message requesting an IP address. If a DHCP server is present within the network, it responds by assigning an available IP address to that device. To ensure no IP address conflicts arise, the DHCP server maintains a record of all allocated IP addresses, thus preventing the same address from being assigned to multiple devices.

Benefits of DHCP

DHCP Lease Process

  1. The device broadcasts a message, seeking a DHCP server.
  2. The DHCP server responds with an IP address offer.
  3. The device requests the offered IP address.
  4. The DHCP server acknowledges and finalizes the IP address allocation.

To determine if a device is utilizing DHCP, inspect its network configuration or interface information. The presence of the term "dynamic" often indicates an IP address assigned via DHCP.

Limitations of DHCP

While DHCP is incredibly valuable, it might not be suitable for every scenario. Devices that necessitate consistent, unchanging IP addresses—such as servers or printers—might be better off with a static IP assignment. This can be achieved in two ways:

Setting Up DHCP

On Linux systems, DHCP client configurations can often be found and modified within the /etc/dhcp/dhclient.conf file. Editing this file allows users to define custom configurations for obtaining IP addresses from a DHCP server.

In conclusion, DHCP streamlines the IP address management process, especially for larger networks or environments with frequently changing devices. However, for infrastructure components that require a stable IP address, static assignments or reservations are recommended.

Networking Commands

Networking commands are essential for configuring, managing, and troubleshooting network connections on a system. Below are some commonly used commands and their typical use-cases:

ifconfig

Historically one of the primary tools for network configuration on Linux systems, ifconfig displays information about all active network interfaces, including their IP addresses, MAC addresses, and more.

Usage:

Note: While ifconfig is still widely used, it's considered deprecated in many modern Linux distributions in favor of the ip command.

ip

The ip command is a versatile and powerful tool for network administration, replacing functionalities previously offered by ifconfig, route, and others.

Usage:

ping

The ping command is a network diagnostic tool used to test the connectivity between your computer and another host, usually specified by an IP address or a domain name. It works by sending ICMP echo request packets to the target host and waits for a reply.

Usage:

netstat

This tool provides network statistics. It's useful for displaying active network connections, listening ports, and network protocol statistics.

Usage:

traceroute

traceroute helps in identifying the route taken by packets across a network. It's particularly useful for troubleshooting network slowdowns and failures.

Usage:

route

The route command is a crucial tool for managing the IP routing table in Unix-based systems. This table controls how packets are forwarded and routed between different networks and hosts.

Usage:

The changes made using the route command are temporary and will be lost after a system reboot. To make routes persistent across reboots:

Network Manager daemon

Network Manager is a versatile service on Linux systems responsible for managing network configurations, making it easier to handle network resources on both desktops and servers.

+------------+      +-------------+     +------------+
|            |      |             |     |            |
|  User GUI  <------>  Network    <----->  Network   |
|   Tools    |      |  Manager    |     | Interfaces |
|  (nmtui,   |      |  Daemon     |     | (eth0, wlan0,..)
| nm-applet) |      |             |     |            |
|            |      |             |     |            |
+------------+      +------^------+     +------------+
                           |
                           |
                      +----v----+
                      |         |
                      |  D-Bus  |
                      |         |
                      +----^----+
                           |
                           |
                     +-----v------+
                     |            |
                     |  System    |
                     |  Services  |
                     |(DNS, DHCP, |
                     |  VPN,...)  |
                     |            |
                     +------------+

Features

I. Interfaces

II. Versatile Connectivity Support

Network Manager is adept at handling a variety of connection types, not just wired networks. Its capabilities extend to:

III. Network Profiles and Configurations

One of the key strengths of Network Manager is its ability to manage multiple network profiles:

Examples

Configuring a Static IP Address

Setting a static IP can be essential for devices that should have a consistent IP, like servers or specific workstations. Here's the command structure:

CODE_BLOCK_PLACEHOLDER`

For example, to assign the IP 192.168.1.10 with a subnet mask of 255.255.255.0 (prefix 24) and gateway 192.168.1.1 to eth0, execute:

nmcli con add con-name [interface] type ethernet ifname [interface] ipv4.method manual ipv4.address [IP address]/[network prefix] ipv4.gateway [default gateway]

Configuring a Dynamic IP Address with DHCP

For devices that don't need a fixed IP, obtaining one dynamically via DHCP is the way to go:

nmcli con add con-name eth0 type ethernet ifname eth0 ipv4.method manual ipv4.address 192.168.1.10/24 ipv4.gateway 192.168.1.1

For eth0:

nmcli con add con-name [interface] type ethernet ifname [interface] ipv4.method auto

Text-based UI with nmtui

nmtui, or Network Manager Text User Interface, is an excellent alternative for those operating on a system without a GUI or who find the nmcli command line interface a bit intimidating. It strikes a balance by providing a user-friendly, text-based interface for managing network settings.

To launch nmtui, simply enter the following in your terminal:

nmcli con add con-name eth0 type ethernet ifname eth0 ipv4.method auto

This command opens up a straightforward, menu-driven interface where you can navigate using your keyboard to configure network settings. It's particularly useful for:

Once you've made your adjustments and saved them within nmtui, you can apply these changes by restarting the Network Manager service. This ensures that your network configurations are updated and active. To restart Network Manager, use:

nmtui

DNS

The Domain Name System (DNS) serves as the internet's phonebook. It allows users to input human-friendly domain names, like www.example.com, and translates them into IP addresses that computers use for communication.

systemctl restart NetworkManager

Understanding DNS

  1. Before resorting to DNS servers, a computer will first check its local /etc/hosts file to see if there's a stored mapping for the requested domain to an IP address.
  2. If the /etc/hosts doesn't have the needed mapping, the system consults the /etc/resolv.conf file to determine which DNS server it should query.
  3. The computer sends a request to the identified DNS server to fetch the corresponding IP address for the domain.

Modifying DNS Settings

Changing DNS servers can provide various benefits, including faster browsing, improved security, and the ability to bypass regional restrictions on websites. Adjusting your DNS settings can help you take advantage of these features.

I. Using nmtui

The Network Manager Text User Interface (nmtui) is a user-friendly, text-based tool for modifying network configurations, including DNS settings. To adjust DNS configurations:

II. Direct Configuration File Edits

Editing configuration files manually is another method to set DNS servers. Follow these steps:

Example configuration:

User's Device               Local DNS Resolver       Root & Top-Level
      |                               |                Domain (TLD) Servers
      |                               |                          |
      |    1. Request                 |                          |
      |    "www.example.com"          |                          |
      |------------------------------>|                          |
      |                               |                          |
      |    2. Ask Root Server         |                          |
      |------------------------------>|                          |
      |                               | 3. Reply with .com Server|
      |                               |<-------------------------|
      |                               |                          |
      |                               |                          |
      |    4. Ask .com Server         |                          |
      |------------------------------>|                          |
      |                               |  5. Reply with IP for    |
      |                               |   "www.example.com"     |
      |                               |<-------------------------|
      |                               |                          |
      |                               |                          |
      |  6. Return IP to User's Device|                          |
      |<------------------------------|                          |
      |                               |                          |
      |                               |                          |

After making these changes, restart the network service to apply them.

III. Verifying DNS Configuration

To check the active DNS settings, inspect the /etc/resolv.conf file. This file lists the DNS servers your system is using, identified with nameserver tags.

For example, /etc/resolv.conf might contain:

DEVICE=eth0
...
DNS1=8.8.8.8
DNS2=8.8.4.4

DNS Troubleshooting

DNS issues can arise due to misconfigurations, unreachable DNS servers, or delays in DNS record updates. When encountering difficulties accessing websites, it's crucial to determine if DNS is the underlying problem.

Potential Indicators of DNS Issues:

  1. If you can't reach websites using their domain names but can access them using direct IP addresses, it could indicate DNS issues.
  2. Errors like "Server not found" or "DNS resolution error" in web browsers often point to DNS problems.
  3. Issues may occur after modifying DNS settings or switching to a new DNS server.

Tools for DNS Diagnostics:

I. dig

II. nslookup

III. host

Default Gateway

The default gateway is a critical networking concept, functioning as the intermediary device, typically a router, which forwards network traffic from the local network to other distant networks or the internet. It's the "gate" between two networks, and it acts as the default route when no specific path is defined for a data packet.

nameserver 8.8.8.8
nameserver 8.8.4.4

Importance of a Default Gateway

  1. Enables devices within a local network to communicate with devices on external networks, including the wider internet.
  2. When a device needs to communicate with another that isn't within its local network, it sends the data packet to the default gateway. The gateway then determines where to forward that packet to reach its final destination.
  3. If the network doesn't have a predetermined route for a packet, it will send it to the default gateway.

How to Display the Default Gateway

You can quickly determine the currently configured default gateway on a Linux system with the following command:

+----------------+     +---------------+     +---------------------+
| Local Device A |     |   Local       |     | External Device/    |
| 192.168.1.2    |-----|   Network     |-----| Internet            |
+----------------+     | 192.168.1.0/24|     +---------------------+
                       | Gateway:      |
+----------------+     | 192.168.1.1   |
| Local Device B |     +---------------+
| 192.168.1.3    |
+----------------+

This command fetches the routing table, filters out the default route, and then extracts the IP address of the default gateway.

How to Set or Remove a Default Gateway

While the ip command has largely replaced route for many network configurations, you can still use route to manage the default gateway:

I. Set a Default Gateway

The following command establishes a default gateway, routing all external traffic through the specified IP address:

ip route show | grep 'default' | awk '{print $3}'

II. Remove the Default Gateway

If you need to remove the currently configured default gateway, perhaps for troubleshooting or to set a new one, use:

route add default gw 192.168.1.254

Using ip to Manage the Default Gateway

The ip command provides more advanced features and is now the preferred tool for many network configuration tasks:

I. Set a Default Gateway

route del default

II. Remove the Default Gateway

ip route add default via 192.168.1.254

Packet Analysis

Packet analysis, often termed packet sniffing, delves into the observation and detailed examination of network traffic. By capturing the individual packets—data's essential building blocks—circulating between network devices, administrators and security experts can:

ip route del default

A Command-Line Packet Analyzer tcpdump

tcpdump is an essential packet analysis tool for Linux, providing powerful capabilities for packet capture and analysis from the command line.

Example of Packet Capture with tcpdump:

To capture packets on the eth0 network interface and save them to a file:

+-----------------------+
                    |       Internet        |
                    +-----------------------+
                               |
                               |
                               v
+--------------+        +-------+-------+        +---------------+
| Source       |  ====> | Packet River  |  ====> | Destination  |
| Device       |  <==== |               |  <==== | Device       |
+--------------+        +-------+-------+        +---------------+
                                ^
                                |
                    [Packet Analysis Tool]
                         /      |     \
                        /       |      \
                    Source    Data    Destination
                   Address            Address

Explanation:

Advanced Options in tcpdump:

I. Limiting Packet Capture (-c)

Set a specific number of packets to capture. For example, -c 10 will limit the capture to 10 packets:

tcpdump -i eth0 -w traffic.pcap

II. Setting Snapshot Length (-s)

Defines the maximum amount of each packet to capture, measured in bytes. -s 100 captures the first 100 bytes of each packet:

tcpdump -i eth0 -w traffic.pcap -c 10

III. Using Packet Filters (-f)

Filters capture to specific packet types or criteria. For example, capturing only HTTP traffic (typically port 80):

tcpdump -i eth0 -w traffic.pcap -s 100

IP Forwarding

IP forwarding, sometimes referred to as packet forwarding or routing, facilitates the relay of data packets across different networks.

tcpdump -i eth0 -w traffic.pcap -f "port 80"

This mechanism is important for:

Activating and Verifying IP Forwarding:

I. Check the current IP forwarding status

+-------------+       +------------+       +-------------+
| Network A   |       |            |       | Network B   |
| 192.168.1.0 |-------|  IP        |-------| 10.0.1.0    |
|   /24       |       | Forwarding |       |   /24       |
+-------------+       |  Device    |       +-------------+
                      | (Router)   |
+-------------+       |            |       +-------------+
| Network C   |       |            |       | Network D   |
| 10.0.2.0    |-------|            |-------| 172.16.1.0  |
|   /24       |       +------------+       |   /24       |
+-------------+                            +-------------+

II. Temporarily enable IP forwarding

cat /proc/sys/net/ipv4/ip_forward

III. Permanently enable IP forwarding

Modify the /etc/sysctl.conf file, appending these configurations:

sysctl -w net.ipv4.ip_forward=1 # For IPv4 forwarding
sysctl -w net.ipv6.conf.all.forwarding=1 # For IPv6 forwarding

Apply the changes and restart the network services:

net.ipv4.ip_forward=1 # Activates IPv4 forwarding
net.ipv6.conf.all.forwarding=1 # Activates IPv6 forwarding

Note: IP forwarding should be enabled judiciously, keeping security considerations in mind. When active, it allows the device to forward packets from one network to another, which, if not secured correctly, can be a potential vulnerability.

Network Troubleshooting

Network troubleshooting is a crucial skill for IT professionals. Adopting a systematic and structured approach to troubleshooting can hasten the resolution of network issues.

Steps for Network Troubleshooting:

I. Verify Network Connection and Settings

Ensure the network interface is active and its configuration is correct.

sysctl -p /etc/sysctl.conf
service network restart # For RedHat and related distributions
/etc/init.d/networking restart # For Debian and its derivatives

Example of Incorrect Output for ip link:

ip link
ip -4 address

The state DOWN shows that the interface is not active, which is a sign of a problem.

Example of Incorrect Output for ip -4 address:

2: eth0: <broadcast,multicast> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000

An IP in the 169.254.x.x range suggests a failure in DHCP configuration or a lack of connectivity with the DHCP server, often seen in Windows as "Limited Connectivity".

II. Inspect Routing Table

The routing table guides packet direction. Confirm routes, particularly the default gateway, are correctly configured.

inet 169.254.x.x/16 brd 169.254.x.x scope global dynamic eth0

Incorrect Output for ip route:

ip route
route -n

If the default gateway IP doesn’t match your network's actual gateway, or if the network route points to the wrong interface (like eth1 instead of eth0), there's a configuration issue.

Incorrect Output for route -n:

default via 192.168.1.1 dev eth0 metric 202 
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.3

A gateway of 0.0.0.0 or a mismatched subnet suggests routing issues that could hinder network communication.

III. Examine Firewall Rules

Firewalls can block or allow specific traffic. Verify that firewall settings are correctly configured to permit essential traffic and block potential threats.

On Linux:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         UG    0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

On Windows:

iptables -L

IV. Monitor Network Traffic

Utilize tools like tcpdump and Wireshark for packet inspection, aiding in spotting unusual patterns or malicious activities.

Capturing packets with tcpdump:

netsh advfirewall firewall show rule name=all

What to Look For:

Example of Potential Issue:

tcpdump -i eth0

Repeated lines like this could suggest a potential network scan or attack attempt.

Using netstat to Review Network Statistics and Active Connections:

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
23:45:10.123456 IP [suspicious IP] > [your IP].http: Flags [S], seq 123456789:123456890, win 65535, length 0

What to Look For:

Example of Potential Issue:

netstat -s

Here, a high number of retransmitted segments could point to network congestion or reliability issues.

V. Assess Physical Hardware

Hardware problems are common culprits. Look for:

VI. Reset Network Settings or Services

Sometimes restarting network services can resolve issues due to temporary glitches.

On Linux:

Tcp:
    5 active connections openings
    20 passive connection openings
    2 failed connection attempts
    25 retransmitted segments
    3 resets sent

On Windows (replace 'service_name' with the actual service name):

systemctl restart networking

Challenges

  1. Configure a static IP address, subnet mask, and default gateway for a network interface on your Linux system by editing network configuration files or using the ip command. Explain the purpose of each setting and discuss how IP addressing impacts network communication.
  2. Edit the /etc/resolv.conf file to set up a DNS server, then test DNS resolution using tools like dig, nslookup, or host. Discuss the role of DNS in network communication and how it translates domain names to IP addresses.
  3. Enable and disable IP forwarding on your Linux system and test its functionality by routing packets between two connected networks. Verify packet forwarding with ping or traceroute and explain how IP forwarding is essential in network routing.
  4. Use tcpdump to capture network packets on a specified interface and save the output to a file. Analyze the captured data to identify key patterns, potential network issues, or unusual traffic. Discuss how packet capture helps in network troubleshooting and security monitoring.
  5. Set up a basic VPN (Virtual Private Network) connection between two Linux systems, using software such as OpenVPN or WireGuard. Test encrypted communication between the two systems and explain the advantages of VPNs for secure remote access.
  6. Implement network bridging between two network interfaces on your system. Verify the setup by confirming that traffic can flow seamlessly between the bridged interfaces, and discuss how network bridging can be used to extend or join networks.
  7. Simulate common network issues (e.g., incorrect IP settings, DNS failure, routing issues) and practice troubleshooting by checking the connection status, inspecting the routing table, and verifying configuration files. Document the steps you took to identify and resolve each issue.
  8. Use traceroute to map the network path to a remote IP address and identify any potential bottlenecks or delays in the route. Discuss how traceroute reveals the path data packets take and why certain hops might exhibit higher latency.
  9. Install and configure a simple web server (Apache or Nginx), then access it from a web browser to ensure it’s serving content properly. Examine the server's access logs to track requests and discuss the basics of HTTP communication and web server functionality.
  10. Explore your system’s network connections and listening ports using netstat or ss. Identify which services are listening on which ports, and explain how these tools can help monitor network services, detect potential issues, and enhance security.

Table of Contents

  1. Basic Networking Terms
    1. Network Interfaces
    2. MAC Addresses
    3. IP Addresses
      1. Private IP Addresses
      2. Public IP Addresses
    4. DHCP (Dynamic Host Configuration Protocol)
      1. Benefits of DHCP
      2. DHCP Lease Process
      3. Limitations of DHCP
      4. Setting Up DHCP
  2. Networking Commands
    1. ifconfig
    2. ip
    3. ping
    4. netstat
    5. traceroute
    6. route
  3. Network Manager daemon
    1. Features
    2. Examples
    3. Configuring a Static IP Address
    4. Configuring a Dynamic IP Address with DHCP
    5. Text-based UI with nmtui
  4. DNS
    1. Understanding DNS
    2. Modifying DNS Settings
    3. DNS Troubleshooting
  5. Default Gateway
    1. Importance of a Default Gateway
    2. How to Display the Default Gateway
    3. How to Set or Remove a Default Gateway
    4. Using ip to Manage the Default Gateway
  6. Packet Analysis
    1. A Command-Line Packet Analyzer tcpdump
  7. IP Forwarding
  8. Network Troubleshooting
    1. Challenges