Arch update breaks network connectivity

March 26, 2014 7.9k views
I did a pacman -Syu about two weeks ago and rebooted after which I promptly lost my ability to ssh into the droplet. Console access was successful but I was unable to ping 8.8.8.8 (Network is unreachable). Restoring from backup fixed the problem. I can either wait and hope for a future update to fix the problem or I can try downgrading packages one at a time until I figure out what's causing the problem. But there are 34 packages pacman updated. Among them: bash-4.3-3 coreutils-8.22-3 cryptsetup-1.6.4-1 device-mapper-2.02.105-2 dhcpcd-6.3.2-1 e2fsprogs-1.42.9-2 file-5.17-2 git-1.9.1-1 glibc-2.19-3 grep-2.18-1 keyutils-1.5.9-1 libarchive-3.1.2-6 libedit-20140213_3.1-1 libnl-3.2.24-1 libseccomp-2.1.1-1 libsystemd-211-1 libtirpc-0.2.4-1 libutil-linux-2.24.1-3 linux-firmware-20140316.dec41bc-1 lvm2-2.02.105-2 man-pages-3.63-1 mkinitcpio-17-1 openssh-6.6p1-1 pkgfile-13-1 ppp-2.4.6-2 python2-2.7.6-3 readline-6.3-3 s-nail-14.6.2-1 sqlite-3.8.4.1-1 sudo-1.8.10.p2-1 systemd-211-1 systemd-sysvcompat-211-1 tzdata-2014a-1 util-linux-2.24.1-3 Has anyone else run into this problem? If not, I could not find this exact issue in google. Thanks in advance for your guidance. EB
10 Answers
From my pacman.log:

[2014-03-06 21:41] [ALPM-SCRIPTLET] :: systemd has not been reexecuted. It is recommended that you
[2014-03-06 21:41] [ALPM-SCRIPTLET] reboot at your earliest convenience.
[2014-03-06 21:41] [ALPM-SCRIPTLET] :: Network device naming is now controlled by udev's net_setup_link
[2014-03-06 21:41] [ALPM-SCRIPTLET] builtin. Refer to the NETWORK LINK CONFIGURATION section of the
[2014-03-06 21:41] [ALPM-SCRIPTLET] udev manpage for a full description.
[2014-03-06 21:41] [ALPM-SCRIPTLET] :: No changes have been made to your network naming configuration.
[2014-03-06 21:41] [ALPM-SCRIPTLET] Interfaces should continue to maintain the same names.
[2014-03-06 21:41] [PACMAN] upgraded systemd (208-11 -> 210-2)


But actually it did rename the network interface. Sounds like the same issue to me. If so, just update your network profile for netctl or netcfg or whatever you use.
I have this problem too.. I don't understand your answer ziltoide. Please be more specific?
I seem to have netcfg by default. How does this update break my configuration and how/why do I need to reconfigure it? Also, why would one use netctl vs. netcfg?
EB
I am not aware of the inner workings of why the network interface was renamed. Your configuration broke because it still points to the old name, simple as that if I'm not mistaken about your issue.
Netctl has replaced netcfg as the default network profile manager in Arch. Netcfg has been removed from the [core] repo and therefore will not receive updates anymore. Neither is essential to networking, just convenient. I would take this chance to migrate to netctl. See this tutorial:
The tutorial assumes the interface is called eth0. After the update the interface was renamed to ens3 for me. You should first check what it's now called in your system:
~~~~
ip link
~~~~
Adapt your profile accordingly.
by Trevor Bergeron
Here's a quick guide on upgrading Arch from Netcfg to Netctl on your Droplet.
Sorry, tutorial here:
https://www.digitalocean.com/community/articles/how-to-upgrade-arch-from-netcfg-to-netctl-on-a-digitalocean-vps
by Trevor Bergeron
Here's a quick guide on upgrading Arch from Netcfg to Netctl on your Droplet.
Many thanks for the tips and the guide, ziltoide. I installed netctl and configured per the guide, but pacman -Syu still cut me off from the network. I followed the troubleshooting steps in the guide and was ultimately able to re-establish network access. The tricky part for me was that ifconfig would only show me the local device, lo. I had to do an 'ip a' to list all my network devices and to learn the true name of my network interface, which for me is 'enp0s3'.
EB
Tutorial is flawed, removing network device before downloading a file seems impossible...
The interface name is never eth0 so I think this tutorial is never tested on arch.
Thanks for the pointers everyone. I was able to resuscitate my droplet's network connectivity by doing

sudo netcfg -u ethernet-static

(Before I did that, I edited /etc/network.d/ethernet-static and replaced all occurences of 'eth0' with 'enp0s3'. I don't know if that was a required step.)

Now I can migrate to netctl directly from the affected droplet.
The upgrade from netcfg to netctl renames the default network device names, so there's pretty much no way of knowing what the name is AFAIK. The image DO gives is ancient, and it's pretty difficult to get working. They've officially 'deprecated' it, what ever that means to them. Quite unfortunate, I wonder if it's an upstream issue
i had the same problem.

after following the arch networking guide:

https://wiki.archlinux.org/index.php/Network_configuration#Persistent_configuration_on_boot_using_systemd_and_udev_rules

and realizing that my network interface had changed from eth0 to enp0s3, all i had to do was:

(within the digitalocean console access)

# vi /etc/conf.d/netcfg - change 'eth0' to 'enp0s3' within text
# mv /etc/conf.d/network\@eth0 /etc/conf.d/network\@enp0s3
# systemctl enable network@enp0s3.service
# systemctl start network@enp0s3.service

and voila, my network came back up.
Have another answer? Share your knowledge.