Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Network Troubleshooting in Linux

Introduction

Network troubleshooting is an essential skill for system administrators and network engineers. It involves diagnosing and resolving network problems to ensure smooth connectivity and communication. In this tutorial, we will explore various tools and techniques used in Linux for effective network troubleshooting.

Checking Network Interfaces

First, you need to verify the status of your network interfaces. Use the ip a command to list all network interfaces and their statuses.

ip a

1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
        valid_lft 86389sec preferred_lft 86389sec

Testing Connectivity with Ping

The ping command is used to test the reachability of a host on an IP network. It works by sending ICMP echo request packets to the target host and waits for an ICMP echo reply.

ping -c 4 google.com

PING google.com (172.217.14.206) 56(84) bytes of data.
64 bytes from sin09s01-in-f14.1e100.net (172.217.14.206): icmp_seq=1 ttl=54 time=10.6 ms
64 bytes from sin09s01-in-f14.1e100.net (172.217.14.206): icmp_seq=2 ttl=54 time=10.4 ms
64 bytes from sin09s01-in-f14.1e100.net (172.217.14.206): icmp_seq=3 ttl=54 time=10.3 ms
64 bytes from sin09s01-in-f14.1e100.net (172.217.14.206): icmp_seq=4 ttl=54 time=10.5 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 10.344/10.478/10.616/0.103 ms

Checking Routing Tables

Routing tables determine the path that data packets take through the network. Use the ip route command to display the current routing table.

ip route

default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
169.254.0.0/16 dev eth0 scope link metric 1000

Diagnosing DNS Issues

DNS (Domain Name System) translates domain names to IP addresses. Use the nslookup or dig command to diagnose DNS issues.

nslookup google.com

Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: google.com
Address: 172.217.14.206

dig google.com

; <<>> DiG 9.16.1-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49746
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 299 IN A 172.217.14.206

;; Query time: 12 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Mar 29 10:23:15 UTC 2021
;; MSG SIZE rcvd: 55

Using Traceroute to Diagnose Network Paths

The traceroute command shows the path that packets take to reach a destination. This is useful for identifying where the connection is failing.

traceroute google.com

traceroute to google.com (172.217.14.206), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 1.123 ms 1.101 ms 1.089 ms
2 * * *
3 72.14.204.125 (72.14.204.125) 12.456 ms 12.234 ms 12.123 ms
4 209.85.241.31 (209.85.241.31) 13.789 ms 13.456 ms 13.234 ms
5 216.239.46.187 (216.239.46.187) 14.567 ms 14.345 ms 14.123 ms
6 72.14.239.173 (72.14.239.173) 15.678 ms 15.456 ms 15.234 ms
7 172.217.14.206 (172.217.14.206) 16.789 ms 16.567 ms 16.345 ms

Checking Firewall Settings

Firewalls can block network traffic. Use the iptables command to check firewall rules and ensure they are not causing connectivity issues.

sudo iptables -L

Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
DROP all -- anywhere anywhere

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Conclusion

Network troubleshooting in Linux involves using various tools and commands to diagnose and resolve issues. By understanding how to use these tools effectively, you can ensure your network runs smoothly and efficiently. Remember to check network interfaces, test connectivity, verify routing tables, diagnose DNS issues, trace network paths, and inspect firewall settings.