6 ms·
E_NOREPRO user@ubuntu-server:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 25.10 Release: 25.1
by simoncion 6mo ago
E_NOREPRO
user@ubuntu-server:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 25.10
Release: 25.10
Codename: questing
user@ubuntu-server:~$ uname -a
Linux ubuntu-server 6.17.0-7-generic #7-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 18 10:10:29 UTC 2025 x86_64 GNU/Linux
user@ubuntu-server:~$ getent ahosts us.archive.ubuntu.com
91.189.91.82 STREAM us.archive.ubuntu.com
91.189.91.82 DGRAM
91.189.91.82 RAW
91.189.91.81 STREAM
91.189.91.81 DGRAM
91.189.91.81 RAW
91.189.91.83 STREAM
91.189.91.83 DGRAM
91.189.91.83 RAW
2620:2d:4002:1::102 STREAM
2620:2d:4002:1::102 DGRAM
2620:2d:4002:1::102 RAW
2620:2d:4002:1::101 STREAM
2620:2d:4002:1::101 DGRAM
2620:2d:4002:1::101 RAW
2620:2d:4002:1::103 STREAM
2620:2d:4002:1::103 DGRAM
2620:2d:4002:1::103 RAW
user@ubuntu-server:~$ ip --oneline link | grep -v lo: | awk '{ print $2 }'
enp0s3:
user@ubuntu-server:~$ ip addr | grep inet6
inet6 ::1/128 scope host noprefixroute
inet6 fe80::5054:98ff:fe00:64a9/64 scope link proto kernel_ll
user@ubuntu-server:~$ fgrep -r -e us.archive /etc/apt/
/etc/apt/sources.list.d/ubuntu.sources:URIs: http://us.archive.ubuntu.com/ubuntu/
user@ubuntu-server:~$ sudo apt-get update
Hit:1 http://us.archive.ubuntu.com/ubuntu questing InRelease
Get:2 http://security.ubuntu.com/ubuntu questing-security InRelease [136 kB]
<snip>
Get:43 http://security.ubuntu.com/ubuntu questing-security/multiverse amd64 c-n-f Metadata [252 B]
Fetched 2,602 kB in 3s (968 kB/s)
Reading package lists... Done
I didn't think to wrap that in 'time', but it only took a few seconds to run... more than two and less than thirty.
The IPv6 packet capture running during all that reveals that it never tried to reach out over v6 (but that my multicast group querier is happily running):
user@ubuntu-server:~$ sudo tcpdump -i enp0s3 -s 0 -n 'ip6 or icmp6'
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes
22:16:44.327503 IP6 fe80::5054:98ff:fe00:64a9 > ff02::2: ICMP6, router solicitation, length 16
22:17:35.823917 IP6 fe80::<REDACTED> > ff02::1: HBH ICMP6, multicast listener query v2 [gaddr ::], length 28
22:17:41.706930 IP6 fe80::5054:98ff:fe00:64a9 > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28
I even manually ran unattended-upgrade, which looks to have succeeded. Other than unanswered router solicitations and multicast group query membership chatter, there continued to be no IPv6 communication at all, and none of the messages you reported appeared either in /var/log/syslog or on the terminal.
user@ubuntu-server:~$ sudo /usr/bin/unattended-upgrade
user@ubuntu-server:~$ sudo grep -e 'Tried to start delayed item' /var/log/syslog
user@ubuntu-server:~$
What am I doing wrong?
- nyrikki 6mo agoYou aren't running it during an external transitive failure that happened on April 15th. The problem isn't the happy path, the problem is when things fail, and that linux, in particular made it really hard to reliably disable [0] Once that hits someone's vagrant or ansible code, it tends to stick forever, because they don't see the value until they try to migrate, then it causes a mess. The last update on the original post link [1] explains this. The ipv4 host being down, not having a response, it being the third Tuesday while Aquarius is rising into what ever, etc... can invoke it. It causes pains, is complex and convoluted to disable when you aren't using it, thus people are afraid to re-enable it. [0] https://wiki.archlinux.org/title/IPv6#Disable_IPv6 https://wiki.archlinux.org/title/IPv6#Disable_IPv6 [1] https://tailscale.com/blog/two-internets-both-flakey https://tailscale.com/blog/two-internets-both-flakey
- simoncion 6mo ago> ...linux, in particular made it really hard to reliably disable Section 10.1 of that Archi Wiki page says that adding 'ipv6.disable=1' to the kernel command line disables IPv6 entirely, and 'ipv6.disable_ipv6=1' keeps IPv6 running, but doesn't assign any addresses to any interfaces. If you don't like editing your bootloader config files, you can also use sysctl to do what it looks like 'ipv6.disable_ipv6=1' does by setting the 'net.ipv6.conf.all.disable_ipv6' sysctl knob to '1'. > You aren't running it during an external transitive failure... I'll assume you meant "transient". Given that I've already demonstrated that the only relevant traffic that is generated is IPv4 traffic, let's see what happens when we cut off that traffic on the machine we were using earlier, restored to its state prior to the updates. We start off with empty firewall rules: root@ubuntu-server:~# iptables-save root@ubuntu-server:~# ip6tables-save root@ubuntu-server:~# nft list ruleset root@ubuntu-server:~# We prep to permit DNS queries and ICMP and reject all other IPv4 traffic: root@ubuntu-server:~# iptables -A OUTPUT -o enp0s3 -p udp --dport 53 -j ACCEPT root@ubuntu-server:~# iptables -A OUTPUT -o enp0s3 -p tcp --dport 53 -j ACCEPT root@ubuntu-server:~# iptables -A OUTPUT -o enp0s3 -p icmp -j ACCEPT root@ubuntu-server:~# iptables -A INPUT -i enp0s3 -p udp --sport 53 -j ACCEPT root@ubuntu-server:~# iptables -A INPUT -i enp0s3 -p tcp --sport 53 -j ACCEPT root@ubuntu-server:~# iptables -A INPUT -i enp0s3 -p icmp -j ACCEPT root@ubuntu-server:~# iptables -A OUTPUT -o enp0s3 -j REJECT root@ubuntu-server:~# iptables -A INPUT -i enp0s3 -j REJECT root@ubuntu-server:~# And we do an apt-get update, which fails in less than ten seconds: root@ubuntu-server:~# apt-get update Ign:1 http://security.ubuntu.com/ubuntu questing-security InRelease Ign:2 http://us.archive.ubuntu.com/ubuntu questing InRelease <snip> Could not connect to security.ubuntu.com:80 (91.189.92.23). - connect (111: Connection refused) Cannot initiate the connection to security.ubuntu.com:80 (2620:2d:4000:1::102). - connect (101: Network is unreachable) <long line snipped> <snip> W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/questing-security/InRelease Cannot initiate the connection to security.ubuntu.com:80 (2620:2d:4000:1::102). - connect (101: Network is unreachable) <long line snipped> W: Some index files failed to download. They have been ignored, or old ones used instead. root@ubuntu-server:~# In this case, the IPv6 traffic I see is... an unanswered router solicitation, and the multicast querier chatter that I saw before. [0] What happens when we change those REJECTs into DROPs root@ubuntu-server:~# iptables -D OUTPUT -o enp0s3 -j REJECT root@ubuntu-server:~# iptables -D INPUT -i enp0s3 -j REJECT root@ubuntu-server:~# iptables -A OUTPUT -o enp0s3 -j DROP root@ubuntu-server:~# iptables -A INPUT -i enp0s3 -j DROP root@ubuntu-server:~# ...and then re-run 'apt-get update'? root@ubuntu-server:~# apt-get update Ign:1 http://security.ubuntu.com/ubuntu questing-security InRelease Ign:1 http://security.ubuntu.com/ubuntu questing-security InRelease Ign:1 http://security.ubuntu.com/ubuntu questing-security InRelease Err:1 http://security.ubuntu.com/ubuntu questing-security InRelease Cannot initiate the connection to security.ubuntu.com:80 (2620:2d:4002:1::103). - connect (101: Network is unreachable) <v6 addrs snipped> Could not connect to security.ubuntu.com:80 (91.189.92.24), connection timed out <long line snipped> <redundant output snipped> W: Some index files failed to download. They have been ignored, or old ones used instead. root@ubuntu-server:~# Exactly the same thing, except it takes like two minutes to fail, rather than ~ten seconds, and the error for IPv4 hosts is "connection timed out", rather than "Connection refused". Other than the usual RS and multicast querier traffic, absolutely no IPv6 traffic is generated. However. The output of 'apt-get' sure makes it seem like an IPv6 connection is what's hanging, because the last thing that its "Connecting to..." line prints is the IPv6 address of the host that it's trying to contact... despite the fact that it immediately got a "Network is unreachable" back from the IPv6 stack. To be certain that my tcpdump filter wasn't excluding IPv6 traffic of a type that I should have accounted for but did not, I re-ran tcpdump with no filter and kicked off another 'apt-get update'. I -again- got exactly zero IPv6 traffic other than unanswered router solicitations and multicast group membership querier chatter. I'm pretty damn sure that what you were seeing was misleading output from apt-get, rather IPv6 troubles. Why? When you combine these facts: * REJECTing all non-DNS IPv4 traffic caused apt-get to fail within ten seconds * DROPping all non-DNS IPv4 traffic caused apt-get to fail after like two minutes. * In both cases, no relevant IPv6 traffic was generated. the conclusion seems pretty clear. But, did I miss something? If so, please do let me know. [0] I can't tell you why the last line in the 'apt-get update' output is only IPv6 hosts. But everywhere there were IPv6 hosts, the reported error was "Network is unreachable" and for IPv4 the error was "Connection refused".