CentOS7.1でNetwork ManagerのCUIを使ってネットワーク設定をする
CentOS6から、Network Managerでネットワークを管理するようになっていたようだが、ずっと/etc/sysconfig/network-scripts
を直接編集して設定していた。
今回、CentOS7.1をインストールする機会があったので、Network ManagerのCUIを使って設定してみることにした。
Network ManagerのCUIはnmcli
。
ホスト名の設定
[root@localhost ~]# nmcli g hostname
localhost.localdomain
[root@localhost ~]# nmcli g hostname centos71.localdomain
[root@localhost ~]# nmcli g hostname
centos71.localdomain
[root@localhost ~]# hostname
centos71.localdomain
g
は、general
の略。nmcli
では、最初の引数に指定する値をオブジェクトと呼ぶ。そのオブジェクトに対してコマンドを実行するような体系になっている。
ホスト名の変更は、hostname
コマンドの後に変更後の名称を指定する。指定しなければその時のホスト名が表示される。
変更前の設定内容
今から変更するネットワークの設定内容の確認。
[root@centos71 ~]# nmcli c show
名前 UUID タイプ デバイス
enp0s3 4b7806c4-fe58-4f47-9e3b-768c7be5f4cc 802-3-ethernet enp0s3
c
はconnection
の略。show
で、Network Managerで管理しているコネクションの一覧を表示する。
[root@centos71 ~]# nmcli --fields connection c show enp0s3
connection.id: enp0s3
connection.uuid: 4b7806c4-fe58-4f47-9e3b-768c7be5f4cc
connection.interface-name: enp0s3
connection.type: 802-3-ethernet
connection.autoconnect: no
connection.autoconnect-priority: 0
connection.timestamp: 1436372715
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: --
connection.slave-type: --
connection.secondaries:
connection.gateway-ping-timeout: 0
一覧にある名前enp0s3
がコネクション名。show
にこの名前を指定すると、そのコネクションの設定内容が表示される。
--fields
はnmcli
のグローバルオプションと呼ばれているもの。特定のフィールドを表示するためのフィルタになる。
ここでは、コネクションenp0s3
の基本的な設定を表示している。
[root@centos71 ~]# nmcli --fields ipv4 c show enp0s3
ipv4.method: auto
ipv4.dns:
ipv4.dns-search:
ipv4.addresses:
ipv4.gateway: --
ipv4.routes:
ipv4.route-metric: -1
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
--fields
をipv4
に変更して、 IPv4に関する設定を表示。DHCPを使用していることがわかる(ipv4.method: auto
)。
OS起動時にコネクションを有効化する
[root@centos71 ~]# nmcli c mod enp0s3 connection.autoconnect yes
[root@centos71 ~]# nmcli --fields connection c show enp0s3
connection.id: enp0s3
connection.uuid: 4b7806c4-fe58-4f47-9e3b-768c7be5f4cc
connection.interface-name: enp0s3
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.timestamp: 1436372715
connection.read-only: no
connection.permissions:
connection.zone: --
connection.master: --
connection.slave-type: --
connection.secondaries:
connection.gateway-ping-timeout: 0
mod
はmodify
の略。この後にはコネクション名(enp0s3
)、フィールド名(connection.autoconnect
)、変更値(yes
)が続き、それらを指定して実行すると変更される。
OS起動時にコネクションを有効化するには、connection.autoconnect
をyes
にする。
IPを手動で登録する
[root@centos71 ~]# nmcli c mod enp0s3 ipv4.method manual ipv4.addresses 192.168.56.10/24 ipv4.gateway 192.168.56.1
[root@centos71 ~]# nmcli --fields ipv4 c show enp0s3
ipv4.method: manual
ipv4.dns:
ipv4.dns-search:
ipv4.addresses: 192.168.56.10/24
ipv4.gateway: 192.168.56.1
ipv4.routes:
ipv4.route-metric: -1
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
IPを手動で登録するには、ipv4.method
をmanual
にし、ipv4.addresses
を所定のIP/prefix(192.168.56.10/24
)にする。
ここでは併せて、ゲートウェイも設定した(ipv4.gateway 192.168.56.1
)。このように、複数のフィールドを一緒に変更することもできる。
DNSの設定
[root@centos71 ~]# nmcli c mod enp0s3 ipv4.dns "192.168.56.1 8.8.8.8 8.8.4.4" ipv4.dns-search "example.com"
[root@centos71 ~]# nmcli --fields ipv4 c show enp0s3
ipv4.method: manual
ipv4.dns: 192.168.56.1,8.8.8.8,8.8.4.4
ipv4.dns-search: example.com
ipv4.addresses: 192.168.56.10/24
ipv4.gateway: 192.168.56.1
ipv4.routes:
ipv4.route-metric: -1
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.never-default: no
ipv4.may-fail: yes
DNSサーバはipv4.dns
で設定する。IPをスペースで区切り、全体をダブルクォートで囲むことで、DNSサーバを複数設定することができる。
検索ドメインはipv4.dns-search
を設定する。
設定の確認
[root@centos71 ~]# ip a show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:d5:4c:8e brd ff:ff:ff:ff:ff:ff
inet 192.168.56.10/24 brd 192.168.56.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fed5:4c8e/64 scope link
valid_lft forever preferred_lft forever
ip
で設定内容を確認してみたところ。inet
が所定のIPになっている。
コマンドで指定したenp0s3
は、コネクション名ではなくデバイス名。上記のフィールド名connection.interface-name
の値と同じ。