I've already set up ADSL and used it already for a system update, so I'm sure the set up is ok but pacman suddenly stopped working and when I checked ping wasn't working too. How can I find out what went wrong and how can I fix it?

Does your network interface show up on ifconfig? Do you have an IP address?
–
phuneheheJan 16 '11 at 12:21

How are you connected to your ADSL modem: Ethernet, USB, PCI card? How did you configure it? Are you sure it's not a problem at your ISP's end? Report the output of ifconfig, route -n and traceroute -n 8.8.8.8 (these commands may not be on your PATH if you aren't root).
–
GillesJan 16 '11 at 12:23

@Gilles- I used Ethernet and used pppoe-setup to configure it. I'll post the outputa ASAP.
–
Samrat Man SinghJan 16 '11 at 12:32

More information is needed to fix your problem, and here, the facts that it is on Arch Linux and that it is an ADSL connection isn't enough on their own to narrow down the solution. Consider making this question more generic (so more people find it), following the guide below, and posting a more specific question.
–
Shawn J. GoffJan 16 '11 at 17:18

1 Answer
1

IP Network Troubleshooting

There are a few standard things you can look for when you are experiencing network connectivity issues. These are listed here from a top-down, or least fundamental to most fundamental issues.

All the example ip commands shown here use a Linux-specific tool called iproute2. Many of the tasks can likely be done with ifconfig and route, but the syntax depends on the system. You can start looking for the correct command for your system on the Rosetta Stone for Unix (thanks @Gilles).

Is access down to one site and not others?

If you've just noticed a website or service is down, try others before concluding that you are the one experiencing problems, and not the website you are trying to visit.

Is DNS not working?

DNS resolves domain names to ip addresses. If it isn't working, you may be able to access services by ip address but not domain names. To test for this, use

ping -c 2 8.8.8.8

8.8.8.8 is the IP address of a Google server on the internet that should always be up; it can be replaced by any IP address known to be on the target network. This command sends two ICMP echo packet to a specific IP address; it doesn't rely on DNS to work. If the command works, replace the IP address with a domain name known to be working on the target network, like ping -c 2 yahoo.com; if this doesn't work, the problem is likely to be DNS. As a quick fix, you can try opening /etc/resolv.conf and adding nameserver 8.8.8.8 after the last line (note, you may need root privileges to edit the file). That address happens to be a DNS server, and adding it to resolv.conf will tell your system to use it. If that doesn't work, you should submit another question with more details.

Is there a route to the network?

To reach a network, your system has to know how to route to it. To see the routes your system knows about, we need a couple of commands.

ip rule show

This command lists any routing rules that are setup on your system. If you see only three entries (lines) and they end in 'local', 'main', and 'default', then you have only the standard rules setup. If there are any other entries, note them; in particular, the last word of the line – they are names of routing tables.

ip route show

This command shows routes setup on the main table. There should usually be an entry that directs traffic to the target network. For internet connections, it is a route that looks like default [via address] dev [dev]... where you may or may not have the 'via' part, and '[dev]' may be something like 'eth0' or 'wlan0' that represents which network interface the network is on.

Previously I said that there should usually be an entry there. If you had other tables setup and a rule pointing to them to look at the entries in other tables by using the following, replacing [table name] with one of the names you noted in the previous (ip rule) step.

ip route show table [table name]

If you do not have a route to the target network, you need to add one (or modify your network setup so it automatically adds the correct one for you). If you don't know how, ask a more specific question here, armed with this knowledge.

Is the network interface up?

To be able to use a network interface it has to be up and it should have an address. You can find if it is up by using:

ip link show

This lists the network interfaces on your system. You should see at least two, one called "lo" and another entry for each network interface on your system. If you have a wired and a wireless interface, you might see 'lo', 'eth0', and 'wlan0' or 'lo', 'eth0', and 'eth1' whatever they are – that first bit after the entry index is the name of the network interface. For each of the interface entries, you should also see either 'state UP', 'state DOWN', or 'state UNKNOWN'. If the network interface that is connected to the target network is not present, it can be that the hardware driver isn't loaded or working (for actual network cards) or for PPP connections, that there is no connection established. If it says the link is down or unknown, the interface needs to be brought up. This is usually done by your system's networking setup – if it's not up, you can ask a more specific question here with this in mind. It can be done manually by the following command, replacing [dev] with the interface name (you may need root privileges).

ip link set dev [dev] up

Does the network interface have an address?

In addition to having the interface up, it needs to have an IP address. You can find the addresses of your interfaces by running the following command.

ip address show

You'll see an entry for each of your interfaces with all the addresses it has. Most entries will have a link address, the important part is the IP address. There should be a line labeled 'inet' with an address for the network interface connected to the target network. It should be added automatically by your networking setup; if it wasn't, a dhcp client may not be running, or the ppp daemon may not have added it – you should ask a more specific question here with this in mind. One can be added manually (but depending on the network may not work) by the following command, replacing [ip address] with an ip address appropriate for the network (which may be unknown if the network supplies IP addresses via DHCP or PPP) and replacing [dev] with the interface name.

Great guide. The ip commands are Linux-specific, but the overall procedure isn't.
–
GillesJan 16 '11 at 14:34

@Gilles I was wondering about that: I specifically used them because someone else critiqued another answer for suggesting ifconfig instead of ip. Is there a universal set of commands? (For instance, does ifconfig, and route work on all Unices? Do other unicies have policy routing (that is, alternate routing tables and rules)?
–
Shawn J. GoffJan 16 '11 at 14:37

All the unices that the Rosetta Stone knows about have ifconfig, though the output format and command line can vary. The route command is also very common (even Windows has it), though its arguments differ a lot. ip (which is Linux-only) mainly has the advantage of combining a lot of IP-related settings under one tool. IIRC I critiqued that critique of ifconfig. I guess all unices have complex routing subsystems, but they're very different.
–
GillesJan 16 '11 at 16:23