現在の最新のLinuxディストリビューション NetworkManagerを使用して、ネットワーク接続を作成および管理します。つまり、システム管理者として理解する必要があります。一連の記事で、これまでに学んだことと、NetworkManagerが過去のオプションよりも優れていると思う理由を共有します。
Red Hatは、ネットワーク構成と接続、特にワイヤレス接続を簡素化および自動化するために、2004年にNetworkManagerを導入しました。その目的は、ユーザーが新しいワイヤレスネットワークを使用する前に手動で構成する作業からユーザーを解放することでした。 NetworkManagerは、ワイヤレス接続にネットワーク接続ファイルを使用しますが、インターフェース構成ファイルなしで有線ネットワーク接続を管理できます。
この記事では、NetworkManagerとは何か、およびNetworkManagerを使用してLinuxホストのネットワーク接続とデバイスを表示する方法を確認します。その過程でいくつかの問題も解決します。
NetworkManagerが置き換えるもの
NetworkManagerは、以前のネットワーク管理ツールに代わるものです。元のインターフェース構成コマンド、ifconfig
、およびそのインターフェイス構成ファイルは廃止されました。これはifconfig
で確認できます ちょうどそれを述べているメモを含むmanページ。
ip
コマンドはifconfig
を置き換えます コマンドを実行し、基本的に同じタスクを実行します。両方のコマンドはしばらくの間共存しており、システム管理者はどちらか一方を使用できます。これにより、スクリプトはifconfig
に依存し続けます。 機能的。そのマニュアルページにはまだそれが示されていませんが、ifconfig
コマンドは廃止され、NetworkManagerは実際に廃止しました。
NetworkManagerコマンドを使用するのが最も理にかなっているので、これらのスクリプトを書き直すときが来ました。
NetworkManagerの仕組み
NetworkManagerはsystemdサービスとして実行され、デフォルトで有効になっています。 NetworkManagerはD-Busと連携して、Linuxコンピューターに接続されているネットワークインターフェイスを検出および構成します。このネットワークインターフェイスのプラグアンドプレイ管理により、ユーザーは有線と無線の両方の新しいネットワークに簡単に接続できます。 Linuxの起動中に以前にインストールされたネットワークインターフェイスが検出されると、システムがすでに稼働している後に接続されたデバイスとまったく同じように扱われます。すべてのデバイスをすべてのインスタンスでプラグアンドプレイとして扱うと、両方の状況に対処するコードベースが1つしかないため、オペレーティングシステムでそれらのデバイスを簡単に処理できます。
udevデーモンは、システムにインストールされている各ネットワークインターフェイスカード(NIC)のエントリをネットワークルールファイルに作成します。 D-Busは、新しいネットワークデバイス(有線または無線)の存在をNetworkManagerに通知します。次に、NetworkManagerはD-Busのトラフィックをリッスンし、この新しいデバイスの設定を作成して応答します。このような構成は、デフォルトではRAMにのみ保存され、永続的ではありません。コンピュータを起動するたびに作成する必要があります。
NetworkManagerは、D-Busからの情報を使用して各NICを初期化します。最初に、より永続的な静的構成を提供する構成ファイルを探します。新しいデバイスが通知されると、NetworkManagerは古いネットワークインターフェース設定ファイル(ifcfg-*
)の存在を確認します。 )/etc/sysconfig/network-scripts
内 。 ifcfg-rhプラグインを使用すると、これらのレガシーファイルを使用して下位互換性を確保できます。
次に、NetworkManagerは、/etc/NetworkManager/system-connections
にある独自のインターフェース接続ファイルを探します。 ディレクトリ。 Fedoraを含むほとんどのディストリビューションは、ネットワーク接続ファイルを/etc/NetworkManager/system-connections
に保持しています。 ディレクトリ、ネットワーク名をファイル名として使用します。
たとえば、私のSystem76 OryxProラップトップは元々POP!_OS
を使用していました 。これを現在リリース35のFedoraに置き換えました。これを使用して行った各ワイヤレス接続には、/etc/NetworkManager/system-connections
にファイルがあります。 。これらは、各ネットワークのサービスセット識別子(SSID)とワイヤレスパスワードの記録を維持します。ワイヤレスルーターの動的ホスト構成プロトコル(DHCP)サーバーは、これらのワイヤレス接続の残りのネットワーク構成データを提供します。セキュリティ上の理由から、これらのファイルにはパスワードが含まれているため、システムアカウントファイルの/etc/passwd
と同様に、rootユーザーのみが読み取り/書き込みを行うことができます。 および/etc/shadow
。
/etc/NetworkManager/system-connections directory
そのラップトップには、有線ネットワークと接続した各ワイヤレスネットワークのファイルが含まれていました。これらのファイルの構造は、古いifcfg
とは異なります。 ファイルですが、ASCIIプレーンテキスト形式であり、読みやすく、簡単に理解できます。
このプロセスはシーケンスに依存します。見つかった最初の構成ファイルのセットが使用されます。設定ファイルが見つからない場合、NetworkManagerはDHCPサーバーからのデータを使用して設定を生成します。インターフェイス設定ファイルが存在しない場合、新しいデバイスを接続するか、新しいワイヤレスネットワークに接続すると、udevはNetworkManagerに新しいデバイスまたはワイヤレス接続を通知します。リリース28までのFedoraでは、NetworkManagerは新しいインターフェース構成ファイルを作成します。 Fedora 29以降では、NetworkManagerは接続のみを作成し、インターフェース構成ファイルは作成しません。
構成ファイルまたはDHCPサーバーが見つからない場合、ネットワーク接続はできません。
インターフェース構成の表示
NetworkManagerのコマンドラインインターフェイスプログラムであるnmcliは、ホストにインストールされているネットワークインターフェイスハードウェアの現在の状態と、現在アクティブな接続を判別するためのいくつかのオプションを提供します。 nmcliプログラムは、グラフィカルユーザーインターフェイス(GUI)を使用しているかどうかに関係なく、任意のホスト上のネットワークを管理できるため、セキュアシェル(SSH)接続を介してリモートホストを管理することもできます。有線接続と無線接続の両方で機能します。
nmcliツールを使用するためのいくつかの基本的な情報から始めます。ルーターとして設定したFedoraシステムを使用しています。これは、複数のネットワークインターフェイスを使用した例の方が、単一のインターフェイスのみを使用した単純なワークステーションホストよりも興味深いためです。
最も簡単なコマンドnmcli
から始めます オプションなし。この単純なコマンドは、現在は廃止されているifconfig
と同様の情報を表示します。 NICの名前とモデル、メディアアクセス制御(MAC)アドレスと(インターネットプロトコル)IPアドレス、およびデフォルトゲートウェイとして構成されているNICを含むコマンド。また、各インターフェイスのDNS構成も表示されます。
nmcliコマンドには管理者権限が必要です。ほとんどのディストリビューションでは、sudo
を使用することを推奨しています しかし、私はroot
に切り替えるだけです ユーザー。
$ su-
#nmcli
enp4s0:enp4s0に接続
"Realtek RTL8111 / 8168/8411"
イーサネット(r8169)、84:16:F9:04: 44:03、hw、mtu 1500
ip4 default、ip6 default
inet4 45.20.209.41 / 29
route4 0.0.0.0/0
route4 45.20.209.40/29
inet6 2600:1700:7c0:860:8616:f9ff:fe04:4403/64
inet6 fe80 ::8616:f9ff:fe04:4403/64
route6 2600:1700:7c0:860 ::/ 64
route6 ::/ 0
enp1s0:enp1s0に接続
「RealtekRTL8111 / 8168/8411」
イーサネット(r8169)、84:16:F9 :03:E9:89、hw、mtu 1500
inet4 192.168.10.1/24
route4 192.168.10.0/24
inet6 fe80 ::8616:f9ff:fe03:e989 / 64
route6 fe80 ::/ 64
enp2s0:enp2s0に接続
「RealtekRTL8111 / 8168/8411」
イーサネット(r8169)、84:16:F9:03: FD:85、hw、mtu 1500
inet4 192.168.0.254/24
route4 192.168.0.0/24
inet 6 fe80 ::8616:f9ff:fe03:fd85 / 64
route6 fe80 ::/ 64
eno1:利用不可
「IntelI219-V」
イーサネット( e1000e)、04:D9:F5:1C:D5:C5、hw、mtu 1500
lo:unmanaged
"lo"
ループバック(不明)、00:00: 00:00:00:00、sw、mtu 65536
DNS構成:
サーバー:192.168.0.52 8.8.8.8 8.8.4.4
インターフェース:enp4s0
サーバー:192.168.0.52 8.8.8.8
インターフェース:enp1s0
サーバー:192.168.0.52 8.8.8.8
インターフェース:enp2s0
コマンドnmcli device show
を使用します 既知のデバイスとnmcli connection show
に関する完全な情報を取得するには アクティブな接続プロファイルの概要を取得します。使用法の詳細については、nmcli(1)およびnmcli-examples(7)のマニュアルページを参照してください。ヘルプコマンドnmcli -h
を発行することもできます 、基本的なトップレベルのnmcli
を表示するrootユーザーとして コマンド:
#nmcli -h
使用法:nmcli[オプション]オブジェクト{コマンド|ヘルプ}
オプション
-a、--ask不足しているパラメータを尋ねる
-c、--colors auto | yes | no -e、--escape yes |no値の列区切り文字をエスケープします
-f、--fields| all |common出力するフィールドを指定します
-g、--get-値|all|共通のショートカット-mtabular-t -f
-h、--helpこのヘルプを印刷
-m、--mode tabular|multiline出力モード
-o、--overview概要モード
-p、--prettyかなり出力
-s、--show-secretsがパスワード
-t、--terse簡潔な出力を表示することができ
-v、--version show program version
-w、--wait終了操作を待機するタイムアウトを設定します
OBJECT
g [ener NetworkManagerの一般的なステータスと操作
n[etworking]全体的なネットワーク制御
r[adio]NetworkManager無線スイッチ
接続
NetworkManagerの接続
デバイスa[gent]NetworkManagerシークレットエージェントまたはpolkitエージェント
m[onitor]NetworkManagerの変更を監視する
オブジェクトは、最初の文字までスペルアウトまたは省略できることに注意してください。これらのオブジェクトはすべて一意であるため、単一のオブジェクトを指定するために必要なのは最初の文字だけです。
nmcli g
をお試しください 一般的なステータスを表示します。
#nmcli g
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
その出力はあまり表示されません。この場合、ホストにはWiFiハードウェアがないことも知っているので、これは誤解を招く結果です。 nmcli g
は使用しないでください そのためのコマンド。より良いオブジェクトコマンドはc
です [接続]とd
[evice]、これは私が最も頻繁に使用するものです。
#nmcli C
NAME UUID型装置
enp4s0 b325fd44-30b3-c744-3fc9-e154b78e8c82イーサネットenp4s0
enp1s0 c0ab6b8c-0eac-a1b4-1c47-efe4b2d1191fイーサネットenp1s0
enp2s0 8c6fd7b1-ab62-a383-5b96-46e083e04bb1イーサネットenp2s0
enp0s20f0u7 0f5427bb-f8b1-5d51-8f74-ac246b0b00c5イーサネット -
enp1s0 abf4c85b-57cc-4484-4fa9-b4a71689c359イーサネット -
#nmcli D
デバイスタイプ状態の接続
enp4s0イーサネット接続enp4s0
enp1s0イーサネット接続enp1s0
enp2s0イーサネット接続enp2s0
ENO1イーサネット利用できない -
loループバックアンマネージド-
ここには本当に興味深い情報がたくさんあります。 c
を使用した最後の2つのエントリに注意してください objectコマンドのデバイス列にエントリがありません。この結果は、それらがアクティブでないか存在しないか、1つ以上の構成エラーがあることを意味している可能性があります。
d
を使用して取得する追加情報 objectコマンドは、enp0s20f0u7デバイスも表示しません。また、c
を使用して表示されなかったデバイスeno1(マザーボードデバイス)も表示されます。 オブジェクトコマンド。
出力は次のようになりますが、デバイス名は異なり、NICが接続されているPCIバス上の特定の場所によって異なります。
#nmcli C
NAME UUID型デバイス
有線接続1 6e6f63b9-6d9e-3d13-a3cd-d54b4ca2c3d2イーサネットenp0s3
#nmcli D
デバイスタイプ状態CONNECTION
enp0s3イーサネット接続有線接続1
loループバックアンマネージド-
調査すべき異常がいくつかあるようです。まず、接続リストにあるデバイスenp0s20f0u7を知りたいです。 NetworkManagerはデバイスリストでこのデバイスを認識しないため、/etc/sysconfig/network-scripts
にネットワーク構成ファイルがある可能性があります そのようなハードウェアデバイスがホストに存在しない場合でも。そのディレクトリを確認し、インターフェイス構成ファイルを見つけて、内容を表示しました。
#ls -l <br /> total 20
-rw-r--r-- 1 root root 352 Jan 2 2021 ifcfg-eno1
-rw-r--r-- 1ルートルート419Jan5 2021 ifcfg-enp0s20f0u7
-rw-r--r-- 1 root root 381 Jan 11 2021 ifcfg-enp1s0
-rw-r--r-- 1 root root 507 Jul 27 2020 ifcfg-enp2s0
-rw-r--r-- 1 root root 453 Jul 27 2020 ifcfg-enp4s0
cat ifcfg-enp0s20f0u7
#ifcfgのインターフェイス構成ファイル-enp0s20f0u7
#これはUSBGbイーサネットドングルです
#このインターフェイスはワイヤレスルーター用です
#20210105現在正しい
TYPE ="Ethernet"
BOOTPROTO ="static"
NM_CONTROLLED ="yes"
DEFROUTE ="no"
NAME =enp0s20f0u7
UUID ="fa2117dd-6c7a-44e0-9c9d-9c662716a352"
ONBOOT ="yes"
HWADDR =8c:ae:4c:ff:8b:3a
IPADDR =192.168.10.1
PREFIX =24
DNS1 =192.168.0.52
DNS2 =8.8.8.8
このファイルを見た後、そのホストにインストールされているマザーボードNICが明らかに故障していたため、しばらくの間USBギガビットドングルを使用していたことを思い出しました。これは簡単な修正であり、後でPCIeマザーボードバスに新しいNICをインストールしたので、このインターフェイス構成ファイルを削除できました。ただし、削除しませんでした。 /root
に移動しました もう一度必要になった場合に備えて、ディレクトリ。
将来の自分または別のシステム管理者がこのファイルが存在する理由をある程度理解できるようにするために使用したコメントに注意してください。
2番目の異常は、enp1s0のエントリが2回表示される理由です。これは、NIC名が複数のインターフェース構成ファイルで指定されている場合にのみ発生する可能性があります。そこで、次の手順を試しましたが、確かに、enp1s0がifcfg-eno1
に誤って表示されます 構成ファイルとifcfg-enp1s0
ファイル。
#grep enp1s0 *
ifcfg-eno1:NAME =enp1s0
ifcfg-enp1s0:#enp1s0 /192.168.10.1のインターフェイス構成ファイル
ifcfg-enp1s0:NAME =enp1s0
#cat ifcfg-eno1
## eno1/192.168.10.1のインターフェース構成ファイル
##このインターフェースは無線ルーター用です
##20200727現在で正しい
TYPE ="Ethernet"
BOOTPROTO ="static"
NM_CONTROLLED ="yes"
DEFROUTE ="no"
NAME =enp1s0
ONBOOT ="yes"
HWADDR =04:d9:f5:1c:d5:c5
IPADDR =192.168.10.1
PREFIX =24
DNS1 =192.168.0.52
DNS2=8.8。 8.8
NAMEをNAME=eno1に変更し、NetworkManagerを再起動しました。 NetworkManagerを再起動するまで、インターフェイス設定ファイルの変更は有効になりません。デバイスと接続の結果は次のようになります。私はまだオンボードNICを使用していません。これは、ifcfg-eno1
から間違った名前を削除したのでおそらく問題ありません。 インターフェイス設定ファイル。そのルーターのダウンタイムが必要になります。
#systemctl restart NetworkManager
#nmcli d
DEVICE TYPE STATE CONNECTION
enp4s0 ethernet connected enp4s0 enp4s0 en p1s0 ethernet connected
enp1s0 ethernet connected /> enp1s 0 ENO1イーサネット利用できません -
LOループバック管理されていない -
#nmcli C
NAME UUID型デバイス
enp4s0 b325fd44-30b3-c744-3fc9-e154b78e8c82イーサネットenp4s0
enp1s0 c0ab6b8c-0eac-a1b4-1c47-efe4b2d1191f ethernet enp1s0
enp2s0 8c6fd7b1-ab62-a383-5b96-46e083e04bb1 ethernet enp2s0
eno1 85 abfもう1つのオプションは、アクティブな接続のみを表示することです。これはクリーンな結果が得られる優れたオプションですが、排他的に使用すると他の問題を隠すこともできます。
#nmcli接続ショー--active
NAME UUID型デバイス
enp4s0 b325fd44-30b3-c744-3fc9-e154b78e8c82イーサネットenp4s0
enp1s0 c0ab6b8c-0eac-a1b4-1c47-efe4b2d1191fイーサネットenp1s0
enp2s0 8c6fd7b1-ab62-a383-5b96-46e083e04bb1 ethernet enp2s0
ifcfg-eno1
でデバイス名を変更した 正しいファイルにファイルすると、マザーボードのNICであるeno1が再び機能するように思われます。次回そのホストでメンテナンスセッションを行うときに、それを試してみます。これは、単一のNICを備えたホストよりも興味深いものではありませんか?そして、その過程でいくつかの問題を見つけました。
NetworkManagerツールを使用したネットワークの管理については、Red Hat Enterprise Linux(RHEL)8のドキュメント「ネットワークの設定と管理」で説明されています。
最終的な考え
私は「壊れていなければ直さない」という哲学のファンです。ただし、コマンドラインからNetworkManagerを最も簡単に使用して、ネットワークデバイスと接続の現在の状態を表示するだけでも、以前の構成では見逃していた2つの異常がわかりました。私は今、NetworkManagerのファンです。古いツールは良かったが、NetworkManagerの方が優れている。それが提供する追加情報は非常に貴重です。
このシリーズのパート2では、ネットワークインターフェイスの管理について説明します。
Linux