Are you tired of constantly struggling to fix network issues on your Linux system? Look no further! These 10 essential commands will help you troubleshoot and resolve any network problems you may encounter.
1. ping
The ping
command is a simple but powerful tool used to test the reachability of a host on a network. It works by sending an Internet Control Message Protocol (ICMP) echo request to the specified host and waiting for a response. Here’s an example of how to use it:
$ ping google.com
PING google.com (172.217.164.78) 56(84) bytes of data.
64 bytes from mad01s19-in-f78.1e100.net (172.217.164.78): icmp_seq=1 ttl=116 time=15.3 ms
64 bytes from mad01s19-in-f78.1e100.net (172.217.164.78): icmp_seq=2 ttl=116 time=16.1 ms
64 bytes from mad01s19-in-f78.1e100.net (172.217.164.78): icmp_seq=3 ttl=116 time=15.3 ms
^C
--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 15.300/15.657/16.146/0.426 ms
If the host is reachable, you will see a series of responses like the ones shown above. If the host is not reachable, you will see a message saying “destination host unreachable.”
2. traceroute
The traceroute
command is used to trace the path that a packet takes from your device to the specified host. It works by sending a series of packets with increasing Time To Live (TTL) values and displaying the IP addresses of the routers that the packets pass through. If you don’t have traceroute
installed, then run: sudo apt install traceroute
Here’s an example of how to use it:
$ traceroute google.com
traceroute to google.com (172.217.164.78), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 2.109 ms 1.382 ms 1.287 ms
2 10.0.0.1 (10.0.0.1) 9.917 ms 9.865 ms 9.749 ms
3 74.125.39.129 (74.125.39.129) 11.737 ms 11.640 ms 11.678 ms
4 108.170.250.65 (108.170.250.65) 10.065 ms 10.065 ms 10.059 ms
5 108.170.249.97 (108.170.249.97) 10.077 ms 10.086 ms 10.081 ms
6 216.239.56.149 (216.239.56.149) 10.076 ms 10.088 ms 10.072 ms
7 108.170.247.141 (108.170.247.141) 10.105 ms 10.100 ms 10.093 ms
8 172.217.164.78 (172.217.164.78) 10.140 ms 10.157 ms 10.159 ms
Traceroute is a useful tool for identifying where a problem may be occurring in the network path between your device and the specified host. For example, if you are experiencing slow connection speeds, traceroute can help you determine if the issue is with your local network or with a remote router.
There is an alternative to traceroute
called mtr
(short for “My Traceroute”). mtr
combines the functionality of ping
and traceroute
and provides more detailed information about network performance. It is also able to continuously send packets to the specified host, allowing you to monitor the performance of the network in real-time. mtr
is available on most Linux distributions and can be installed using the package manager. Here’s an example of how to use it:
Copy code
$ mtr google.com
HOST: localhost.localdomain Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.1.1 0.0% 10 1.5 1.5 1.5 1.5 0.0
2.|-- 10.0.0.1 0.0% 10 2.3 2.3 2.3 2.3 0.0
3.|-- 74.125.39.129 0.0% 10 15.5 15.5 15.5 15.5 0.0
4.|-- 108.170.250.65 0.0% 10 16.0 16.0 16.0 16.0 0.0
5.|-- 108.170.249.97 0.0% 10 15.9 15.9 15.9 15.9 0.0
6.|-- 216.239.56.149 0.0% 10 16.0 16.0 16.0 16.0 0.0
7.|-- 108.170.247.141 0.0% 10 15.9 15.9 15.9 15.9 0.0
8.|-- 172.217.164.78 0.0% 10 15.9 15.9 15.9 15.9 0.0
3. netstat
The netstat
command is used to display information about active network connections, routing tables, and a variety of other network-related statistics. Here’s an example of how to use it to display active connections:
$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.2:22 192.168.1.1:50738 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50737 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50736 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50735 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50734 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50733 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50732 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50731 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50730 ESTABLISHED
tcp 0 0 192.168.1.2:22 192.168.1.1:50729 ESTABLISHED
Netstat is a useful tool for identifying which processes are using which network connections and for identifying potential security issues.
4. ifconfig
The ifconfig
command is used to configure network interfaces on a Linux system. It can be used to display the current configuration of an interface, as well as to configure IP address, netmask, and other parameters. Here’s an example of how to use it to display the configuration of the eth0
interface:
$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.24.31.43 netmask 255.255.240.0 broadcast 172.24.31.255
inet6 fe80::215:5dff:fed9:a4c3 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:d9:a4:c3 txqueuelen 1000 (Ethernet)
RX packets 85089 bytes 119394663 (119.3 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 18233 bytes 1237964 (1.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ifconfig is a useful tool for quickly checking the configuration of a network interface and for making changes to its settings.
5. route
The route
command is used to display and manipulate the routing table on a Linux system. It can be used to display the current routing table, as well as to add or delete routes. If you don’t have route
installed then run: sudo apt install net-tools
Here’s an example of how to use it to display the routing table:
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
The routing table specifies which network paths should be used for different types of network traffic. Route is a useful tool for identifying and troubleshooting routing issues on your system.
6. host
The host
command is used to perform DNS lookups on a Linux system. It can be used to resolve domain names to IP addresses and vice versa. Here’s an example of how to use it to resolve a domain name to an IP address:
$ host google.com
google.com has address 142.251.39.110
google.com has IPv6 address 2a00:1450:400e:811::200e
google.com mail is handled by 10 smtp.google.com.
Host is a useful tool for verifying that DNS is functioning properly on your system and for troubleshooting DNS issues.
7. dig
The dig
command is similar to the host
command, but it is more powerful and provides more detailed information. It is used to perform DNS lookups and to display information about DNS records. Here’s an example of how to use it to display the MX records for a domain:
$ dig google.com MX
; <<>> DiG 9.9.5-9+deb8u14-Debian <<>> google.com MX
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30604
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com. IN MX
;; ANSWER SECTION:
google.com. 300 IN MX 10 aspmx.l.google.com.
google.com. 300 IN MX 20 alt1.aspmx.l.google.com.
google.com. 300 IN MX 20 alt2.aspmx.l.google.com.
google.com. 300 IN MX 30 alt3.aspmx.l.google.com.
google.com. 300 IN MX 30 alt4.aspmx.l.google.com.
;; Query time: 78 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Aug 27 22:44:12 EDT 2018
;; MSG SIZE rcvd: 151
Dig is a useful tool for performing advanced DNS troubleshooting and for gathering more detailed information about DNS records.
Tips
- Use the
c
flag withping
to specify the number of pings to send, rather than pinging indefinitely. - Use the
w
flag withtraceroute
to specify a timeout for each hop, which can help speed up the process if you are experiencing delays. - Use the
l
flag withnetstat
to display listening sockets, which can be useful for identifying servers and potential security issues. - Use the
a
flag withifconfig
to display all interfaces, including those that are down or inactive. - Use the
v
flag withroute
to display more detailed information about each route in the routing table.
Challenge
Try using these commands to troubleshoot a network issue on your own system. Can you identify the problem and come up with a solution using these tools?