ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

CentOS7のnmcliコマンドについて

この記事はQiitaからの移行記事です。内容が古い場合があります。

CentOSはバージョン7からNetwork Managerが標準で実行されています。一応互換性のため、従来のnetworkサービスもあるので、

# systemctl disable NetworkManager
# systemctl start network
# systemctl disable network
# systemctl stop NetworkManager

と実行すれば元通り使えるのですが、Network Managerが有効だと割と便利なのでNetworkManagerは使ったほうがいいですよーという話。

これまでのIPアドレスの設定変更

IPアドレスの変更はifcfgから始まるファイルを直接いじっていたと思います。

# ls /etc/sysconfig/network-scripts/ |grep ifcfg
ifcfg-enp0s3
ifcfg-enp0s8
ifcfg-lo

NetworkManagerが有効でも同じではあるんですが、デバイスの設定ファイルがなかった時は最初から作らなければならないですし面倒ですよね。

そこでNetworkManagerの登場。nmcuiとnmtuiという便利なコマンドがあります。今回はnmcuiの使い方をちょっとご紹介。

これからのIPアドレスの設定変更

これからはnmcuiコマンドですよ。例えばenp0s8のIPアドレスの設定を変更するには次のように実行します。

# nmcli c m enp0s8 ipv4.method manual ipv4.addresses 192.168.56.101/24 

超簡単ですね。ちなみにこのままだと再起動後にIPアドレスが設定されなくなるので次のように設定を追加します。

# nmcli c m enp0s8 ipv4.method manual ipv4.addresses 192.168.56.101/24 connection.autoconnect yes

直感的ですね。ネットワークデバイスに対して設定できる設定の一覧は次のように実行するとわかります。

# nmcli c s enp0s8
connection.id:                          enp0s8
connection.uuid:                        306603cb-f8e9-497f-8e4f-f00c63f5e2e1
connection.interface-name:              enp0s8
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
...
ipv4.addresses:                      192.168.56.101/24
...

ちなみにnmcliではホスト名も変更可能です。 一行目で任意のホスト名を設定してsystemd-hostnamedを再起動するだけです。

# nmcli general hostname my-server
# systemctl restart systemd-hostnamed

ただ便利なnmcliですが、ちょっとした問題があります。それはOSインストール時に追加したNICの名前がユニークなものになってしまう点です。例えばCentOS7でインストール後にNICを追加すると次のようになってしまいます。

# nmcli c s  ←接続の一覧を表示
NAME
Wired connection 1... ←追加したNIC(enp0s8)
enp0s3... ←元のNIC

これでも困ることはあまりないのですが、先ほどのようにIPアドレスを変更するには次のように入力しなければなりません。

# nmcli c m "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.56.101/24 connection.autoconnect yes

これを解決するにはやはり、nmcliコマンドを使います。 Wired connection 1という名前のデバイスを本来のデバイス名と同じ enp0s8にするにはconnection.interface-nameとconnection.idを変更して再起動すると良いようです。

# nmcli c m "Wired connection 1" connection.interface-name enp0s8 connection.id enp0s8

再起動後はこの通り。

# nmcli c s
NAME
enp0s8 ←追加したNIC(enp0s8)
enp0s3 ←元のNIC

参考にしたサイト

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。