Subject: [alpine-user] Alpine Linux is second class member in an IPv6 network

From: Bernhard Ehlers <[email-masked]>
Date: Wed, 18 Oct 2017 14:36:38 +0200

Hi,

I’m quite frustrated trying to integrate Alpine Linux in an IPv6 network.
My requirements should be pretty standard, I want to use auto
configuration (SLAAC) for address assignment and classless DHCPv6
for getting the DNS server IPs and domain name from the router.

While SLAAC is working fine, DHCPv6 is a nightmare in Alpine.
The default DHCP client udhcpc6 is simply not ready for use.
They made some changes in busybox v1.27, so it might work,
but that’s available only in the edge branch. Furthermore the
ifup from busybox doesn’t support the use of DHCPv6 for IPv6.

Then I tried using the ifupdown package together with dhclient.
The first stumbling block is, that ifupdown looks for /sbin/dhclient,
while it is installed in /usr/sbin/dhclient. Adding a symlink solves this.
Next is, that ifupdown calls the ip command with options, it doesn’t
support. So I additionally installed iproute2, that solves that.

But the stateless DHCPv6 still doesn’t work. After some more
debugging (and comparing with a working Debian) I saw that
ifup doesn’t wait for a link-local address before starting the DHCPv6
client. Therefore ifup often fails. That was fixed in ifupdown v0.8,
but Alpine still uses 0.7. So I tagged ifupdown as outdated.

At that point I gave up.

Regards

Bernhard

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---

---

From: Jean-Louis Fuchs <[email-masked]>
Date: Thu, 19 Oct 2017 13:24:52 +0200

Hi

> I’m quite frustrated trying to integrate Alpine Linux in an IPv6 network.

There is also a problem with static IPv6 config. Something locks the
IPv6 routing table for 30min (containing the correct routes), but
after 30min the lock goes away, along with the routes. I worked
around this by reseting the routing table, just after the interface is
configured. So the script will stay for 30min and then fix the routing
table, when the lock goes away. (Alpine 3.6)

I haven't reported this because I didn't have time to investigate the
cause or compare to edge. And of course the whole issue is more
complex. The problem has also to do with the fact that although the
default of accept_ra and autoconf are set to 0, the interface comes up
with accept_ra and autoconf set to 1. 

$> cat /etc/sysctl.d/01-ipv6.conf
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.autoconf = 0

Again I just worked around it:

iface eth0 inet6 static
        address X
        netmask 64
        gateway X
        pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra
        pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/autoconf

My guess even though the interface is set to static, some
auto-configuration mechanism is still being started.

Best,
    Jean-Louis

---

From: Jakub Jirutka <[email-masked]>
Date: Thu, 19 Oct 2017 13:54:42 +0200

Hi Pavel,

since you have deep knowledge and experience with linux networking, can I ask you to help us with this IPv6 issue on Alpine, please?

Jakub

> On 19. Oct 2017, at 13:24, Jean-Louis Fuchs <[email-masked]> wrote:
> 
> Hi
> 

>> On 18. Oct 2017, at 14:36, Bernhard Ehlers <[email-masked]> wrote:
>> 
>> Hi,
>> 

---

---

From: Pavel Šimerda <[email-masked]>
Date: Thu, 19 Oct 2017 19:04:42 +0200

Hi everyone,

it looks like you are right and the autoconf isn't disabled. Linux
kernel autoconf is tricky and if the script (of which I have no 
knowledge right now) waits for something, it would be interesting
to check what that is. I am more into userspace implementations like
dhcpcd, libndp/NetworkManager and the like.

Cheers,

Pavel

---