We are going to explain how to solve ping localhost error.
You will solve the a similar error like:
ping: unknown host localhost
Solution 1: /etc/hosts
Open the file /etc/hosts with sudo and verify if it has entires for localhost.
Here is how it should looks like the entries for localhost:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
Solution 2: /etc/nsswitch.conf
Another cause of the error is bad permissions for the file /etc/nsswitch.conf. The file requires specific permissions: Solve it with the next command:
sudo chmod 644 /etc/nsswitch.conf
Also verify that /etc/nsswitch.conf has the entry:
hosts: files dns
Solution 3: Disable all firewalls
Trye to temporarily disable iptables, ufw, or any other firewall that may be in place.
Solution 4: Check DNS
Open the file /etc/resolv.conf and validate the DNS specified in the file.
Appendix
Check Local Loopback interface is up
Execute the command sudo ifconfig it should output:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:295 errors:0 dropped:0 overruns:0 frame:0
TX packets:295 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:43479 (42.4 KiB) TX bytes:43479 (42.4 KiB)
If no local loopback open the file /etc/network/interfaces (debian/ubuntu) or /etc/sysconfig/network-scripts/ifcfg-lo (red hat/centos). Add the loopback interface and restart networking.
auto lo
iface lo inet loopback
You can also use the command ip link show lo to verify if the loopback interface is up.
1: lo: mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00