You are not logged in.

#1 2022-11-06 21:26:19

ahelwer
Member
From: Atlanta, GA, USA
Registered: 2022-11-06
Posts: 2
Website

[SOLVED] Ethernet: only assigned IPv6 address and cannot ping gateway

Solution

This was a Wake-on-LAN (WoL) dual-boot issue where the Windows NIC driver supports more features than the Linux NIC driver, and stores those feature flags in the NIC's volatile memory. When Linux boots up, the driver sees these unknown feature flags and glitches out. The solution is to boot into Windows and disable the following four options in the NIC from the device manager:

Enable PME
Reduce Speed on Power Down
Wake on Magic Packet
Wake on Pattern Match

Original Post

Hello, I installed Arch Linux and am having trouble setting up the network connection. I believe I have nearly exhausted the documentation so hope I can find help here. Unfortunately due to the nature of this issue I can't copy/paste large log outputs from the computer, although I may have to resort to taking a photo and doing some text extraction if it comes to that.

Network Setup

I have Google Fiber with the following network topology (all ethernet unless otherwise noted):

Google Fiber modem
  |-- Google Home Router (hoping to convert to a Turris Omnia soon)
  |  |-- TP-Link Switch
  |  |  |-- Google Home Router (in bridge mode)
  |  |  |  |-- (Over wifi) Various other devices
  |  |  |-- Computer running Arch Linux
  |  |  |-- Various other devices

I am trying to configure the ethernet connection on the computer running Arch Linux (henceforth "the computer"). This connection works when running windows, which is dual-booted on the computer. The connection also worked to download package updates during the Arch Linux live USB install, to my recollection (but strangely the connection no longer works in the live USB). Both network lights on the cable flash normally when booted into Arch.

I can change the status of the ethernet link by enabling or disabling IPv6 on the router through the google home app, described further below.

Versions

The output of cat /etc/os-release is (transcribed):

NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
...

The output of hostnamectl shows:

Static hostname: node-workstation
Icon name: computer-desktop
Chassis: desktop
Machine ID: ...
Boot ID: ...
Operating System: Arch Linux
Kernel: Linux 6.0.6-arch1-1
Architecture: x86-64
Hardware Vendor: ASUS
Hardware Model: All Series
Firmware Version: 1603

Hardware and Drivers

The output of lspci shows the ethernet controller is an Intel Corporation Ethernet Connection 1217-V (rev 05). The subsystem is ASUSTeK Computer Inc. Device 859f. The kernel driver in use is e1000e.

The output of dmesg | grep e1000e has as the final line "NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx", which shows the kernel module is loaded and initialized.

The name of the ethernet connection is eno1. The output of the command ip link shows approximately:

1. lo: ...
2. eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codl state UP mode DEFAULT group default qlen 1000
    link/ether e0:3f:49:79:41:d1 brd ff:ff:ff:ff:ff:ff
    altname enp0s25

Network Manager

I am using systemd-networkd. It is enabled on startup. The output of systemctl status systemd-networkd shows that the service is enabled, the preset is enabled, and it is active (running). There is no output to systemctl --failed.

The configuration file for eno1 lives at /etc/systemd/network/20-wired.network. It contains:

[Match]
Name=eno1

[Network]
DHCP=yes

When I boot up, the output of networkctl -a status shows that eno1 is in state degraded (configuring), although the Online state is online. After approximately three minutes it transitions to state routable (configured). The log output below shows:

Configuring with /etc/systemd/network/20-wired.network.
Link UP
Gained carrier
Gained IPv6LL

and nothing else. Notably, it only eventually transitions to state routable (configured) if IPv6 is enabled on the router through the google home app. If IPv6 is disabled, the link stays in the degrading (configuring) state forever. If the link reaches state routable (configured) and then I disable IPv6 through the google home app, the link transitions to state degraded (configured).

Once the link reaches the routable (configured) state, the networkctl -a status command shows that it is assigned two IPv6 addresses (one fe80-prefixed) but no IPv4 addresses. It also has an entry for the IPv6 address of the gateway, which matches the gateway IPv6 address I see from other devices in the network. It also has an entry for a DNS IPv6 address (unsure where this comes from) 2605:a601:5567:1100:9e4f:5fff:fe11:1f28.

Attempting to ping the gateway causes the command to hang indefinitely
Attempting to ping the DNS server returns "Destination unreachable: Address unreachable"
Attempting to ping the Quad9 Foundation IPv6 DNS server 2620:fe::fe returns "Destination unreachable: Address unreachable"
Attempting to ping any IPv4 address returns "Network is unreachable"
Attempting to ping any hostname returns "Temporary failure in name resolution"
Attempting to ping the fe80-prefixed address assigned to the computer from any other device on the local network returns "No route to host"

Routing

