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
コマンドip addr
が示すように、静的IPv4構成とIPv6のDHCPオプション(eth0上)は正常に機能します。
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アドレスが動的に生成されたことも示しています。
しかし、コマンドip addr add fd01::10/64 dev eth1
を使用して静的IPv6アドレスを設定すると機能しますが、これはこの問題に対する適切で永続的な解決策ではありません。
コマンド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ネットワークマネージャーが無効になっていることを意味すると思います。
/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.
静的IPv6アドレスを使用するようにeth0を構成すると、eth0でもエラーが発生します。 this チュートリアルに従って静的IPv6アドレスを構成すると、このエラーメッセージが見つかりました。
最初は考えていなかったことの1つは、問題がホストオペレーティングシステムに関連している可能性があることです。そのため、私のホストシステムがカスタマイズされたカーネルを備えたGentooであるとは書いていません。 まったく同じ設定を使用していません。私の通常のホスト(Gentoo)はDebian 10を使用しており、私のArchLinuxテストマシンはDebian 11を使用しています。Debian11を私のGentooホストで使用すると、問題なく動作します。しかし、Debian 10で新しいコンテナーを作成した場合も、IP構成は期待どおりに機能します。
私は今のところ問題をまったく解決していませんが、別のホスト(今回はArchLinux)で同じ設定を使用したテストはうまくいきました。構成は実際には同じですが、ホストシステムが異なるため、私の問題はホストシステムの構成エラーに関連していると思います(たとえば、別のカーネル機能を有効にする必要があります)。
最後に、/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
静的エントリが最初に設定されている場合、すべてが正常に動作します。
私はあなたに完全な答えを与えることができるとは思わない、ただ調査するための何か...
これはあなたの設定が無視されているように私には見えません、それは何かによって上書きされているようです。 FDxx::
で始まるIPv6アドレスはローカルアドレスIPです 。通常、未構成のインターフェースには、リンクローカルアドレス(FE80::
で始まる)とその他のアドレスがあります。しかし、システムはこれらを表示していません。 FDxx::
アドレスはランダムに表示されるだけではないため、somethingがこれらを構成しています。
以前、Debianベースのディストリビューションに複数のネットワークマネージャーが同梱されるという問題がありました。特に Beagle Bone Black が同梱されているDebianのフォークでは、通常のDebianに同梱されるDHCPクライアントの他に connman というパッケージがインストールされていました。
システムをチェックして、IPv6のネットワーク構成を他に上書きしていないかどうかを確認します。