This page may be out of date. Submit any pending changes before refreshing this page.
Hide this message.
Quora uses cookies to improve your experience. Read more

What is the best way/resource to learn Linux networking concepts and practices, like open source training, manuals, and hand-outs?

10 Answers
Joel Gerber
Learning networking on Linux can be quite the task. There is a lot of functionality that you selectively enable via the Linux kernel as well as a bunch of command line utilities like those provided via iproute2, netfilter and others. It's really hard finding good, easy to understand documentation on all of these systems. But over the years I have gathered a bit of a collection.

First off, I should state that it would be a good idea to get a good grounding in basic networking concepts before trying to learn this stuff via Linux.

That said, take a look at the Linux Advanced Routing & Traffic Control HOWTO (otherwise known as the LARTC HOWTO). Though usually quite outdated, this will give you a lot of good information about the Linux routing/networking systems, as well as a bunch of iproute2 commands. I would recommend skimming through this document before anything else.

Along with that site, LARTC also has a mailing list that can at times have good dialog. VGER.KERNEL.ORG hosts this list and provides information on subscribing.

Next, another outdated, but at times useful piece of documentation is the Linux Network Administrator's Guide. It covers a lot of material like the LARTC HOWTO, but covers certain subjects with a bit more detail.

One site I found recently that I quite like is Guide to IP Layer Network Administration with Linux (http://linux-ip.net/). It covers a wide range of subjects and seems to be a bit more up to date.

For NAT type stuff, netfilter.org has a great article on how connection tracking works in the Linux kernel.

Iptables Tutorial 1.2.2 is a great tutorial on how to setup NAT and general firewall type rules on Linux.

With all of these sites, there's a few awesome pictures that I've found that will help you put everything together. Here they are in no certain order:




Now, this stuff will just get you started. You'll want to dig into all of the iproute2 utilities (ip, tc, &etc), the bridge control utilities (brctl), a bunch of flags specified in /proc/sys/net and other places in the /proc filesystem, netfilter (iptables) and a number of other commands on your own. Play with them and try to use them to build your own advanced networks. One thing that I've found helpful is using qemu to setup multiple interconnected virtual machines and network them together.
Your response is private.
Is this answer still relevant and up to date?
Abhimanyu Shekhar
First, networking isn't a small concept. It's a competitive niche. But then again, if you:
  • read quality books
  • experiment
  • spend time testing, and
  • collect feedback on your progress,
You can learn it flawlessly. That's pretty much the "best way."

First you have to get a grip on foundational concepts, like protocols, IP addresses, routing, networking commands, and this is important: you have to be an expert in file transfer protocol (FTP) and handling ports. This all happens in shell scripting (sh), so knowledge about that is evidently necessary.

All that can be learned by reading quality books, consuming the Web, or being tutored by an expert.

It's only practice and experiments, backed by proper knowledge, that can give you a good amount of common sense in the field. For example, books can teach you how to connect to remote FTP servers, but as long as you don't have personal hit-and-trial sessions and constant failures, you're not going anywhere. You have to be flexible and adaptive so that you can access an FTP server even without the needed tools, like just an outdated command prompt or something, or downloading a file by a Terminal window manually. That's called being expert.

If you're looking for resources, do a Google search for get latest results. You might download this: http://www.redbooks.ibm.com/redb...
Your response is private.
Is this answer still relevant and up to date?
Sandesh Deshpande
The best way to learn Linux is by installing it in virtual machine and experimenting, more the error more you will learn the concepts.

However for specific network related things you can check site called linuxhomenetworking.com, its a pretty good site and covers most of the networking stuff related to linux.

Best luck (Y)
Your response is private.
Is this answer still relevant and up to date?
View More Answers