CentOS8ではネットワークの設定を行う為のコマンドが存在します。
稀にファイルの書き換えで設定を行うことを推奨するサイトも見かけますが、自分で設定ファイルを書き換えるのは整合性に問題が生じる可能性があるので、避けるべきです。
今回はネットワーク設定の為のコマンド nmcli
について簡単に説明をします。
この記事で行うこと
1. nmcli
について
CentOS8にはNetworkManagerというネットワークを管理するためのソフトウェアがデフォルトで入っています。
このNetworkManagerを制御するコマンドが nmcli
です。
NetworkManager Command Line Interfaceの略称となります。(僕は最初は NetworkManager CLIent の略かと思ってたんですけど、思ったより仰々しい名前ですね)
2. deviceとconnection
nmcliで操作する際にdevice(デバイス)とconnection(コネクション)という概念が出てきます。
デバイスはwifiレシーバーやLAN端子といったネットワーク端末と考えてください。(仮想ネットワークコントローラとかもありますが、あくまで今回はイメージで)
コネクションはネットワークの接続設定です。
どうしてわざわざ分ける必要があるのか、deviceに接続設定も含めてしまえば良いのではないかと思うかも知れません。
しかし、この仕様はノートパソコンやモバイル端末を使う場合には非常に助かります。
もしネットワークの設定がdeviceに直接行う仕様であれば、ノートパソコンでWifiの接続を切り替えようとする度にアクセスポイント名やパスワードを打ち込む必要が出てしまいます。
しかし、アクセスポイント名やパスワードといった情報はconnectionに入っているので、別のアクセスポイントに接続する際は、該当するconnectionをdeviceに読み込ませれば良いのです。
ただサーバとして使う限りは、ほぼ使わない仕様ですね。
3. 主なコマンド
nmcli
の基本的な使い方は以下の通りです。
[root@localhost ~]# nmcli 「オブジェクト」 「コマンド」
オブジェクトというのは上述のdeviceやconnectionのことを指します。(正確には他にもオブジェクトは存在するのですが、今回は使わないので割愛します)
ちなみに、オブジェクト名やコマンド名は最後まで書かなくても他に同じ文字列の名称がなければ認識されます。
たとえば、オブジェクト名でdから始まる物はdevice以外ないので、オブジェクトの部分には d
と打つだけでも認識されます。
以降でdeviceとconnectionそれぞれの主なコマンドを説明していきます。
3-1. device
3-1-1. status
[root@localhost ~]# nmcli device status
デバイスの状態を表示するコマンドです。
なお、 nmcli device
だけでも同じコマンドが実行されます。
各デバイスの接続状況と、どのconnectionが使われているかを確認出来ます。
3-1-2. show
[root@localhost ~]# nmcli device show 「device名」
deviceの詳細を表示するコマンドです。
「device名」の部分にdevice名を入れると、特定のdeviceの詳細を見ることが出来ます。
「device名」の部分を空欄にすると、認識している全てのデバイスの情報を表示します。
MACアドレス( GENERAL.HWADDR
と表示)を確認するにはこのコマンドを実行します。(逆に言うと、それ以外の情報は大抵コネクション側の同じコマンドで確認出来ます)
3-1-3. connect
[root@localhost ~]# nmcli device connect 「device名」
deviceをネットワークに接続します。
この時、自動的に使えるconnectionを使うようです。
なお、「device名」が空欄の場合はエラーとなります。
3-1-4. disconnect
[root@localhost ~]# nmcli device disconnect 「device名」
deviceをネットワークから切断します。
こちらも「device名」が空欄の場合はエラーとなります。
SSHで接続しているネットワークを切断するとSSHから切断されてしまうので注意してください。
3-2. connection
3-2-1. show
[root@localhost ~]# nmcli connection show 「connection名」
connectionの詳細を表示します。
connection名が指定されていない場合はconnectionの状態を表示します。(deviceのstatusコマンドのようなイメージです)
IPアドレスなどネットワーク設定についてのほとんどの情報はこのコマンドで取得できます。
このコマンドで表示をすると同じような設定項目で小文字の項目名と大文字の項目名の物があると思います。(ipv4とIP4のように)
これらは、概ね小文字の方が設定した値、大文字の方が実際の値と考えられます。
設定は変更したけれど再起動を行っていないといった場合は小文字の方と大文字の方で設定値が違う場合があると思います。この場合、実際に適用されているのはほとんどの場合で大文字の方です。
3-2-2. add
[root@localhost ~]# nmcli connection add type 「ネットワーク種」
新規のconnectionを作成します。
実際に新規でconnectionを作成する必要は、ことサーバにおいてはほとんどないかと思います。
前述の通り、Wifiに繋ぐときなどは初めて繋ぐアクセスポイントに繋ぐときに作成したりと使う事もあります。
「ネットワーク種」が空欄の場合はエラーとなります。ここでいうネットワーク種というのはwifiやethernet(有線LAN)と言ったものです。
ネットワーク種によっては更に必須項目が存在します。wifiの場合はSSID(アクセスポイント名)が必須といった具合です。
なお、ここでconnectionを作れても対応するパッケージがない場合は接続が出来ないので注意してください。
例として、wifiは NetworkManager-wifi
が必要です。dnfでダウンロードしてください。
3-2-3. delete
[root@localhost ~]# nmcli connection delete 「connection名」
見たまんまconnectionを削除するコマンドです。
「connection名」が空欄の場合はエラーとなります。
接続中のconnectionを削除しないように注意してください。
3-2-4. up
[root@localhost ~]# nmcli connection up 「connection名」
connectionの接続を有効化するコマンドです。
「connection名」がない場合はエラーとなります。
よしなに適当なdeviceで有効化してくれますが、有効化するdeviceを指定したい場合は ifname 「device名」
を引数として追加することで指定できます。
3-2-5. down
[root@localhost ~]# nmcli connection down 「connection名」
connectionの接続を無効化するコマンドです。
例によって「connection名」がない場合はエラーとなります。
3-2-6. modify
[root@localhost ~]# nmcli connection modify 「connection名」 「設定項目名」 「設定値」
connectionの設定を変更するコマンドです。
「connection名」「設定項目名」「設定値」いずれかがなければエラーとなります。
このコマンドでIPアドレスや使用するDNSサーバなどの設定を変更できます。
なお、ここで設定してもネットワークを再接続したり、NetworkManagerを再起動しないと反映されません。(「3-2-1. show」で説明した大文字部分が変わりません)
まとめ
今回はネットワーク設定のために使うnmcliと代表的なnmcliのコマンドについて説明しました。
とはいえ、これだけでは設定の仕方のイメージが湧きづらいと思いますので、次回は実際にconnectionを作成しネットワークに接続してみたいと思います。