【nmcli】オプション一覧~反映に再起動は必要?デバイス名変更,ステータス確認,ip/dns/デフォルトゲートウェイ設定~

CentOS7 以上では Network Manager を積極的に使ったほうが良さそう

CentOS7系では Network Manager を使うことが推奨されています(Network Managerを使わないと firewalld のzone設定等がうまく反映されなかったりするよう)。

なのでネットワーク周りのCLIコマンドは nmcli を使いましょう。

設定反映には基本、インタフェースの再起動(nmcli con up [if])のみでOKですが、デバイス名の変更だけはOSの再起動が必要となるようです。

NetworkManagerが認識しているインタフェースおよびステータスを表示

[root@localhost ~]# nmcli device
デバイス タイプ 状態 接続
eth1 ethernet 接続済み eth1
eth2 ethernet 接続済み eth2
eth3 ethernet 切断済み --
lo loopback 管理無し --
[root@localhost ~]#

有効なものを緑で表示し、利用できないものを赤で表示します。

NetworkManager管理下のインタフェースを表示(有効に利用できるものを緑で表示)

[root@localhost ~]# nmcli connection show
名前 UUID タイプ デバイス
eth1 99fbd3ed-f1d8-4c81-a2cf-9665fd6cd2f9 802-3-ethernet eth1
eth2 ebe5b183-c4b0-3d40-b1f6-fe4623a5085f 802-3-ethernet eth2
eth3 3508a332-4320-3fdf-bb7a-25539a2a6a14 802-3-ethernet --
[root@localhost ~]#

上記コマンドはよく "nmcli c s" と略されます。

インタフェースの自動接続設定

VMware Workstation Player や Oracle VM等での初回起動時などはインタフェースが自動接続になっていないため、自動接続を有効にしましょう。

[root@localhost ~]# nmcli connection modify eth2 connection.autoconnect yes
[root@localhost ~]# nmcli connection up eth2

上のコマンドはよく "nmcli c m" や "nmcli con mod" と略されます。同様に下のコマンドは "nmcli c u" や "nmcli con up" と略されます。

IPアドレスの設定

[root@localhost ~]# nmcli connection modify eth2 ipv4.method manual ipv4.addresses "10.1.1.2/24"
[root@localhost ~]# nmcli connection up eth2

設定反映には NetworkManager の再起動をせずとも、2行目の "nmcli connection up"コマンドでOKです。(down も不要)

デフォルトゲートウェイの設定

[root@localhost ~]# nmcli connection modify eth2 ipv4.gateway "10.1.1.254"
[root@localhost ~]# nmcli connection up eth2

同様にupコマンドで設定反映。

DNSサーバの設定

[root@localhost ~]# nmcli connection modify eth2 ipv4.dns "8.8.8.8"
[root@localhost ~]# nmcli connection up eth2

同様にupコマンドで設定反映。

このコマンドは設定を上書きするため、2台目(セカンダリ等)を設定するには次のコマンドを実行します。

複数の DNS サーバ設定の追加・削除

追加するときは +ipv4

[root@localhost ~]# nmcli connection modify eth2 +ipv4.dns "8.8.4.4"
[root@localhost ~]# nmcli connection up eth2

削除するときは -ipv4

[root@localhost ~]# nmcli connection modify eth2 -ipv4.dns "8.8.4.4"
[root@localhost ~]# nmcli connection up eth2

スタティックルートの設定追加・削除

追加するときは +ipv4

[root@localhost ~]# nmcli connection modify eth2 +ipv4.routes "192.168.1.0/24 10.1.2.254"
[root@localhost ~]# nmcli connection up eth2

削除するときは -ipv4

[root@localhost ~]# nmcli connection modify eth2 -ipv4.routes "192.168.1.0/24 10.1.2.254"
[root@localhost ~]# nmcli connection up eth2

セカンダリIPアドレスの追加

同様にIPアドレスもセカンダリIPを追加するときは +ipv4

[root@localhost ~]# nmcli connection modify eth2 +ipv4.addresses "10.1.1.3/24"
[root@localhost ~]# nmcli connection up eth2

IPを削除するときは -ipv4

[root@localhost ~]# nmcli connection modify eth2 -ipv4.addresses "10.1.1.3/24"
[root@localhost ~]# nmcli connection up eth2

