I am trying to fully disable IPv6 on an IPv4-configured virtual network adaptor in an LXD container, but it seems to be autoconfiguring an IPv6 address anyway.
Quoth to the documentation:
Note that an interface without any static IPv6 addresses configured, and neither DHCPv6 nor IPv6LL enabled, shall be considered to have no IPv6 support. IPv6 will be automatically disabled for that interface by writing "1" to /proc/sys/net/ipv6/conf/ifname/disable_ipv6.
I am using the following configuration:
[Match] Name=ext0 [Link] RequiredForOnline=no [Network] Address=172.29.1.12/16 Gateway=0.0.0.0 DHCP=no LinkLocalAddressing=no IPv6AcceptRA=no ConfigureWithoutCarrier=yes
As you can see, systemd-networkd has not set
disable_ipv6 to 1 as the documentation states:
# cat /proc/sys/net/ipv6/conf/ext0/disable_ipv6 0 # ip addr show dev ext0 40: ext0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:16:3e:07:d6:95 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.29.1.12/16 brd 172.29.255.255 scope global ext0 valid_lft forever preferred_lft forever inet6 fd42:158c:c543:8cfe:216:3eff:fe07:d695/64 scope global dynamic mngtmpaddr valid_lft 3316sec preferred_lft 3316sec inet6 fe80::216:3eff:fe07:d695/64 scope link valid_lft forever preferred_lft forever
The systemd-networkd log shows the interface is gaining a link-local address, even though it has been explicitly disabled:
# journalctl -u systemd-networkd -- Logs begin at Wed 2019-10-02 10:29:04 UTC, end at Wed 2019-10-02 10:30:25 UTC. -- Oct 02 10:29:04 assist1 systemd-networkd: ext0: Gained IPv6LL Oct 02 10:29:04 assist1 systemd-networkd: Enumeration completed Oct 02 10:29:04 assist1 systemd: Started Network Service. Oct 02 10:29:04 assist1 systemd-networkd: ext0: Configured
I am aware of sysctl settings to disable IPv6, which will work, but I would prefer to not use these as I don't want to disable IPv6 globally, and the virtual adaptors may be re-configured to use IPv6 or not dynamically.