GNU/Linux >> Linux の 問題 >  >> Debian

Debianの回避策838871:ブートプロセスをブロックせずにDHCPネットワークを構成しますか?

Debianバグ#838871の回避策はありますか?

問題:次のプロパティを持つDebianのネットワーク構成が必要です:

  • ケーブルが接続されている場合、ネットワークインターフェイスを自動的にifupします
  • 起動時にケーブルが接続されていない場合、長時間ブロックせずに起動します
  • initシステムを切り替えない

これを行う標準的な方法は、/etc/network/interfacesにある次のスニペットです。 :

allow-hotplug eth0
iface eth0 inet dhcp

ただし、これにより、リンクされたバグレポートに記載されている問題が発生します。ネットワークケーブルが接続されていない場合、ブートプロセスが1分以上ブロックされ、次のメッセージが表示されます。

configuring network interfaces... ifup: waiting for lock on /run/network/ifstate.eth0

この質問で与えられた回避策は、allow-hotplugを変更しているようです auto

auto eth0
iface eth0 inet dhcp

これにより、ブートブロックメッセージが事実上消えますが、ログインプロンプトがtty1に表示される直前にシステムがブロックするようになりました。今回、dhclientは、接続されていないeth0でdhcp応答を取得しようとし、タイムアウトの試行を数回待機するため、ブロックしています。ログインプロンプトは、dhclientがタイムアウトした後にのみ表示されます。

グラフィカルDEを使用しているユーザーの場合、これは問題ではない可能性があります。tty1にログインする必要がなく、代わりにDEが起動し、dhclientメッセージが表示されないためです。

別の回避策は、おそらくnetwork-managerを使用することです。 。理想的には、networkmanagerを使用したくないのですが、最後の手段として、それを試しました。ただし、Debianバスターでは、ネットワークマネージャーの依存関係チェーンがsysvinit-coreと競合します 、これは私のinitシステムです。

私の頭に浮かぶ最後の選択肢は、interfaces(5)でeth0を構成しないことです。これにより、すべてのブートブロックがなくなりますが、手動でifup eth0する必要があります。 イーサネットケーブルを接続した後。

より良いアイデアはありますか?

更新:@sourcejediからの引用に対処するために、DebianネットワークのDebianドキュメントで「カーネルがインターフェースからホットプラグイベントを検出したときにインターフェースを開始する」に「allow-hotplug」が指定されています。関連する質問:/ etc / network / interfaces構文の詳細な説明はありますか?インターフェースからのホットプラグイベントとは何ですか?

承認された回答:

network-managerの前 、「自動的にifupするためのよく知られた方法 ケーブルが接続されているときのネットワークインターフェイス」はifplugdでした 。 (元の作者に注意してください:-P)。 ifplugd Debianでも引き続き利用できます。最近の経験はありません。

まず、auto eth0を削除します またはallow hotplug eth0 /etc/network/interfacesからの行 。 iface eth0 inet dhcpという行が引き続き必要です。 。 (この行は、ネットワークインターフェイスの名前、およびipv6サポートを追加するかどうかなどによって異なります)。

ifplugdを構成するには インターフェイスを表示するには、/etc/default/ifplugdを編集します INTERFACES=を設定するには ネットワークインターフェイスの名前を含めます。または、値autoを使用できることを示しています。 。 autoがどれだけうまくいくかわかりません 最近のシステムで動作します:-)。

関連:ネットワークが切断される前にスリープ状態になるときにタイムアウトを設定しますか?

https://manpages.debian.org/buster/ifplugd/ifplugd.conf.5.en.html

この機能は、allow-hotplugによって提供されることはありませんでした :

リンク状態のチェックは常に行われているわけではなく、いずれの場合も起動時にのみ行われることに注意してください。 起動時にケーブルが接続されておらず、後でケーブルを接続した場合はサポートされませんでした。 —メッセージ#20

これと矛盾する情報源は間違っています。この機能が必要な場合は、「netlink」イベントを待機するデーモンを実行する必要があります。[*] Debian ifupdown パッケージにはデーモンは含まれていません。 allow-hotplug 必要なnetlinkイベントを読み取らないudevデーモンに依存しています。

udevデーモンは、udevの「hotplug」イベント(「uevent」)のみを読み取ります。イーサネットデバイスがリンクステータスの変更を検出した場合、「uevent」は発生しません。これは、udevadm monitorを使用して確認できます 。

Linuxカーネルの開発者は、このための「uevent」を提供しないことを意図的に決定しました。参照:Re:Q:netdev:ネットワークイベントでkobjectueventを生成します。

[*]衒学者:技術的にはifplugd リンクステータスを定期的にポーリングすることで機能します。したがって、必ずしも「netlink」イベントに依存するわけではありません。この違いは、netplugによって指摘されています。 、実行 「netlink」イベントを使用します。 netplug ifplugdと同じ機能がすべて備わっているわけではありません 。


Debian
  1. DebianLinuxで静的IPアドレスを設定する方法

  2. Debian –特定のプロセスを隠す方法は?

  3. Debian6の「Squeeze」にSquidをインストールする

  1. Linuxの基本-DebianLinuxでの静的IPとネットワーク構成

  2. RHEL / CentOSのアップグレード後に、eth0のネットワーク構成がDHCPに変更されました

  3. DHCP 構成ファイル /etc/dhcp/dhcpd.conf の説明

  1. Debian Linux上のアンマネージドネットワーク–ソリューション

  2. Debian / Ubuntu/LinuxMintでネットワークを構成する

  3. Debian – GUIを使用せずにDebianをテキストモードで起動する方法は?