Ubuntu 16.04サーバーから22.04にアップグレードする前に、トラブルシューティングのためにオンボードネットワークカードを無効にする必要がありました。重要なのは、NIC全体が、自分のデバイス上でネットワークコントローラとして表示されなくなることです。
基本的に私が望むのは、私のローカルループバックデバイスだけが127.0.0.1で動作し続け、他のすべてのネットワークコントローラを削除することです。
私が試したこと:
BIOSを試しましたが、設定可能なネットワークコントローラがありません(Dellデスクトップ)。
インターフェイスを設定する代わりに「手動」に設定しようとしましたが、うまくいきません
/etc/network/interfaces
でした。「udev」と「systemd」に関連する提案されたソリューションを試しました。ネットワークインターフェイスを永久に無効にする方法は?しかし、それはいつも何とか戻ってきます。
そのクソの仕事はいつも戻ってくるのに…
答え1
まあ、私は自分で解決策を見つけ、それが私が望むものを正確に実行しているようです。
オンボードのNICとWi-Fiコントローラを搭載したシステムのUbuntu 16.04で動作することがわかりますが、他のディストリビューションについてはテストしていませんが、ドキュメントを簡単に見ると他のディストリビューションでも機能する必要があることがわかります。しかし、私の言葉をそのまま受け入れないでください。確認のために文書を直接調査してください。
このソリューションを使用した理由は、必要なトラブルシューティングを完了すると簡単に元に戻すことができるからです。デフォルトでは、システム内のすべてのネットワークコントローラを削除し、ループバックデバイスを127.0.0.1で動作させ続けたいと思います。
すべてのネットワークドライバを完全に無効にします。
Ubuntu 16.04サーバーでネットワークインターフェイスを無効にするには、次のonelinerを使用してネットワークモジュールをブラックリストに追加できます。これにより、カーネルがモジュールをロードするのを防ぎ、インターフェイスを効果的に無効にできます。以下は、オネライナーとそのステップの分析です。
コマンドラインオンラインライナー
modules=$(lspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}'); for module in $(echo "$modules" | tr ' ' '\n'); do if ! grep -q -w "blacklist $module" /etc/modprobe.d/blacklist.conf; then echo "blacklist $module" | tee -a /etc/modprobe.d/blacklist.conf; else echo "Already blacklisted: $module. Skipping."; fi; done; update-initramfs -u && echo Done! Reboot your system to finalize the changes.
崩れる
oneliner は、シェル構成を使用して結合された複数のコマンドで構成されます。
modules=$(lspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}')
modules
:関連するネットワークモジュールのリストを取得して変数に保存するコマンドです。for module in $(echo "$modules" | tr ' ' '\n'); do ...; done
modules
:変数の各モジュールを繰り返すループです。if ! grep -q -w "blacklist $module" /etc/modprobe.d/blacklist.conf; then ...; else ...; fi
: モジュールが設定ファイルにブラックリストに登録されていることを確認する if-else 構造です。echo "blacklist $module" | tee -a /etc/modprobe.d/blacklist.conf
:モジュールがブラックリストに登録されていない場合、このコマンドは新しいブラックリストエントリを設定ファイルに追加します。echo "Already blacklisted: $module. Skipping."
:モジュールがブラックリストに追加されている場合、このコマンドはそれを示すメッセージを印刷します。update-initramfs -u && echo
:すべてのモジュールが処理された後、このコマンドはinitramfsを更新し、再起動に関するメッセージを表示します。
手動代替
何らかの理由でオネライナーが機能しない場合、または何が起こっているのかを注意深く観察したい場合は、次の手動ステップを実行できます。
lspci -k
すべてのデバイスとそのカーネルモジュールを一覧表示するには、実行してください。次のコマンドを実行して、ネットワークコントローラに関連するモジュールを識別しますlspci -k | grep -iE 'network|ethernet|wi-fi|bluetooth|wireless|lan|wlan' --after=3 | grep modules | awk '{print $3}'
。- お気に入りのテキストエディタで開きます
/etc/modprobe.d/blacklist.conf
。sudo nano /etc/modprobe.d/blacklist.conf
- ブラックリストに追加するモジュールごとに、ファイルの末尾に新しい行を追加し、
blacklist MODULE_NAME
それをMODULE_NAME
実際のモジュール名に置き換えます。 - ファイルを保存して閉じます。
- を実行してinitramfsを更新します
sudo update-initramfs -u
。 - システムを再起動してください
sudo reboot
。
この状態を復元するには、作成した新しく作成された「ブラックリスト」項目にコメントを付けるか削除し、手順5と6を実行します。
これが同じ解決策を探している人に役立つことを願っています。