原帖

原帖

原帖

我正在尝试为我的 Debian 容器(在 LXD 上运行)配置静态 IPv6 地址,但系统始终忽略我的配置。

目前我的/etc/network/interfaces样子是这样的:

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp

auto eth1
iface eth1 inet static
    address 10.1.0.10/16
    gateway 10.1.0.1
iface eth1 inet6 static
    address fd01::10/64
    gateway fd01::1
    autoconf 0

静态 IPv4 配置和 IPv6 的 DHCP 选项(在 eth0 上)工作正常,如命令ip addr所示:

76: eth0@if77: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:53:50:bc brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.0.0.10/16 brd 10.0.255.255 scope global dynamic eth0
       valid_lft 84286sec preferred_lft 84286sec
    inet6 fd00::10/128 scope global
       valid_lft forever preferred_lft forever
78: eth1@if79: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:83:c3:49 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.1.0.10/16 brd 10.1.255.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fd01::658:fe25:52de:cc45/64 scope global dynamic mngtmpaddr
       valid_lft 3372sec preferred_lft 3372sec

但是我的系统总是忽略静态 IPv6 配置部分,并且总是生成自己的动态 IPv6 地址,而不是使用预先配置的地址。上面的输出还表明该接口上的 IP 地址是动态生成的。

但是,如果我使用该命令设置静态 IPv6 地址,ip addr add fd01::10/64 dev eth1它可以工作,但这不是解决此问题的适当且永久的解决方案。

编辑

(1)systemd网络管理器

该命令networkctl list返回以下输出:

IDX LINK     TYPE     OPERATIONAL SETUP
 WARNING: systemd-networkd is not running, output will be incomplete.
 (...)
 16 eth0     ether    n/a         unmanaged
 18 eth1     ether    n/a         unmanaged
 (...)

我认为这意味着 systemd 网络管理器被禁用。

(2)/etc/init.d/networking

/etc/init.d/networking重新启动容器并获取服务日志后,systemctl status networking.service将显示以下消息

● networking.service - Raise network interfaces
     Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sat 2020-02-08 00:22:06 UTC; 1min 31s ago
       Docs: man:interfaces(5)
    Process: 31 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
   Main PID: 31 (code=exited, status=1/FAILURE)

Feb 08 00:22:06 Core dhclient[112]: message status code Success: "all addresses still on link"
Feb 08 00:22:06 Core ifup[137]: RTNETLINK answers: File exists
Feb 08 00:22:06 Core ifup[31]: ifup: failed to bring up eth1
Feb 08 00:22:06 Core systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Feb 08 00:22:06 Core systemd[1]: networking.service: Failed with result 'exit-code'.
Feb 08 00:22:06 Core systemd[1]: Failed to start Raise network interfaces.

如果我将 eth0 配置为使用静态 IPv6 地址,则 eth0 也会出现错误。我通过以下方式发现了此错误消息配置静态 IPv6 地址的教程。

(3)主机系统

我一开始没有想到的一件事是该问题可能与我的主机操作系统有关。因此,我没有写到我的主机系统是具有定制内核的 Gentoo。
目前我还没有解决我的问题,但是在另一台主机(这次是 ArchLinux)上使用相同的设置进行的测试工作得很好。因为配置实际上是相同的,但主机系统不同,我认为我的问题与主机系统上的配置错误有关(例如,我必须启用另一个内核功能)。
我没有使用完全相同的配置。我的普通主机(Gentoo)使用 Debian 10,而我的 ArchLinux 测试机使用 Debian 11。在我的 Gentoo 主机上使用 Debian 11 时,它工作正常。而且,如果我使用 Debian 10 创建一个新容器,ip 配置也会按预期工作。

答案1

最后,我通过更改文件中条目的顺序解决了我的问题/etc/network/interfaces。现在看起来是这样的:

auto eth1
iface eth1 inet static
    address 10.1.0.10/16
    gateway 10.1.0.1
iface eth1 inet6 static
    address fd01::10/64
    gateway fd01::1

auto eth0
iface eth0 inet dhcp
iface eth0 inet6 dhcp

如果首先配置静态条目,则一切正常。

答案2

我不认为我可以给你一个完整的答案,只是一些需要调查的事情......

在我看来,这并不像是您的配置被忽略,它看起来像是被某些东西覆盖了。 IPv6地址开头FDxx::是本地地址IP。通常,未配置的接口将具有链路本地地址(以 开头FE80::)以及其他地址。但你的系统没有显示这些。 FDxx::地址不会随机出现,所以某物已经配置了这些。

我之前在使用带有多个网络管理器的基于 Debian 的发行版时遇到过问题。特别是在 Debian 的一个分支上,它附带了比格犬骨黑,有一个包叫康曼以及常规 Debian 附带的 DHCP 客户端。

我会检查您的系统,看看是否有其他内容可能覆盖您的 IPv6 网络配置。

答案3

我遇到了同样的问题 – iface enp0s31f6 inet6 static(使用地址、网络掩码和网关)在 中进行了配置/etc/network/interfaces,但是当系统启动时,ip addr仅显示链路本地 IPv6 地址。

我检查了以下的输出sudo systemctl status networking.service

root@redacted ~ # systemctl status networking.service
● networking.service - Raise network interfaces
     Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2020-09-02 14:44:47 CEST; 1min 45s ago
       Docs: man:interfaces(5)
    Process: 467 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
   Main PID: 467 (code=exited, status=1/FAILURE)

Sep 02 14:44:47 lh-mhk01 systemd[1]: Starting Raise network interfaces...
Sep 02 14:44:47 lh-mhk01 ifup[509]: /bin/sh: 1: route: not found
Sep 02 14:44:47 lh-mhk01 ifup[467]: ifup: failed to bring up enp0s31f6
Sep 02 14:44:47 lh-mhk01 systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Sep 02 14:44:47 lh-mhk01 systemd[1]: networking.service: Failed with result 'exit-code'.
Sep 02 14:44:47 lh-mhk01 systemd[1]: Failed to start Raise network interfaces.

注意这条线

Sep 02 14:44:47 lh-mhk01 ifup[509]: /bin/sh: 1: route: not found

route解决办法:安装包含该命令的包

sudo apt install net-tools

重启后 IPv6 地址配置正确

相关内容