Arch Linux - connect: Network is unreachable

The problem I was facing was that there was no eth0 (from what I can understand.) Run the command ip link, this should output your interfaces. I did not have the eth0 interface. Instead I had enp1s8.

Because I was using static, I copied the example profile with cd /etc/netctl then cp examples/ethernet-static my-network. After that, I edited my-network with nano my-network, and changed the Interface from eth0 to en1s8 (or whatever your adapter is in ip link). Finally, I enabled it to use that profile on startup with netctl enable my-network.

Enabling the profile will ensure that it starts upon boot, but there is no need to reboot the system, simply run netctl start my-network to initialize it immediately.

I was able to get help on the official Arch Linux forums, you can view my topic there.


Network unreachable means you don't have a route to the network. If you can't even ping the local router, either you don't have an IP address or your network interface is down.

netctl is the standard utility for managing network interfaces in Arch. If you haven't set that (or something else) up, you won't have any network. Not even DHCP.


Archlinux says, try dhcpcd in case your installer can't connect automatically. This worked on the spot for me AFTER installation. Just type "dhcpcd" as a command, wait a few seconds, and then "ip route" or "ping 8.8.8.8" to check if it works. I even used "watch ip address" to see how fast these inet and inet6 addresses pop up.

Instead of using dhcpcd, I can also connect from zero with:

modprobe e1000e

ip link set dev eth0 up
ip address add 192.168.0.16/24 dev eth0
ip route add 192.168.0.0/24 dev eth0
ip route add default via 192.168.0.1

e1000e is a "Network Driver", says modinfo. By loading this module I get a eth0 link (no, don't look for it in /dev). The "ip" commands activate the link, choose an address and define a local (subnet) and then a default gateway. It took me quite some time to test this out (ip link help, ip address help, ip route help...).

So this is instructive, but "dhcpcd" is faster to type, and probably more robust. And you can stop it cleanly with "dhcpcd -x".

With a working ping and the mirrorlist in /etc/pacman.d/ you have all you need for pacman or pacstrap.

And yes, I saw a kernel message renaming eth0 to enoxxx, so you have to check first with "ip link" what interfaces are already set up by systemd. It happens here:

[    3.052354] e1000e 0000:00:1f.6 eth0: (PCI Express:2.5GT/s:Width x1) 94:c6:91:a5:39:b8
[    3.052360] e1000e 0000:00:1f.6 eth0: Intel(R) PRO/1000 Network Connection
[    3.052445] e1000e 0000:00:1f.6 eth0: MAC: 13, PHY: 12, PBA No: FFFFFF-0FF
[    3.055917] e1000e 0000:00:1f.6 eno1: renamed from eth0

The .16 in my address is just any (free) number, and 192.168.0.1 should always be the gateway. Maybe I was lucky, but it is good news that you can hack around under systemd and inet6. I will try netctl, though.

And right now I have booted with systemd and have dhcpcd started. I got address .15 on "eno1" and three inet6 addresses, but apart from that the result is quite the same as with above "ip"-hack.

3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 94:c6:91:a5:39:b8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.15/24 brd 192.168.0.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet6 2a05:41c0:12:bf00::2/128 scope global dynamic noprefixroute 
       valid_lft 2559430sec preferred_lft 572230sec
    inet6 2a05:41c0:12:bf00:f51e:97c1:de6f:6f49/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591994sec preferred_lft 604794sec
    inet6 fe80::47cf:a2e4:af0b:b7cd/64 scope link 
       valid_lft forever preferred_lft forever 


 default via 192.168.0.1 dev eno1 proto dhcp src 192.168.0.15 metric 203 
 192.168.0.0/24 dev eno1 proto dhcp scope link src 192.168.0.15 metric 203