起動時にネットワークインターフェイスをどのように再マッピングしますか?

起動時にネットワークインターフェイスをどのように再マッピングしますか?

わかりましたが、どのようなハードウェア障害にも備えて移植可能なディストリビューションを作成しようとしていました。

私はDebianディストリビューションを作成(または復元)しています。マルチベルト(またはマイバックアップから)結果ディスクは、次のような新しい(ほとんど互換性のある)ハードウェアから起動可能である必要があります。VirtualBox マシン

私のように以前に質問しました、「リムーバブルディストリビューション」に必要ないくつかの点の1つは、ネットワークインターフェイスの名前を処理することです。

たとえば、実際のシステムでは、最初のイーサネットデバイスの名前は、enp2s0VirtualBoxでは名前ですenp0s3/etc/network/interfaces起動時にファイルを作成するにはどうすればよいですか?

ネットワークインタフェース名を再マッピングし(おそらくシンボリックリンクを介して)、基本ハードウェアの実際のネットワークインタフェース名を知らずに各アプリケーションにその名前(役割名)を使用させるより一般的な方法はありますか?

答え1

この問題を解決する方法はいくつかあります。

最もおなじみの方法は、おそらく起動オプションを使用するか、net.ifnames=0上書きを使用するか、/lib/systemd/network/99-default.link実際にln -s /dev/null /etc/systemd/network/99-default.link新しいスタイル名を実装するudevルールファイルをマスクして、新しいネットワークインターフェイスの命名スキームを無効にすることですln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rulesDebian Wiki古典的な命名スキームを復元するさまざまな方法に関する追加情報。それ/etc/network/interfacesからeth0

最も柔軟なアプローチは、おそらく静的使用を中止し/etc/network/interfacesてNetworkManagerに切り替えることです。追加の設定がない場合は、自動的にデフォルトでアクティブリンクを持つネットワークインターフェイスでDHCPを使用します。これは、複数のNICがありますが、実際には1つだけが接続されている場合でも、状況を自動的に処理します(必ずしも最初のものではありません)。

ip link showあるいは、出力(またはリンク/sys/class/network)を読み、それに/etc/network/interfaces合わせて書き換える(または実際のネットワーク構成ファイルが何であれ)、カスタムスクリプトを作成して必要な操作を実行できます。その後、スクリプトをシステムサービスとして使用してWants=network-pre.target追加できます。これにより、すべてのモジュールがロードされた後にネットワーク構成が開始される前に、初期システム設定の一部としてスクリプトを実行できます。Before=network-pre.targetAfter=module-init-tools.serviceDefaultDependencies=no

関連情報