Lab 5: Networking Essentials¶
Objectives¶
After completing this lab, you will be able to:
- Create virtual network devices
- Manage network devices and settings on a Linux system using the
iproute2(ip) toolkit - Manage network devices and settings on a Linux system using NetworkManager (
nmcli) toolkit - Troubleshoot common network issues
Estimated time to complete this lab: 60 minutes
Overview¶
This Networking Essentials lab covers various network configuration and troubleshooting exercises on a Linux server. You will be better equipped to manage and troubleshoot network settings using common networking utilities readily available on Linux based systems.
Exercise 1¶
Change Hostname¶
There are many methods for identifying or referring to computers. Some of these methods guarantee uniqueness [ especially on a network], and others don't. A computer hostname can be regarded as a human-friendly name. Computer hostnames should ideally be unique depending on how they are managed and assigned. But because anyone with the Administrative privileges on a system can unilaterally assign whatever hostname they want to the system - uniqueness is not always guaranteed.
This first exercise walks through some common tools for managing the computer hostname.
To change the system's hostname¶
-
While logged into your system, view the current hostname, using the popular
hostnameutility. Type:hostname -
Run the
hostnameutility again with a different option to view the server's FQDN:hostname --fqdnQuestion
What does FQDN stand for? And why is the result of your server plain server hostname different from its FQDN?
-
Use the
hostnamectlutility to view the current hostnames. Type:hostnamectl
That's a lot of extra information!
-
Add the
--staticoption to thehostnamectlcommand to view the static hostname for your server. Type:hostnamectl --static -
Add the
--transientoption to thehostnamectlcommand to view the transient hostname for your server. -
Now try the
--prettyoption to thehostnamectlcommand to view the pretty hostname for your server. -
Set a new transient hostname for your server. Type:
hostnamectl --transient set-hostname my-temp-server1 -
Verify the transient hostname change. Type:
hostnamectl --transient -
Set a new static hostname for your server. Type:
hostnamectl set-hostname my-static-hostname1 -
Verify the static hostname change.
Question
Consult the man page for
hostnamectl. What are the differences between pretty, transient and static hostnames?
Exercise 2¶
The first critical step you need to complete before going on to the other exercises in this network lab will be creating a special virtual network interface known as a MACVTAP device.
MACVTAP devices are virtual devices that combine the properties of a softwarei-only interface known as a TAP device as well as the properties of the MACVLAN driver.
Creating and working with these MACVTAP devices will allow you to safely test, change, and configure various network configuration-related tasks. These virtual network interfaces will be used in various exercises without disrupting the existing network configuration.
Tip
TAP devices provide a software-only interface that user-space applications can easily access. TAP devices send and receive raw Ethernet frames. MACVLAN is used for creating virtual network interfaces that attach to physical network interfaces. The MACVTAP devices have their own unique MAC address distinct from the MAC address of the underlying physical network card they are associated with.
Create MACVTAP Interfaces¶
This exercise starts with creating needed MACVTAP virtual network interfaces. This will allow you to safely test, change, and configure various network configuration related tasks. These virtual network interfaces will be used in various exercises without disrupting the existing network configuration.
To list all network interfaces on the system¶
-
Ensure you are logged into the server.
-
Use the
ipprogram to view the existing network interfaces on your system. Type:ip link show -
Try using the
nmclicommand to list all the network devices. Type:nmcli -f DEVICE device -
Query the low-level /sys virtual file-system to enumerate ALL network interfaces available on your server manually. Type:
ls -l /sys/class/net/ | grep -v 'total' | awk '{print $9}'
To create macvtap interfaces¶
-
Ensure you are logged into the system as a user with Administrative privileges.
-
You need query for and identify the proper network device types that are available on your server to be able to associate with
macvtapdevice. Type:ls -l /sys/class/net/ | grep -v 'virtual\|total' | tail -n 1 | awk '{print $9}' eno2The output on the sample demo system shows one suitable interface named eno2.
-
Run the command to identify the device again but this time store the returned value in a variable named $DEVICE1. Double check the value of $DEVICE1 using echo. Type the following 2 separate commands to accomplish this:
# DEVICE1=$(ls -l /sys/class/net/ | grep -v 'virtual\|total' | tail -n 1 | awk '{print $9}') # echo $DEVICE1 -
Now, create a MACVTAP interface named -
macvtap1. The new interface will be associated with $DEVICE1. Type:ip link add link $DEVICE1 name macvtap1 type macvtap mode bridge -
Verify the creation of
macvtap1interface. Type:ip --brief link show macvtap1Note the DOWN state of the
macvtapinterface in the output. -
View detailed information about all the MACVTAP-type network devices on the system. Type:
ip --detail link show type macvtap -
Run a command to view all the network interfaces on the server and compare the output to the output of the similar command in the earlier section "To list all network interfaces on the system".
Enable/Disable Network Interface¶
To enable or disable a network interface¶
-
Check the status of the
macvtap1network interface. Type:ip link show macvtap1 -
Enable the
macvtap1network interface (if it's currently disabled). Run:ip link set macvtap1 up -
Verify the status changes by running:
ip -br link show macvtap1Tip
If you ever need to disable a network interface, the syntax for
ipcommand to do this isip link set <IFNAME> down. For example to disable a network interface namedmacvtap7, you would run:ip link set macvtap7 down
Now that you have set up the macvtap interfaces, you safely perform the various network configuration and troubleshooting tasks in the remaining exercises.
Exercise 3¶
Assign IP Addresses¶
To set an IP addresses on a network interface¶
-
View the IP addresses for all network interfaces on your server. Type:
ip address show -
Assign the IP address - 172.16.99.100 - to
macvtap1. Typeip address add 172.16.99.100/24 dev macvtap1 -
Verify the IP address assignment for
macvtap1ip address show macvtap1 -
Use the
nmclicommand to view the IPv4 addresses for all interfaces on your system. Type:nmcli --get-values IP4.ADDRESS,GENERAL.DEVICE device show
Exercise 4¶
Configure IPv6 Addresses¶
To assign IPv6 addresses to macvtap interfaces¶
-
Starting with
macvtap1, assign the 2001:db8::1/64 IPv6 address tomacvtap1by running:ip -6 address add 2001:db8::1/64 dev macvtap1 -
Next for
macvtap1assign the 2001:db8::2/64 IPv6 address by running:# ip -6 address add 2001:db8::2/64 dev macvtap1 -
Verify the IPv6 address assignments, type:
ip --brief -6 address show macvtap1 && ip -br -6 address show macvtap1 -
Use
nmclito view the IPv6 addresses for all interfaces on your system. Type:nmcli --get-values IP6.ADDRESS,GENERAL.DEVICE device show
Exercise 5¶
Routing management¶
To view the system's routing table¶
-
Display the current routing table for the system. Type:
ip route show default via 192.168.2.1 dev enp1s0 proto dhcp src 192.168.2.121 metric 100 10.99.99.0/24 dev tunA proto kernel scope link src 10.99.99.1 metric 450 linkdown 192.168.2.0/24 dev enp1s0 proto kernel scope link src 192.168.2.121 metric 100 -
Using one of the networks displayed in the leftmost column of the previous command's output as the argument, display the route table entry for that network. For example to show the kernel route table entry for the 10.99.99.0/24 network, type:
ip route show 10.99.99.0/24 -
Query the system to see the route that will be used to get to an example arbitrary destination. For example to view the routing details for getting to the destination IP address 8.8.8.8, type:
ip route get 8.8.8.8 8.8.8.8 via 192.168.2.1 dev enp1s0 src 192.168.2.121 uid 0 cacheHere is a breakdown of the output in plain-speak:
- Destination IP Address: 8.8.8.8 is the IP address that we are trying to reach
- Via: 192.168.2.1 is the next hop IP address that the packet will be sent to reach the destination
- Device:
enp1s0is the network interface that will be used to send the packet - Source IP Address: 192.168.2.121 is the IP address of the network interface that will be used as the source address for the packet
- UID: 0 is the user ID of the process that initiated this command
- Cache: This field indicates whether this route is cached in the kernel’s routing table
-
Now view how the system will route a packet from one IP to another destination IP address. Type:
ip route get from 192.168.1.1 to 192.168.1.2 local 192.168.1.2 from 192.168.1.1 dev lo uid 0 cache <local>
Set Default Gateway¶
To configure a default gateway for the system¶
-
Use
ipto query for and list the current default gateway on your system. Type:ip route show default -
Set a default gateway via the
macvtap1interface. Type:ip route add default via 192.168.1.1 -
Verify the new default gateway configuration
ip route show default
Add Static Route¶
To add a static route to the routing table¶
-
Add a demo static route for a bogus 172.16.0.0/16 network via 192.168.1.2. Type:
ip route add 172.16.0.0/16 via 192.168.1.2 -
Verify the addition of the static route by running:
ip route show 172.16.0.0/16
Delete Static Route¶
To Remove a static route from the routing table¶
-
Delete the static route for 10.0.0.0/24
ip route del 10.0.0.0/24 via 192.168.1.2 -
Verify the removal of the static route
ip route show
Exercise 6¶
Deleting IP addresses¶
This exercise walks through how to delete configured IP (IPv4 and IPv6) addresses on network interfaces.
Delete IPv4 Address¶
To remove an assigned IP address from a network interface¶
-
Delete the IP address on
macvtap1. Type:ip address del 172.16.99.100/24 dev macvtap1 -
Verify the removal of the IP address by running:
ip address show macvtap1
Delete IPv6 Address¶
To remove an assigned IPv6 address from a network interface¶
-
Delete the IPv6 address on
macvtap1with this command:ip -6 address del 2001:db8::1/64 dev macvtap1 -
Verify the removal of the IPv6 address with:
ip -6 address show macvtap1
Exercise 7¶
Configure Network Interfaces via nmcli¶
This exercise shows how to configure network interfaces using the NetworkManager tooling.
Note
By default, any network configuration changes done using nmcli (NetworkManager) will persist between system reboots.
This is in contrast to the configuration changes that are done with the ip utility.
To create a macvtap interface using nmcli¶
-
Start by listing all available network devices by running:
nmcli device -
Next, identify an underlying network device with which to associate the new MACVTAP interface. Save the value of the identified device in the variable $DEVICE2. Type:
DEVICE2=$(ls -l /sys/class/net/ | grep -v 'virtual\|total' | tail -n 1 | awk '{print $9}') -
Now, create a new NetworkManager connection called
macvtap2and an associated MACVTAP interface named -macvtap2. The new interface will be associated with $DEVICE2. Type:nmcli con add con-name macvtap2 type macvlan mode bridge tap yes dev $DEVICE2 ifname macvtap2 -
Use
nmclito verify the creation ofmacvtap2interface. Type:nmcli device show macvtap2 -
Use
nmclito verify the creation ofmacvtap2connection. Type:nmcli connection show macvtap2 -
Similarly use
ipto verify the creation ofmacvtap2interface. Type:ip --brief link show macvtap2Note the output's UP state of the
macvtapinterface.Question
What is the difference between the concept of a connection and that of a device in NetworkManager?
To modify interface network configuration with nmcli¶
-
Start by querying for the IPv4 address for the new
macvtap2interface by running:nmcli -f ipv4.addresses con show macvtap2The value of the ipv4.addresses property should be empty.
-
Configure the
macvtap2connection with these settings:- IPv4 Method = manual
- IPv4 Addresses = 172.16.99.200/24
- Gateway = 172.16.99.1
- DNS Servers = 8.8.8.8 and 8.8.4.4
- DNS Search domain = example.com
Type:
nmcli connection modify macvtap2 ipv4.method manual \ ipv4.addresses 172.16.99.200/24 ipv4.gateway 172.16.99.1 \ ipv4.dns 8.8.8.8,8.8.4.4 ipv4.dns-search example.com -
Verify the new IPv4 address setting by running:
nmcli -f ipv4.addresses con show macvtap2 -
Run a slightly different variation of the previous command to include the runtime configuration of the given settings. Type:
nmcli -f ipv4.addresses,IP4.ADDRESS con show macvtap2Question
What is the difference between these NetworkManager properties - ipv4.addresses and IP4.ADDRESS?
-
Check the changes to the network connection using the
ipcommand. Type:ip -br address show dev macvtap2 -
To properly apply the new settings and make them the new runtime values, use
nmclito first toggle the connection down (i.e. deactivate it). Type:nmcli connection down macvtap2 Connection macvtap2 successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5) -
Now activate the new connection to apply the new settings. Type:
nmcli connection up macvtap2 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6) -
View the final setting using the ip utility. Type:
ip -br address show dev macvtap2
Exercise 8¶
Configure DNS Servers¶
To set DNS server addresses for the system¶
-
Configure DNS servers for
macvtap1nmcli con mod macvtap1 ipv4.dns 8.8.8.8, 8.8.4.4 -
Verify the DNS server configuration
nmcli con show macvtap1 | grep DNS
Exercise 9¶
Troubleshoot network issues¶
To Identify and troubleshoot common network issues¶
-
Check the status of network interfaces
ip link show -
Test network connectivity to a remote host (e.g., google.com)
ping google.com -
Try pinging the local gateway. Type:
ping _gatewayQuestion
Through what mechanism is your system able to correctly resolve the name
_gatewayto the proper IP address for your locally configured default gateway?
View Active Connections¶
To List all active network connections¶
-
List all active network connections
ss -tuln
Monitor Network Traffic¶
To monitor network traffic in real-time¶
-
Capture network traffic on a specific interface (e.g.,
macvtap1)tcpdump -i macvtap1Analyze captured packets and observe network activity. You can stop the packet capture when done by pressing Ctrl+C
View Network Logs¶
To view NetworkManager daemon related logs for troubleshooting¶
-
View network-related logs
journalctl -u NetworkManager
Author: Wale Soyinka
Contributors: Steven Spencer, Ganna Zhyrnova