プロファイル名(名前/NAME)を変える

[root@localhost ~]# nmcli connection show
名前 UUID タイプ デバイス
eth1 99fbd3ed-f1d8-4c81-a2cf-9665fd6cd2f9 802-3-ethernet eth1
eth2 ebe5b183-c4b0-3d40-b1f6-fe4623a5085f 802-3-ethernet eth2
eth3 3508a332-4320-3fdf-bb7a-25539a2a6a14 802-3-ethernet --
[root@localhost ~]#

上記の状態で、eth2 を変更するには以下のコマンドを打ちます。

[root@localhost ~]# nmcli connection modify eth2 connection.id ens38

すると即時反映で以下のように変わります。

[root@localhost ~]# nmcli connection show
名前 UUID タイプ デバイス
eth1 99fbd3ed-f1d8-4c81-a2cf-9665fd6cd2f9 802-3-ethernet eth1
ens38 ebe5b183-c4b0-3d40-b1f6-fe4623a5085f 802-3-ethernet eth2
有線接続1 3508a332-4320-3fdf-bb7a-25539a2a6a14 802-3-ethernet --
[root@localhost ~]#

デバイス名を変更する

デバイス名を変更するには以下のようにします。

[root@localhost ~]# nmcli connection modify eth2 connection.interface-name ens38
[root@localhost ~]# shutdown -r now

名前の変更とは違い、再起動が必要となります。再起動後は以下のように変わります。

[root@localhost ~]# nmcli connection show
名前 UUID タイプ デバイス
eth1 99fbd3ed-f1d8-4c81-a2cf-9665fd6cd2f9 802-3-ethernet eth1
ens38 ebe5b183-c4b0-3d40-b1f6-fe4623a5085f 802-3-ethernet ens38
eth3 3508a332-4320-3fdf-bb7a-25539a2a6a14 802-3-ethernet eth3
[root@localhost ~]#

対話的に設定する場合

[root@localhost ~]# nmcli con edit id ens38
===| nmcli インテラクティブ接続エディター |===既存の '802-3-ethernet' 接続を編集中: 'ens38'使用できるコマンドを表示するには 'help' または '?' を入力します。
プロパティ詳細を表示するには 'describe [.]' を入力します。次の設定を変更することができます: connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6, proxy
nmcli> ?
------------------------------------------------------------------------------
---[ メインメニュー ]---
goto [ | ] :: 設定またはプロパティーに移動する
remove [.] | :: 設定を削除する、またはプロパティー値をリセットする
set [. ] :: プロパティー値を設定する
describe [.] :: プロパティーの説明を表示する
print [all | [.]] :: 接続を出力する
verify [all | fix] :: 接続を検証する
save [persistent|temporary] :: 接続を保存する
activate [] [/|] :: 接続をアクティベートする
back :: ひとつ上のレベルに移動する (戻る)
help/? [] :: このヘルプを表示する
nmcli :: nmcli 設定
quit :: nmcli を終了する
------------------------------------------------------------------------------
nmcli> goto ?
エラー: 無効な設定名; '?' は [connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6, proxy] にはありません
nmcli> goto connection
変更できるのは次のプロパティになります: id, uuid, interface-name, type, permissions, autoconnect, autoconnect-priority, autoconnect-retries, timestamp, read-only, zone, master, slave-type, autoconnect-slaves, secondaries, gateway-ping-timeout, metered, lldp, stable-id
nmcli connection> goto id
nmcli connection.id> ?
------------------------------------------------------------------------------
---[ プロパティメニュー]---
set [] :: 新しい値の設定
add [] :: プロパティに新規オプションを追加
change :: 現在の値を変更
remove [ |] :: 値の削除
describe :: プロパティの詳細表示
print [setting | connection] :: プロパティ値 (設定/接続) の表示
back :: 上のレベルに移動
help/? [] :: このヘルプまたはコマンドの詳細を表示
quit :: nmcli の終了
------------------------------------------------------------------------------
nmcli connection.id> print
id: ens38
nmcli connection.id> set eth1
nmcli connection.id> back
nmcli connection> save
接続 'eth1' (ebe5b183-c4b0-3d40-b1f6-fe4623a5085f) が正常に更新されました。
nmcli connection> quit
[root@localhost ~]#

シェアする

  • このエントリーをはてなブックマークに追加

フォローする