Welcome to the world of Linux networking! This book will be your guide to perfecting your Linux network management skills. In this chapter, we will go over what's needed to get your environment up and running. We'll talk about several Linux distributions that are of interest to enterprise networking, the things to keep in mind while setting up an environment in your home or office so you can follow along with this book, and some best practices for setting up a few Linux installations that we'll use throughout this book. Basically, we'll lay the groundwork that you'll use to develop your skills.
In this chapter, we will cover:
Distributions to consider
Physical machines versus virtual machines
Setting up and configuring VirtualBox
Acquiring and installing Debian 8
Acquiring and installing CentOS 7
Network management in Linux is a fun, diverse field that is always changing. While the core components typically remain the same throughout the years (such as the TCP/IP protocol), how these services are managed have evolved in each generation, such as the rise of systemd. Linux is definitely exciting.
In this chapter, we'll see how to set up your environment. Depending on your experience level, you can skip directly to Chapter 2, Revisiting Linux Networking Basics. If you're already comfortable setting up a distribution or two on a physical or virtual machine, you already have the knowledge needed to get started. Here, we'll discuss how to install a few distributions of interest for the exercises in this book and some general pointers.
In a nutshell, the more Linux installations you have to work with, the better. While practicing networking concepts, it's a good idea to have as many nodes as possible, so you can test how your configuration changes, will affect your environment. If you are already comfortable installing Linux, feel free to set up some nodes and then I'll meet you in the next chapter.
There are over a hundred distributions of Linux in existence today. These include distributions geared specifically toward workstations or servers (or even both) and specialist distributions, which solve a specific task, such as Kali, Mythbuntu, and Clonezilla. Naturally, the first question one might have when studying a concept such as network administration is which distributions to start with.
Let's not focus on any one distribution. In the enterprise, no two data centers are same. Some organizations that utilize Linux might standardize on a specific distribution set (for example, Ubuntu and Ubuntu Server) though it's far more common to see a mix of one or more distributions in use. Distributions such as SUSE Enterprise Linux, Red Hat Enterprise Linux, Ubuntu Server, CentOS, and Debian are extremely common among servers within Linux-based networks. In my experience, I've seen Debian (as well as its derivatives) and Red Hat-based distributions in use most often.
You are encouraged to experiment and mix up whichever distributions you might favor. There are many candidates, and websites such as www.distrowatch.com would give you a list of possibilities. Specifically for the sake of the examples in this book, CentOS and Debian are recommended for your use. In fact, these two distributions are wonderful places to start. You'll get a taste for two different forms of package management (rpm and deb packages) and familiarize yourself with two of the most popular distributions. Regarding Debian, quite a few distributions are based on it (Ubuntu, Linux Mint, and others). By learning how to manage a Debian installation, much of that knowledge would be transferable to other distributions should you consider switching. The same can be said about CentOS, which is based on Red Hat. Red Hat is a very popular distribution and since CentOS is created from its source, you're essentially learning it as well. While Fedora is more bleeding-edge than Red Hat or CentOS, much of the knowledge will be useful there as well; Fedora is popular as a workstation distribution.
The examples within this book were tested in both CentOS and Debian. Whenever an instruction is specific to a particular distribution, I will let you know. Having a CentOS and Debian installation will suit you for the purposes of this book, but feel free to experiment. As far as individual versions of these distributions are concerned, both CentOS 7 and Debian 8 were used. Install these in your environment or home lab.
Seeing a section on virtual machines in a networking book may come as somewhat of a surprise. To be fair, it certainly is out of place. In addition to being an important enterprise platform, virtualization can also be an invaluable learning tool. In real networks, a technician may test a service in a virtual machine before rolling it out to the environment. For example, a new DNS server may begin life as a VM, and then once it is tested and proven, moved into an environment for use by the organization. One benefit of this approach is that you can take several snapshots as you develop the solution, and should you mess up and ruin it, you can just restore the snapshot and begin from a known-working state.
As far as mastering our Linux networking skills are concerned, virtual machines allow you to test how a procedure differs from one distribution to another. It's easy to bring up a virtual machine, and it's even easier to trash it. If you're limited by physical hardware, then virtual machines may offer you a chance to build a small virtual network to practice on. Of course, the trade-off with virtual machines is how much RAM they use. However, without a GUI, most Linux distributions will run quite comfortably with just 512 MB RAM. Nowadays, quite a few computers ship with 8 GB or even 16 GB RAM, so you should be able to run several VMs on even the budget computers available today.
To be fair, using virtual machines for purposes of practice and study isn't always ideal. In fact, when studying networking, physical equipment is usually preferred. While you can certainly practice setting up and serving a web page via Apache running in a VM, you wouldn't be able to practice racking switches and routers in such an environment. Whenever possible, try to use physical equipment. However, virtual machines offer a unique chance for you to create a small army of nodes to maintain on your network.
Of course, not everyone has a stack of Dell towers sitting in the closet, ready and waiting for a shiny new Linux install. Depending on what you have at your disposal, you may use all physical machines or a mix of physical and virtual. In this book, no assumptions are made about your inventory. The name of the game is to manage nodes, so set up as many as possible.
In this book, VirtualBox is discussed. However, it's by no means the only solution for creating virtual machines. There are other solutions as well, such as KVM, Xen, VMware and others. VirtualBox has the benefit of being free, open source, and cross-platform (it's available for Linux, Mac OS X, and Windows), so there's a good chance it will work in your environment. In most cases, it's even easier to set up than KVM or Xen (but perhaps not nearly as cool). You don't have to use VirtualBox (or even VMs at all, for that matter) in order to follow along with this book. Use whatever solution you prefer. In this book, I try not to limit the instructions to any one specific solution, so the content works for as many people as possible.
If you've decided to use VirtualBox in your environment (either for studying, testing distributions, or evaluating network services before implementation), we will set up our VirtualBox host in this activity.
Downloading and installing VirtualBox is actually fairly straightforward, but each platform has its unique quirks. In Windows, the initial installation is simply a matter of navigating to the following site and downloading the setup file and running through the installation wizard:
After installation, all you would need to do is skip to the Downloading and installing the Extension Pack section of this chapter. Installing on Mac OS X is also straightforward.
For Linux, there are several methods to install VirtualBox. One way is to use your package manager, if your distribution already has it available in its repositories. Unfortunately, depending on the version of your distribution, the version of VirtualBox that may be included is very likely to be out of date. For example, Debian typically contains older packages in its repositories, but bleeding-edge distributions such as Arch are more likely to contain the latest and best.
Perhaps a better way of acquiring VirtualBox is to import the repositories that VirtualBox itself provides into your system. The following URL has a list of Debian repositories and even a method of adding a repository for RPM-based distributions (Fedora, Red Hat, and so on):
For example, using the instructions on the page as a guide, we can run through the following procedure on a Debian-based system. However, Oracle may change their instructions and repository listing at any time; always consult the previous URL before installation to see if the procedure has changed.
To verify that we will add the correct version, we need to determine which repository to use. This differs based on which distribution you're running, so definitely consult the documentation on the VirtualBox site to ensure you're importing the correct repository.
For Debian 8 "Jessie", we would use the following:
deb http://download.virtualbox.org/virtualbox/debian jessie contrib
To add this repository to our Debian system, we would use the following command:
# echo "deb http://download.virtualbox.org/virtualbox/debian jessie contrib" > /etc/apt/sources.list.d/virtualbox.list
Then, we can add the public key for the repository with the following command:
# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | apt-key add -
# apt-get update
Then install VirtualBox with the following command:
# apt-get install dkms virtualbox-4.3
This same procedure for installation will work for Ubuntu as well, as long as you choose the appropriate matching repository.
The public key can be downloaded via the following command:
# wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | rpm --import -
In order to add the repository to a Fedora system, execute the following command:
# wget -P /etc/yum/repos.d/ http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
After adding the repository, VirtualBox can be installed with the following command:
# yum install VirtualBox-4.3
In addition, instructions for OpenSUSE and RHEL are also available on the VirtualBox website. See the VirtualBox website for more details at https://www.virtualbox.org.
Oracle offers an Extension Pack, which enables USB support as well as support for Preboot Execution Environment (PXE) booting. You may or may not need these features. If you think you would benefit from being able to insert a flash drive on your host PC and accessing it from within your VM, it's probably a good idea to install the pack.
The extension pack isn't built-in to VirtualBox due to licensing issues. Feel free to consult the VirtualBox license should you wish to learn more.
The installation procedure for the extension pack is mostly the same, regardless of whether your host computer is running Linux, Windows, or Mac OS X. However, there is one added step if your host is running Linux, which is to add your user account to the
cat /etc/group |grep vboxusers
You should see an output similar to the following:
If you don't see the output, create the group with the following command:
# groupadd vboxusers
Then, add yourself to that group:
# usermod -aG vboxusers yourusername
You'll need to log out and then log in before adding yourself to the
vboxusers group takes effect.
Now, you're ready to install the extension pack. Again, this procedure should be the same regardless of your underlying operating system. First, download the Extension Pack from the following URL and save it locally:
After downloading, follow the next steps:
Open VirtualBox and go to File | Preferences....
If you're running Linux, you may be asked for the root or sudo password. If you do, enter it and continue. After authenticating, you should see confirmation that you've successfully installed the extension pack.
In some distributions, the password prompt may not appear, causing the installation of the extension pack to fail. If that happens, run VirtualBox with root privileges using the following command:
Then, try installing the extension pack again. Once finished, close VirtualBox and then reopen it as a normal user before continuing.
There will be several options for download, but the netinst ISO will be our target. For most computers, the 64-bit (amd64) version should suffice—unless you know for sure that your computer doesn't support 64-bit. The main difference between the netinst and the complete installation image is that the netinst version will download what it needs from Debian's servers over the Internet. As long as you're not within a bandwidth-constrained area, this should not be an issue.
Of course, the ISO file by itself is not useful unless you're attaching it to a virtual machine. If you are, then you're ready to go. If you're setting up a physical machine, you'll need to either create a bootable CD with a disc mastering utility of your choice, or create a bootable flash drive.
Because there is a multitude of different disc mastering utilities available, a complete walkthrough of how to create a bootable CD in your environment is not possible. In most cases, your utility should have an option to burn an ISO image in its menu. The disc will not function as Debian installation media if you simply create a data disc.
# cp name-of-debian.iso /dev/sd? && sync
Essentially, we're copying the downloaded ISO image directly to a flash drive. Of course, change the file name and target to what is relevant on your system. To determine the device node to use, execute the following command:
# fdisk -l
Within the output, you should see the node designation of your flash drive. The output of that command will look like this:
Device Boot Start End Sectors Size Id Type /dev/sdb1 2048 60563455 60561408 28.9G 83 Linux
/dev/sdbwould be the device to use to create the flash drive. Putting it all together, we would create the flash drive with the following command:
# cp name-of-debian.iso /dev/sdb && sync
Downloading the example code
You can download the example code files from your account at http://www.packtpub.com for all the Packt Publishing books you have purchased. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Once you have created bootable media, insert it into your computer and follow your computer's specific directives to access the boot menu and select your Debian media. After it finishes loading, the first screen will ask you to select your language. Choose your language, then click on Continue.
At this point, the Debian installer will detect your hardware, and then allow you to configure your host name. For this option, choose a unique host name that will identify your device on the network. When finished, click on Continue.
Next, you'll be asked to set a password for the root account. For this, you should create a unique (and preferably randomly generated) password. As you probably know, the root account has full access to the system. After setting the password, click on Continue.
Next, Debian will try to use Network Time Protocol (NTP), if available, to configure your clock. Then, you'll be presented with a screen to select your time zone. Make sure your time zone is highlighted, and click on Continue.
Now, we'll partition our disk. Feel free to partition your disk any way you want, as there are no partitioning requirements as far as this book is concerned. For the sake of this instruction, Guided - use entire disk, the default for Debian, is chosen. If you have a preferred partitioning scheme, feel free to use it. When finished, click on Continue.
Next, you'll have to select the hard disk on which to install Debian. In this example, there is only one hard disk available in the VM that was used to capture the procedure. If you have more than one disk, select the appropriate disk for installation and click on Continue.
In the next section, the Debian installer will ask if you would like to have a separate
/homepartition (recommended if you wish to retain files between installations), separate
/tmppartitions, or all files in one partition. This book has no partitioning requirements, so choose the one that best fits your preference. When you've made your selection, click on Continue.
The base system will be installed next; this might take a little while depending on the speed of your computer and hard disk. Afterwards, you'll be presented with a screen where you'll select the country nearest you in order to set up Debian's package manager.
Next, you'll select a mirror for Debian's package archives. In most cases, the default selection is usually accurate. So unless it guessed incorrectly, leave the default selection as-is and click on Continue.
Next, Debian will configure your package manager and update your sources. After a few progress bars scroll by, you'll see a new screen asking you whether or not you'd like to submit usage statistics to Debian. This information is helpful to Debian's developers, but it's not required. Make your choice and click on Continue.
The next screen will offer us additional packages that we can add to our system, but these aren't required (it's a good idea to leave standard system utilities enabled, though). Most of the options presented allow us to choose a desktop environment, but you are not required to install one. Typically, servers are not installed with a desktop environment. However, if you are setting up a workstation PC, it may be of benefit.
GNOME: It is the default desktop environment for Debian. GNOME is state of the art, and offers a unique paradigm for interacting with your computer. GNOME uses virtual workspaces heavily, which allows you to split your workflow between several desktops. Unfortunately, GNOME has relatively modest hardware acceleration requirements; this means if you don't have a modern video card, it won't function properly.
Xfce: It is a very lightweight alternative to GNOME, and it has been around for a long time. Xfce is great for computers with lower end processing capabilities. Nowadays, Xfce doesn't see much active development, so it doesn't change much. This means that it is more stable in quite a few cases, though it may not interest those who prefer something with modern features.
KDE: It is a modern desktop environment like GNOME, but it resembles the user interface of Windows. Like GNOME, KDE also has relatively modest hardware requirements, though not quite as bad as GNOME. KDE features the Dolphin file manager, which is respected by Linux users.
Cinnamon: It was originally created as a fork of GNOME, but it has evolved into its own desktop environment with little GNOME dependencies. Cinnamon offers a more traditional style of desktop, with the modern feel of GNOME.
Other than the desktop environment choice, it's recommended to select SSH server from this list. Web server can also be chosen, but you may as well wait until we come to the part of the book in which Apache is discussed, as we'll walk through the installation.
Make your selections and then wait for the rest of the installation procedure to finish, as Debian installs the software you selected in the previous step. Then, it's time to configure GRUB. GRUB is an acronym for Grand Unified Bootloader and is necessary in order for us to boot our system. You'll be asked whether you'd like to install GRUB into the master boot record (which you more than likely will want to do), so ensure the Yes radio box is checked and click on Continue.
The DVD ISO link should satisfy our needs.
Just like with the Debian walkthrough, we'll need to either create a bootable disc or flash drive to get the installation started. Unlike the Debian installer, now we need a DVD-R disc, as the image will be too large to fit onto a CD-R.
If you're installing via a flash drive, the following URL from the CentOS wiki describes the procedure:
The next screen that appears is one of two main sections of the installation. The items shown here (DATE & TIME, KEYBOARD, LANGUAGE SUPPORT, INSTALLATION SOURCE, SOFTWARE SELECTION, INSTALLATION DESTINATION, and NETWORK & HOSTNAME) can be completed in any order. As you can see in the screenshot, only one section (INSTALLATION DESTINATION) is actually required. Basically, you can go through each section listed and complete its task and then click on Begin Installation when you're finished. If you choose not to complete a section, its defaults will be used.
Don't skip the NETWORK & HOSTNAME section. By default, networking isn't even enabled at all, so you can enable it by clicking on the toggle switch next to your interface. Near the bottom, you can type in the desired host name of your computer. When finished, click on Done.
Completing the INSTALLATION DESTINATION section is compulsory. Here, you will select which disk to install CentOS onto, as well as your partitioning scheme. In this walkthrough, we'll select a disk and keep the default partitions, but feel free to customize the partition scheme if you prefer.
By default, CentOS will be a Minimal Install. This means that there will be no graphical user interface, just the default packages. If you prefer, you can opt for a desktop environment such as GNOME or KDE by selecting the corresponding option.
After you click on Begin Installation, you'll be brought to the second main section of the installation procedure while CentOS installs itself onto your system in the background. This section is much smaller and has just two steps. We'll set our root password and create a standard user account.
Finally, we'll create a standard user. On this screen, we'll enter the values in the Full name and Username fields, and choose a strong value for Password. You can also tick the box labeled Make this user administrator, if necessary.
Finally, when installation is complete, click on Reboot and we're all set.
With that out of the way, feel free to set up as many Linux installations as you may need. In future chapters, we'll use these installations to configure networking and advance our knowledge.
In this chapter, we worked through setting up our environment. We discussed virtual machines and physical machines as network nodes, and we even set up a Debian and CentOS installation or two.
Now that we've set up our environment, it's time to dive in and get started. In Chapter 2, Revisiting Linux Networking Basics, we'll cover all the commands we'll need for our journey, for example, configuring network interfaces, manually connecting to networks, and setting up Network Manager. Stay tuned!