
私は Ubuntu 16.04 システムを使用しており、DHCP で設定された eth0 と静的 IP アドレスで設定された eth1 の 2 つのインターフェースを持っています。
/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
問題は、DHCP サーバーが eth0 リンクで利用できない場合、または 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 ですべての静的ネットワーク構成をロードするよりクリーンな方法はありますか?
答え1
誰かが、クライアントが時間内に DHCP を取得できないのではないかと心配していたようです。
このファイルを編集して/etc/dhcp/dhclient.conf
、timeout
適切な値に設定します。
timeout 15
デフォルト値の 300 秒は高すぎます。推奨される代替値 15 はテスト済みで、問題なく動作します。
答え2
したがって、 で/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
これにより、ブート時にインターフェイスを起動するのではなく、カーネルがインターフェイスからのホットプラグ イベントを検出したとき (つまり、ケーブルを接続したとき) にインターフェイスを起動します。
答え3
参照:ネットワーク インターフェイスを上げるためのタイムアウト値を変更できます ( を実行している場合systemd
)。
ターミナル ウィンドウを開き、次のコマンドを入力します。
sudo nano /etc/systemd/system/network-online.target.wants/networking.service
次に、その行TimeoutStartSec=5min
を選択した値に変更します。Ctrl+を押してoからCtrl+ を押してファイルを保存しますx。
最後に、デーモンを再起動します。
sudo systemctl daemon-reload