# No ipv6 with systemd and others

## mv

This appears like a rather stupid question:

Why would somebody want to enable IPv6 support in kernel on a home system if the internet provider and local modem do not support it?

I thought this question is stupid, since the answer should be obviously that you do not need it if you do not run an ipv6 network directly.

However, the systemd ebuild and related Wkis say that you must enable it in the kernel, systemd gives an error message when it is not enabled.

Also other programs seem to require it, e.g. dhcpcd defaults to ip4vll (despite its name, this is somehow related with ipv6).

So far, even systemd seems to have no problems when running without ipv6 despite the error. I am just wondering what made people (especially systemd , its ebuild maintainers and Wikis) decide to make ipv6 appear as a hard dependency? Is ipv6 used nowadays for anything else than networking (e.g. some strange loopback or whatever)?

----------

## ulenrich

I think it is internal purpose related: systemd-nspawn etc...

preventing ipv6 external for example: /etc/sysctl.conf

```

...

net.ipv6.conf.default.disable_ipv6=0

net.ipv6.conf.lo.disable_ipv6=0

net.ipv6.conf.eth0.disable_ipv6=1

net.ipv6.conf.wlan0.disable_ipv6=1

```

Your interfaces might be named different ...

----------

## mv

 *ulenrich wrote:*   

> I think it is internal purpose related: systemd-nspawn etc...

 

Why would this require IPv6?

----------

## UberLord

 *Quote:*   

> Why would somebody want to enable IPv6 support in kernel on a home system if the internet provider and local modem do not support it?

 

My ISP has a native IPv6 connection (as well as IPv4). I use a PPPoA <-> PPPoE bridge (as the UK is PPPoA) so I an use a NetBSD PPPoE client for IPv6.

This works very well - I assume the same is possible with a Gentoo based router.

 *mv wrote:*   

> Also other programs seem to require it, e.g. dhcpcd defaults to ip4vll (despite its name, this is somehow related with ipv6).

 

If has zero to do with IPv6.

IPv6 gives a local link address per device.

IPv4LL is a similar concept, but for only for IPv4 and only when a DHCP or static lease is not available.

dhcpcd-6 does have IPv6 support for RA and DHCPv6 though - maybe this has confused you.

 *Quote:*   

> Is ipv6 used nowadays for anything else than networking (e.g. some strange loopback or whatever)?

 

Is IPv4 used for anything else than networking? It's kinda of a silly question.

----------

## mv

 *UberLord wrote:*   

> If has zero to do with IPv6.

 

Thanks for clarification.

 *Quote:*   

> Is IPv4 used for anything else than networking? It's kinda of a silly question.

 

Even if you have a machine which is not connected to any network, you need certain minimal kernel support for networking, e.g. to administer cups (even if you use only a local printer).

I was wondering whether systemd makes something similar with IPv6. systemd-nspawn was already mentioned, but I do not see the connection with IPv6.

----------

## UberLord

I doubt systemd actually uses anything specifcally IPv6.

But then, I don't have an overly high opinion of the maintainers, so who knows what they use it for.

----------

## mv

 *UberLord wrote:*   

> I don't have an overly high opinion of the maintainers

 

Neither do I; in fact, except for testing occassionally some scripts which are supposed to work with any init-systems, I do not use systemd. I was just wondering about the instructions given everywhere and the error message when you have no IPv6.

----------

## Ant P.

 *mv wrote:*   

> Why would somebody want to enable IPv6 support in kernel on a home system if the internet provider and local modem do not support it?

 

No good reason, but the link-local autoconfig is nice to have if you screw up some IPv4 config and need to ssh into a LAN server to fix it  :Wink: 

----------

## ulenrich

Looking at  systemd-207 README 

it (only) "strongly" recommend" ipv6

```
REQUIREMENTS:

        Linux kernel >= 3.0

          CONFIG_DEVTMPFS

          CONFIG_CGROUPS (it's OK to disable all controllers)

          CONFIG_INOTIFY_USER

          CONFIG_SIGNALFD

          CONFIG_TIMERFD

          CONFIG_EPOLL

          CONFIG_NET

          CONFIG_SYSFS

        

        Linux kernel >= 3.8 for Smack support

        

        Udev will fail to work with the legacy layout:

          CONFIG_SYSFS_DEPRECATED=n

        Legacy hotplug slows down the system and confuses udev:

          CONFIG_UEVENT_HELPER_PATH=""

        Userspace firmware loading is deprecated, will go away, and

        sometimes causes problems:

          CONFIG_FW_LOADER_USER_HELPER=n

        Some udev rules and virtualization detection relies on it:

          CONFIG_DMIID

        Mount and bind mount handling might require it:

          CONFIG_FHANDLE

        Optional but strongly recommended:

          CONFIG_IPV6

          CONFIG_AUTOFS4_FS

          CONFIG_TMPFS_POSIX_ACL

          CONFIG_TMPFS_XATTR

          CONFIG_SECCOMP

```

As systemd is not only a boot-startup-init system but also wants to make sophicticated features of the Linux eco-system available to the ordinary user, I guess systemd-developers want to use that ipv6 space ...

PS: systemd-207 just lifted requirement linux-2.6.39 to kernel linux-3.0 !

----------

## eyoung100

 *mv wrote:*   

> This appears like a rather stupid question:
> 
> Why would somebody want to enable IPv6 support in kernel on a home system if the internet provider and local modem do not support it?
> 
> I thought this question is stupid, since the answer should be obviously that you do not need it if you do not run an ipv6 network directly.
> ...

 

I realize this is a little old, but I have to agree with the OP on this.  Our new router supports IPv6 DHCP from the ISP only, i.e. the address is fetched as IPv6 but the LAN DHCP server still only hands out IPv4.  As such, when I switched to systemd this weekend wicd no longer connects and 

```
$ systemctl status network.target dhcpcd.service 
```

 shows Failed as the router's DHCP server only understands IPv4.  Consequently, my ISP is still on IPv4...

An easy work around for this is to:

Enable IPv6 in kernel.Switch to a profile that supports systemd , using eselect profile.  This enables IPv6 and any other needed flags.Use ufed, or add -ipv6 to /etc/make.conf to effectively override systemd.emerge -uDN world

Since IPv6 is enabled in the kernel, systemd doesn't complain, about missing options, and my router is happy again with IPv4.

----------

## TechnoMage40

not that old. I was bitten by this same issue on my work Gentoo box... I first thought to force dhcpcd to use IPv4 by adding the -4 cmdline arg, but that gave me about 5-10 minutes of a working IP address, then systemd, in its "wisdom" said, 'nah, you need to be using IPv6', and everything broke again...   :Very Happy: 

After reading this post, I used the -ipv6 USE flag and am finishing the world update as I type (I had to run it with --fetchonly so I wouldn't have the emerge process die after the network connection reset).

But at this point, I think that the processes that systemd was using to force the NIC to IPv6 have been properly updated, because it's maintained its usual v4 address for over an hour now.

----------

