Server Enthusiast

Top 15 Linux Networking tools that you should know!

Created July 10, 2020

Introduction

Linux is one of the most widely used operating systems out there. The Linux Kernel is also the larges open source project. As a developer, it is more likely than not that you would have to work in one way or another with a Linux based system.

As a person who works in any IT related job, the following Linux networking commands could help you with your day to day tasks in order to analyze, maintain and troubleshoot different problems with your servers, network infrastructure, and even your domain names.

Top 15 Linux Networking tools

Here is a list of my personal top 15 Linux networking tools with examples!

ping

The ping command, might be one of the most frequently used commands by sysadmins, it uses ICMP packages to check if two machines are connected.

Syntax:

ping 191.168.1.100

You could also ping a domain name in order to find out what IP it resolves to:

ping devdojo.com

traceroute

The traceroute command shows you the path from your current machine to your remote server/system and each hope along the way.

Syntax:

traceroute devdojo.com

The output of the above command would look like this:

 1  164.122.64.253 (164.122.64.253)  1.081 ms  1.064 ms  1.056 ms
 2  168.197.249.56 (168.197.249.56)  1.382 ms 168.197.249.60 (168.197.249.60)  11.573 ms 136.197.249.54 (136.197.249.54)  1.054 ms
 3  168.197.250.149 (168.197.250.149)  0.981 ms 168.197.250.137 (168.197.250.137)  0.995 ms  0.980 ms
 4  de-cix-frankfurt.as13335.net (80.81.194.180)  2.513 ms  2.509 ms  2.501 ms
 5  104.26.11.219 (104.26.11.219)  1.331 ms  1.369 ms  1.359 ms

Essentially it is similar to ping but it shows you each step from your server to your remote host.

By using traceroute you will be able to tell if the connection from one machine to another is failing and where exactly the connection is lost.

mtr

The mtr command, is kind of a combination between traceroute and ping, it is used to check if there is any packet lost in your network.

Syntax:

mtr devdojo.com

curl

The curl command is probably my personal favorite! You can use it to make HTTP requests.

Syntax:

curl https://devdojo.com

There are many useful arguments that you could use, for example, if you add the -IL arguments you would get the headers of your domain:

curl -IL https://devdojo.com

You can also use curl to download files:

curl http://some.url/your_file.zip --output your_file.zip

wget

The wget command is quite similar to curl but has fewer options

I often use it to just download a file:

wget http://yourdomain.com/some_file.txt

dig

The dig command is a great tool for troubleshooting different DNS problems. It is used for DNS lookups, for example, if you wanted to know the A record fo your domain name you would have to run the following command:

dig a yourdomain.com

And in case you are not receiving emails, the first thing that you would check is if your MX record is correct:

dig mx yourdomain.com

whois

The whois command is used to get the information related to a domain name.

Syntax:

whois devdojo.com

As a response, you would get useful information like when the domain was registered, the expiration date, the current nameservers, and the registrar information.

ssh

SSH stands for secure shell and runs on port 22. It is a secure way of connecting to a remote server.

Syntax:

ssh your_user@yourdomain.com

In case that your SSH service is listening on a different port, you can use the -P argument to specify a custom port.

scp and rsync

I'm putting scp and rsync commands as one, as they have quite similar functions. Both commands are used to securely copy files from one server to another over SSH.

Syntax:

  • To copy a file from one server to another using scp you would need to use the following syntax:
scp yourfile.txt [email protected]_server.com:/home/your_user/

The above command would copy the yourfile.txt from your machine to your remote server.

  • To do the same thing with rsync you would use the following command:
 rsync -avz [email protected]:/home/user/dir/

Some of the benefits of the rsync command are that it makes the operation a lot faster, and also if the transfer fails for whatever reason, you could restore the process.

The scp command on the other side, does a linear copy, but one of the benefits over rsync is that you could copy files with scp from one remote system to another remote system without first downloading them to your local machine.

ifconfig

The ifconfig command is used to inspect the current network configuration on your server. It can show you information like:

  • Your IP address
  • Your MAC address
  • All other interfaces attached to your current machine

I'm a big fan of the ifconfig command as I really like the output and I'm used to it, but you need to keep in mind that the ifconfig command is now deprecated and you should be using the ip command instead.

ip

The ip command is quite similar to the ifconfig command and can be considered as the newer version.

Syntax:

ip addr

Or use the following for short:

ip a

Similar to ifconfig the ip a command gives you information for all of the available interfaces.

telnet

Before there was SSH, telnet was the go-to protocol for connecting from one server to another.

However as telnet is insecure, nobody nowadays should use telnet for connections.

However, you might still use the telnet client to test the connectivity from your local machine to a remote server on a specific port.

For example, if you wanted to check if port 80 on a remote server is open, you could run the following command:

telnet devdojo.com 80

nc

The nc command, or netcat is used to read from and write to network connections using TCP or UDP.

As an example, you could start listening on a port with the following command:

nc -l 1234

The above command would start listening on port 1234 and if you open a second terminal and use telnet to connect on that port, then start typing, you will be able to see the input from your second terminal directly on your first terminal that you've started the nc command on. You should give this a try, it's pretty cool!

nmap

The nmap command is an open-source tool, used for scanning networks.

The command is used to discover other hosts on a specific network by sending packets and then analyzing the response. For example, you could use nmap to run a port scan on a specific host and find out what ports are being used:

nmap devdojo.com

netstat/ss

As a system administrator, I use the netstat command super often! It shows you the network statistics on your machine, for example, if you wanted to see all of the connections port 80, you could just run the following command:

netstat -plant | grep 80

You could also use netstat to see what services are running and listening on your machine as well.

netstat -plant | grep LISTEN

As much as I love the netstat command it is now being replaced with the ss command. It is faster and provides more information.

Syntax:

ss -lt

Conclusion

Learning the above commands will make your life a lot easier in case you are facing any issues with your website or server.

Of course, there are a lot more commands out there but those are my top 15, I encourage you to go out there and explore the power of Linux! It is just amazing, it can be used as a desktop, web server, and even a firewall!