如何使用 systemd-networkd 在 LXD 容器中完全禁用 IPv6

如何使用 systemd-networkd 在 LXD 容器中完全禁用 IPv6

我正在尝试在 LXD 容器中配置 IPv4 的虚拟网络适配器上完全禁用 IPv6,但它似乎无论如何都会自动配置 IPv6 地址。

引用文档:

请注意,未配置任何静态 IPv6 地址且未启用 DHCPv6 或 IPv6LL 的接口应被视为不支持 IPv6。通过将“1”写入 /proc/sys/net/ipv6/conf/ifname/disable_ipv6,将自动禁用该接口的 IPv6。

我正在使用以下配置:

[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

如您所见,systemd-networkd 有不是设置disable_ipv6为 1,如文档所述:

# 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

systemd-networkd 日志显示接口正在获取链接本地地址,即使它已被明确禁用:

# 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[36]: ext0: Gained IPv6LL
Oct 02 10:29:04 assist1 systemd-networkd[36]: Enumeration completed
Oct 02 10:29:04 assist1 systemd[1]: Started Network Service.
Oct 02 10:29:04 assist1 systemd-networkd[36]: ext0: Configured

我知道 sysctl 设置可以禁用 IPv6,这会起作用,但我不想使用这些设置,因为我不想全局禁用 IPv6,并且虚拟适配器可能会重新配置为使用 IPv6 或不动态使用。

答案1

这种行为发生了变化第482章由于没有明显的原因,文档没有更新。现在 IPv6 堆栈永远不会被禁用,只能由 systemd-networkd 启用。

相关内容