Ubuntu 16.04-「ネットワークインターフェイスを上げる」と言ってシステムブートが待機する


42

DHCPで構成されたeth0と静的IPアドレスで構成されたeth1の2つのインターフェイスを持つUbuntu 16.04システムがあります。

/ etc / network / interfacesファイルには次の構成があります

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The Secondary network interface
auto eth1
iface eth1 inet static
address 10.10.1.10
netmask 255.255.255.0
dns-nameservers 74.82.42.42 4.2.2.2

## Virtual Interfaces for virtual hosts
auto eth1:11
iface eth1:11 inet static
address 10.10.1.11
netmask 255.255.255.0

auto eth1:12
iface eth1:12 inet static
address 10.10.1.12
netmask 255.255.255.0

auto eth1:13
iface eth1:13 inet static
address 10.10.1.13
netmask 255.255.255.0

問題は、eth0リンクでDHCPサーバーが使用できない場合、またはeth0リンクがダウンしている場合、システムが5分間ハングし、ブートプロセスが大幅に遅くなることです。

violet@ubuntu-xenial:~$ systemd-analyze blame
      5min 241ms networking.service
          1.529s nmbd.service
          1.524s winbind.service

/etc/systemd/system/network-online.target.wants/networking.serviceファイルの時間を短縮してみました。これにより、ネットワークサービスを待たずにシステムの起動が速くなりますが、eth1で仮想インターフェイスをロードできません。

eth0インターフェースで完全なネットワーク設定なしでシステムを起動し、それでもeth1ですべての静的ネットワーク設定をロードするよりクリーンな方法はありますか?



回答:


51

クライアントがDHCPを時間内に取得できないことについて、誰かが妄想的だったようです。

このファイル/etc/dhcp/dhclient.confを編集してtimeout、次のような妥当な値に設定します

timeout 15

デフォルト値の300秒は大きすぎます。推奨される置換値15がテストされ、正常に機能します。


3
ありがとうございました。現時点でのDNS / DHCPの実験と5分間の待機は私を殺していました。
アシュリーヒューズ

1
Ubuntuには、いくつかの奇妙なデフォルト設定があります。おもしろかったです...
ウィリアムTフログガード

うわー、これはさらなる設定で本当に役立ちます。
デビッドTabernero M.

1
これはUbuntu 18では機能しませんが、この答えは機能します。
xinthose

これらすべての年の後、それはまだ私にとって有効です:)
Wajih

27

ので、/etc/network/interfacesこれを変更します:

# The primary network interface
auto eth0
iface eth0 inet dhcp

これに:

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

これは、起動eth0時に起動するのではなく、カーネルがインターフェイスからホットプラグイベントを検出したとき(つまり、ケーブルを接続したとき)にインターフェイスを起動します。


1
このアプローチは物理ハードウェアではうまく機能しますが、仮想化環境では失敗します(vmwareとvirtualboxを試しました)。仮想化カーネルが適切なイベントを生成しないようです。
-dtoubelis

このアプローチは、以前は1Gしか内蔵されていなかったボックスに新しい10Gネットワ​​ークアダプターをインストールした後の問題も修正しました。Ubuntuはカードを表示してドライバーをロードできましたが、ブートはRaise Network Interfacesを待って停止し続けました。eth0からデバイス名を調整すると、それに応じて修正されました。
ジョセフJaramillo

2

で参照したように、ネットワークインターフェイスを上げるためのタイムアウト値を変更できます(実行している場合systemd)。

ターミナルウィンドウを開き、次のコマンドを入力します。

sudo nano /etc/systemd/system/network-online.target.wants/networking.service

次に、行TimeoutStartSec=5minを選択した値に変更します。押して、ファイル保存Ctrl+をo当時とCtrl+ x

最後に、デーモンを再起動します。

sudo systemctl daemon-reload

4
一般に、sudoを使用してGUIプログラムを開始することはお勧めできません...動作が少し改善されたツールを使用するように、回答を変更しました。
チャールズグリーン

これは私にとって正しい答えです。コンピューターが起動時に常にネットワークに接続されているとは限りません。Ubuntuがそれを理解するまで5分間待ちたくありません。
イッツ

2
5分間のタイムアウトが「良いアイデア」だと思ったバカが誰であるかを知りたい。
クレイトンデュークス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.