Debian を使って dhcp 経由で ipv4 と ipv6 インターフェイスを自動設定する正しい方法は何ですか?

Debian を使って dhcp 経由で ipv4 と ipv6 インターフェイスを自動設定する正しい方法は何ですか?

私はdebian 9stretch(現在の安定版)を実行しているホームブルーPCのようなルーターを持っています。

数ヶ月間、私はWAN ipv4とWAN ipv6を次のように自動的に設定するように管理しました。

# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp
iface enp1s0.832 inet6 manual

inet6部分は2つのスクリプトを使用します。

  • IPV6プレフィックス委任モードでISC dhcpクライアントを起動するための最初の/etc/network/if-up.d/99-ipv6スクリプト
  • 2番目の/etc/dhcp/dhclient-exit-hooks.d/dhclient-ipv6スクリプトは、IPV6 "/ 64"サブネットをLANインターフェイスに割り当てるために使用されます。

これは数ヶ月間うまくいきました。再起動後、システムはすぐに起動して実行され、IPV4とIPV6の両方が正しく機能しました。

パッケージを定期的に更新した後、ルータWANインターフェイスを設定すると、debian systemd "networking.service"が起動時にハングアップし始めました。 5分間停止し、デフォルトの「network.service」タイムアウトが原因で終了します。その結果、WAN インターフェイスは UP 状態ですが、IPV4 および IPV6-PD の dhclient インスタンスも終了します。 DHCP クライアントが実行されていない場合、ルータは DCHP リースを更新しないため、これは非常に悪いです。

debiannetworking.service は IPV6 部分を構成しました。 IPV6 部分について次のように説明しようとすると、次のようになります。

# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp

システムは正常に再起動しますが、IPV6は使用されません。

また、次のように「キャッシュ」方式を試してみました。

auto enp1s0.832
iface enp1s0.832 inet dhcp
iface enp1s0.832 inet6 dhcp
  request_prefix 1
  accept_ra 2

上記のように、Debian "networking.service"はIPV4およびIPV6用のISC DHCPクライアントインスタンスを起動します。 https://wiki.debian.org/IPv6PrefixDelegation

ただし、この設定を使用すると、debian systemdnetworking.serviceはまだ5分間停止します。

だから私は非常に汚れた最後の手段を使用しなければなりませんでした。

auto enp1s0.832
iface enp1s0.832 inet dhcp
  up /sbin/dhclient -6 -P -pf /run/dhclient6.enp1s0.832.pid -lf /var/lib/dhcp/dhclient6.enp1s0.832.leases -df /var/lib/dhcp/dhclient.enp1s0.832.leases enp1s0.832&

これにより、debiannetworking.serviceがタイムアウトせず、IPV4およびIPV6 dhclientインスタンスの両方が正しく実行されます。

起動時に中断せずに Debian に IPV4 と IPV6 を自動的に設定させるためのきちんとした方法は何ですか?

答え1

正しい方法は、/etc/network/interfacesファイル「ネイティブipv6機能」を使用することです。 IPV6管理のためのIfupdownのDHCPは長年にわたって改善されました。あまり知られていませんが…

詳細は、ISP が IPV6 アドレスを提供することを決定した方法によって異なります。

ほとんどの場合、ISPはDHCPV6-PD(プレフィックス委任)を使用します。この場合、/etc/network/interfacesは次のようになります(debianstretchで):

auto wanif
iface wanif inet dhcp
iface wanif inet6 dhcp
  request_prefix 1
  accept_ra 2

DHCPV6-PDにはrequest_prefixが必要です。それ以外の場合、ifupdown によって開始された DHCP クライアントは単一のアドレスを要求します。 ISPでは正しく機能しない可能性があります。私の場合、フランスのOrangeは間違ったDCHP v6要求を完全に無視し、ISP DHCPサーバーは拒否メッセージで応答しませんでした。吐き気...

Debian が管理していない部分は、LAN 上の IPV6 アドレス割り当てです。これを行うには、ここで説明されているようにカスタムスクリプトを使用する必要があります。https://wiki.debian.org/IPv6PrefixDelegation

ただし、注意事項があります。私のDHCPv6フックスクリプトのためにsystemdサービスが連携しました。 LANインターフェイスにIPV6アドレスを公開するためにradvd(ルーター広告)を使用するため、WAN IPV6プレフィックスが変更された場合はradvdサービスを再起動する必要があります。これを達成するための一般的なコマンドは次のとおりです。

systemctl restart radvd

ただし、これにより起動時にシステムが連動しました。インターフェイスの初期設定は「networking.services」というシステムサービスによって行われます(このサービスは主にifup --allを呼び出します)。

「networking.service」との連携を避けるには、以下を使用する必要があります。

systemctl --no-block restart radvd

バラよりhttps://www.freedesktop.org/software/systemd/man/systemctl.htmlもっと学ぶ。

関連情報