/etc/networking/interfaces
「予測可能なネットワークインターフェイス名」を使用する場合、どのようにリセットしますか?
15.10より前のバージョンのUbuntuでは、次のようなネットワークアダプター名を使用しています。
eth0
eth1
eth2
ネットワークカードを交換したり、VMを新しいハイパーバイザーに移動したりすると、Linuxはインターフェイス番号を増加させます。削除/etc/udev/rules.d/70-peristent-net.rules
するとLinuxが再利用されeth0
ます。
Ubuntu 15.10以降では、「予測可能なネットワークインターフェイス名」を使用します。ネットワークアダプター名は、MACアドレスから取得されます。
ens3
ens32
ens192
vmを移行する場合/etc/network/interfaces
、古い存在しないネットワークアダプターがまだ参照されているため、ネットワークは開始されません。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32
iface ens32 inet dhcp
pre-up sleep 2
/ etc / network / interfacesファイルをリセットする最良の方法は何ですか?
私は、packerを使用してchef / bentoゴールデンイメージに基づいて自動ゴールデンイメージを作成しているため、vmをシャットダウンして新しいハイパーバイザーに移行する前に、このアクションを実行する必要があります。
移行後の次の起動時にファイルが自動的に再生成されないため、/ etc / network / interfacesを削除しても機能しないことがわかりました。
grubファイルを編集して、「eth0」命名規則に戻しました。/ etc / network / interfacesは古い名前(eth0)を参照しますが、vmはipを取得せず、再起動すると、vmは新しい命名規則を使用します。またbiosdevname=0
、grub configに永続的に残ることが保証できない限り、systemdが常に優先されることもわかりました。これを永続的に適用する方法がわからない
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 bios.devname=0"
可能であれば、ゴールデンイメージをできるだけクリーンに保つため、クラウドの初期化や起動後のスクリプトは使用しません。
確かにこれは、クラウドプロバイダー(Azure、AWS、RackSpace、Openstack)がVMをインポートするときにすでに解決している問題です。私は、予測可能なネットワークインターフェイス名を使用してvmを移行しようとする最初の人物になることはできません。
VMをシャットダウンして移行する前に、これらのコマンドを実行してみました
apt-get remove biosdevname -y;
ln -s /dev/null /etc/systemd/network/99-default.link;
私はvmを移行するときにそれを見つけ/etc/network/interfaces
、ip address
それでも参照しますens32