Unsurprisingly (since we don't have an IPv4 address) the output of ip route show is nothing. The output of ip -6 route is (transcribed):

::1 dev lo proto kernel metric 256 pref medium
2605:a601:5567:1100::/64 dev eno1 proto ra metric 1024 expires 85681sec pref medium
fe80::/64 dev eno1 proto kernel metric 256 pref medium
default via fe80::9e4f:5fff:fe11:1f29 dev eno1 proto ra metric 1024 expires 3345sec mtu 1500 pref medium

Conclusion

I've plucked away at this for about two days now, and have certainly learned a lot (which is why I chose Arch!) but at this point mostly just want my network to start working so I can move on to configuring other things. Any help or suggestions people can provide would be greatly appreciated.

Last edited by ahelwer (2022-11-07 13:41:30)

Offline

#2 2022-11-06 22:13:38

Koatao
Member
Registered: 2018-08-30
Posts: 92

Re: [SOLVED] Ethernet: only assigned IPv6 address and cannot ping gateway

Hello,

My guess when I read (and re-read) is a faulty driver or that something is wrong with your ethernet adapter with (Arch?)Linux.

Interestingly enough, it seems pretty similar to: https://bbs.archlinux.org/viewtopic.php?id=191981. And this topic links back to a bunch of other topics with similar issues.

I suggest you read carefully the whole topic as the solution stated on the first post doesn't work for all.
It would seems that the Linux driver is not able to use the full features of your adapter.

Moreover: https://wiki.archlinux.org/title/Dual_b … ibernation.

Last edited by Koatao (2022-11-06 22:16:36)

Offline

#3 2022-11-06 23:37:28

cfr
Member
From: Cymru
Registered: 2011-11-27
Posts: 7,132

Re: [SOLVED] Ethernet: only assigned IPv6 address and cannot ping gateway

Is Windows Fast Start disabled? This is some option in Windows and not a BIOS/UEFI setting. Apparently, Windows tends to keep re-enabling it, so boot into Windows to check, even if you know you disabled it in the past. Because if it has enabled itself, that might explain why your adaptor did work in the live environment but now doesn't.


CLI Paste | How To Ask Questions

Arch Linux | x86_64 | GPT | EFI boot | refind | stub loader | systemd | LVM2 on LUKS
Lenovo x270 | Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz | Intel Wireless 8265/8275 | US keyboard w/ Euro | 512G NVMe INTEL SSDPEKKF512G7L

Offline

#4 2022-11-07 07:39:25

seth
Member
Registered: 2012-09-03
Posts: 50,924

Re: [SOLVED] Ethernet: only assigned IPv6 address and cannot ping gateway

default via fe80::9e4f:5fff:fe11:1f29 dev eno1 proto ra metric 1024 expires 3345sec mtu 1500 pref medium

Default route is link local.

a) please use code tags, https://bbs.archlinux.org/help.php#bbcode
b) "approximately … transcribed" isn't really super helpful. You can redirect the command output into a file and copy and paste from there w/ your windows boot (which I assume is what you're using right now) or usb-walk it to a machine w/ network access. That's easier for you - and some actual data for us.
c) "altname enp0s25" is suspicious enough and you don't seem to have a lease at all.
So start by disabling the "pReDiCtAbLe iNtErFaCe nAmEs", https://wiki.archlinux.org/title/Networ … face_names - because they tend to cause race conditions.
d) for some actual data (now that you usb-walk it)

find /etc/systemd -type l -exec test -f {} \; -print
ip a
ip r
sudo journalctl -b

Offline

#5 2022-11-07 13:36:45

ahelwer
Member
From: Atlanta, GA, USA
Registered: 2022-11-06
Posts: 2
Website

Re: [SOLVED] Ethernet: only assigned IPv6 address and cannot ping gateway

Thank you all for taking the time to reply. I can confirm this did appear to be an issue with the Wake-on-LAN settings enabled from the Windows network driver and stored in the NIC's volatile memory! After unplugging the computer for 30 seconds and then booting into Arch, the network connection started working instantly and without issues - both IPv4 & IPv6 addresses were assigned and I can successfully ping anything I want.

I booted into Windows and through the device manager I disabled the following options on the network interface that I could find related to WoL:

  • Enable PME: changed from Enabled to Disabled

  • Reduce Speed on Power Down: changed from Enabled to Disabled

  • Wake on Magic Packet: changed from Enabled to Disabled

  • Wake on Pattern Match: changed from Enabled to Disabled

The network interface now works perfectly when rebooting from Windows directly into Arch!

I also confirmed that fast boot was disabled both in Windows options and in the BIOS (it was).

So looks like this is fixed, at least for me. What would be required for a permanent fix so nobody else encounters this? My hardware is a now-old 2013/2014 Haswell-era motherboard, but that generation was fairly popular (and still holds up) so others might still hit this. I suppose the real permanent fix is to add support (or at least parsing capability?) for these features in the e1000e driver when it interfaces with ASUSTeK Computer Inc. Device 859f? Or just clear the NIC's volatile memory before initialization in that driver. Perhaps I should also add some notes to the wiki. Anyway, thanks again!

Offline

Board footer

Powered by FluxBB