上QQ阅读APP看书,第一时间看更新
Troubleshooting network connectivity
Networking consists of various components and services working together to enable systems to communicate with each other. A lot of times it happens that everything seems good, but we are not able to access other servers or the Internet. In this recipe, we will look at some tools provided by Ubuntu to troubleshoot the network connectivity issues.
Getting ready
As you are reading this recipe, I am assuming that you are facing a networking issue. Also, I am assuming that the problems are with a primary network adapter, eth0
.
You may need access to root account or account with similar privileges.
How to do it…
Follow these steps to troubleshoot network connectivity:
- Let's start with checking the network card. If it is working properly and is detected by Ubuntu. Check boot time logs and search for lines related to Ethernet,
eth
:$ dmesg | grep eth
- If you don't find anything in the boot logs, then most probably, your network hardware is faulty or unsupported by Ubuntu.
- Next, check whether the network cable is plugged in and is working properly. You can simply check the LED indicators on the network card or use the following command:
$ sudo mii-tool
- If you can see a line with
link ok
, then you have a working Ethernet connection. - Next, check whether a proper IP address is assigned to the
eth0
Ethernet port:$ ifconfig eth0
- Check whether you can find a line that starts with
inet addr
. If you cannot find this line or it is listed as inet addr 169.254, then you don't have an IP address assigned. - Even if you see a line stating the IP address, make sure that it is valid for network that you are connected to.
- Now assuming that you have not assigned an IP address, let's try to get dynamic IP address from the DHCP server. Make sure that
eth0
is set for dynamic configuration. You should see line similar toiface eth0 inet dhcp
:$ cat /etc/network/interfaces
- Execute the
dhclient
command to query the local DHCP server:$ sudo dhclient -v
- If you can see a line similar to
bound to 10.0.2.15
, then you are assigned with a new IP address. If you keep gettingDHCPDISCOVER
messages, this means that your DHCP server is not accessible or not assigning an IP address to this client. - Now, if you check the IP address again, you should see a newly IP address listed:
$ ifconfig eth0
- Assuming that you have received a proper IP address, let's move on to the default gateway:
$ ip route
- The preceding command lists our default route. In my case, it is
10.0.2.2
. Let's try to ping the default gateway:$ ping –c 5 10.0.2.2
- If you get a response from the gateway, this means that your local network is working properly. If you do not get a response from gateway, you may want to check your local firewall.
- Check the firewall status:
$ sudo ufw status
- Check the rules or temporarily disable the firewall and retry reaching your gateway:
$ sudo ufw disable
- Next, check whether we can go beyond our gateway. Try to ping an external server. I am trying to ping a public DNS server by Google:
$ ping -c 5 8.8.8.8
- If you successfully receive a response, then you have a working network connection. If this does not work, then you can check the problem with the
mtr
command. This command will display each router between your server and the destination server:$ mtr -r -c 1 8.8.8.8
- Next, we need to check DNS servers:
$ nslookup www.ubuntu.com
- If you received an IP address for Ubuntu servers, then the DNS connection is working properly. If it's not, you can try changing the DNS servers temporarily. Add the
nameserver
entry to/etc/resolve.conf
above othernameserver
, if any:nameserver 8.8.8.8
- At this point, you should be able to access the Internet. Try to ping an external server by its name:
$ ping -c 3 www.ubuntu.com
There's more…
The following are some additional commands that may come handy while working with a network:
lspci
lists all pci devices. Combine it withgrep
to search for specific device.Lsmod
shows the status of modules in Linux kernels.ip link
lists all the available network devices with status and configuration parameters.ip addr
shows the IP addresses assigned for each device.ip route
displays routing table entries.tracepath
/traceroute
lists all the routers (path) between local and remote hosts.iptables
is an administration tool for packet filtering and NAT.dig
is a DNS lookup utility.ethtool
queries and controls network drivers and hardware settings.route
views or edits the IP routing table.telnet
was the interface for telnet protocol. Now it is a simple tool to quickly check remote working ports.Nmap
is a powerful network mapping tool.netstat
displays network connections, routing tables, interface stats, and more.ifdown
andifup
start or stop the network interface. They are similar toifconfig down
orifconfig up
.