概要
nmcliのマニュアルを読んでたら思いの外色々出来ることが分かったけれども、いかんせん情報量が多くて読みづらかったので自分が使いやすい様にまとめました。
(20191127 デバイスとコネクションの説明を追加)
デバイスとコネクション
コマンドの説明に入る前にNetworkManagerで多用されるこの概念について説明しておきます。
デバイスはその名の通りデバイスを指し、ifconfig コマンドやip コマンドで確認出来るNIC 識別名と同様の役割を果たします。コネクションは1 つのデバイスに複数の設定を保持しておき、ユーザが柔軟に接続を変更できるように導入された概念です。より一般的に言えば接続プロファイルとも言えます。
このコネクションに保持されている設定ですが、反映されるのはコネクション接続時である点に注意してください。つまり、既に接続されているコネクションは一度コネクションを落として上げてしないと反映されません。コマンドにすると以下の様になります。
$ nmcli connection modify eth0 {何らかの設定}
$ nmcli connection down eth0
$ nmcli connection up eth0
コネクションは接続先のデバイスを設定項目として持ちますが、仮想デバイス等の例外を除いて、接続時にはデバイスとコネクションは一対一に対応します。下図の様にコネクション2 に切り替えた場合、接続コネクション1 は自動的に切断されます。
よくやってしまうのですが、enp1s0等のデバイスにeno1s0というコネクションを作成するのは他者に分かりにくかったり障害発生時に分析が難しくなったりします。なりました。かといって"有線接続 1"みたいなデフォルトのコネクション名もデバイスとの関連が分かりづらいので、共有する計算機環境では明瞭なコネクション名、少なくともcon-enp1s0等とする様にしましょう。
nmcliサブコマンド一覧
サブコマンドと主要な引数、簡単な説明をまとめます(赤字は個人的に特に使うサブコマンド)。全ての引数や設定値を説明していると可読性を損なうので気になる人はここやmanコマンドを参照してください。
- 大抵のサブコマンドはhelpを追加して実行すると概要や引数が表示されます。
- サブコマンドは1文字ま省略可能です。例: nmcli device show = nmcli d s
nmcli チートシート
使いそうな物を抜粋
(ネットワーク状態の一覧を確認)
$ nmcli
(コネクションの状態を確認)
$ nmcli connection
(デバイスの状態を確認)
$ nmcli device
(コネクションを有効化/無効化)
$ nmcli connection {up|down} {コネクション名}
(イーサネットコネクションを作成(IPv4/v6自動、自動接続))
$ nmcli connection add type ethernet con-name {コネクション名} ifname {デバイス名}
(コネクションの設定値を確認)
$ nmcli connection show {コネクション名}
(IPv4アドレスを手動で設定)
$ nmcli connection modify {コネクション名} ipv4.method manual ipv4.addresses {アドレス}
(IPv4デフォルトゲートウェイを設定)
$ nmcli connection modify {コネクション名} ipv4.gateway {アドレス}
(コネクションの自動接続を解除)
$ nmcli connection modify {コネクション名} connection.autoconnect no
(無線コネクションを作成)
$ nmcli device wifi connect {SSID} [password パス] [ifname デバイス名] [con-name コネクション名]
(現在のホスト名の確認)
$ nmcli general hostname
(ホスト名の変更)
$ nmcli general hostname {ホスト名}