CentOS7 – Systemdに引き続き、CentOS7で大きな変更が入ったネットワーク系のコマンドについてのメモ。
NetworkManager
要点
- RHEL7系ではネットワーク周りの設定をNetworkManagerを利用することが推奨されている(/etc/sysconfig/network-scripts/ 配下等のファイルを直接編集しない)
- ネットワーク設定の一元管理が可能
- nmtui、nmcliを使って変更をする
- 「コネクション」という概念が導入され、接続タイプや各種アドレスなど接続単位でまとめて管理する
- ひとつのネットワークインターフェースカード(NIC)に本番環境やテスト環境のコネクションを切り替えて使うことができる
# systemctl [ start | stop | restart | reload | status] NetworkManager
nmtui
- テキストベースのUIで対話的に変更が可能
# nmtui
nmtuiを実行すると下のような画面が表示されます。直感的に操作出来ると思うので、詳細は省略。
nmcli
- コマンドベースで変更が可能
- OPTIONS、OBJECTは前方一致で使用可能
- -fields オプションで特定の設定のみ表示可能
[構文]
# nmcli Usage: nmcli [OPTIONS] OBJECT { COMMAND | help } OPTIONS -t[erse] terse output -p[retty] pretty output -m[ode] tabular|multiline output mode -f[ields] <field1,field2,...>|all|common specify fields to output -e[scape] yes|no escape columns separators in values -n[ocheck] don't check nmcli and NetworkManager versions -a[sk] ask for missing parameters -w[ait] <seconds> set timeout waiting for finishing operations -v[ersion] show program version -h[elp] print this help OBJECT g[eneral] NetworkManager's general status and operations n[etworking] overall networking control r[adio] NetworkManager radio switches c[onnection] NetworkManager's connections d[evice] devices managed by NetworkManager
[device]
deviceを一覧表示
# nmcli device DEVICE TYPE STATE CONNECTION ens32 ethernet connected ens32 ens34 ethernet connecting (getting IP configuration) Wired connection 1 lo loopback unmanaged
従来はeth0等の表示でしたが、CentOS7のデフォルトではens32等で表示される
※ens34は後からNICを追加した状態
各deviceの詳細
# nmcli device show ens32 GENERAL.DEVICE: ens32 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:0C:29:01:5F:FF GENERAL.MTU: 1500 GENERAL.STATE: 100 (connected) GENERAL.CONNECTION: ens32 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0 WIRED-PROPERTIES.CARRIER: on IP4.ADDRESS[1]: ip = 172.16.1.61/24, gw = 172.16.1.1 IP4.DNS[1]: 192.168.1.61 IP6.ADDRESS[1]: ip = fe80::20c:29ff:fe01:5fff/64, gw = ::
[connection]
connectionの一覧表示
# nmcli connection NAME UUID TYPE DEVICE Wired connection 1 21296268-c79e-4485-b47b-987f7eb8d86e 802-3-ethernet ens34 ens32 96467296-1d90-4aa5-94a6-e9490f30d081 802-3-ethernet ens32
各connectionの詳細
# nmcli connection show ens32 connection.id: ens32 connection.uuid: 96467296-1d90-4aa5-94a6-e9490f30d081 connection.interface-name: -- connection.type: 802-3-ethernet connection.autoconnect: yes connection.timestamp: 1416126032 connection.read-only: no connection.permissions: connection.zone: -- connection.master: -- connection.slave-type: -- connection.secondaries: connection.gateway-ping-timeout: 0 802-3-ethernet.port: -- 802-3-ethernet.speed: 0 802-3-ethernet.duplex: -- 802-3-ethernet.auto-negotiate: yes 802-3-ethernet.mac-address: 00:0C:29:01:5F:FF 802-3-ethernet.cloned-mac-address: -- 802-3-ethernet.mac-address-blacklist: 802-3-ethernet.mtu: auto 802-3-ethernet.s390-subchannels: 802-3-ethernet.s390-nettype: -- 802-3-ethernet.s390-options: ipv4.method: manual ipv4.dns: 192.168.1.61 ipv4.dns-search: ipv4.addresses: { ip = 172.16.1.61/24, gw = 172.16.1.1 } ipv4.routes: 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: no ipv6.method: auto ipv6.dns: ipv6.dns-search: ipv6.addresses: ipv6.routes: ipv6.ignore-auto-routes: no ipv6.ignore-auto-dns: no ipv6.never-default: no ipv6.may-fail: yes ipv6.ip6-privacy: -1 (unknown) ipv6.dhcp-hostname: -- GENERAL.NAME: ens32 GENERAL.UUID: 96467296-1d90-4aa5-94a6-e9490f30d081 GENERAL.DEVICES: ens32 GENERAL.STATE: activated GENERAL.DEFAULT: yes GENERAL.DEFAULT6: no GENERAL.VPN: no GENERAL.ZONE: -- GENERAL.DBUS-PATH: /org/freedesktop/NetworkManager/ActiveConnection/0 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/Settings/0 GENERAL.SPEC-OBJECT: -- GENERAL.MASTER-PATH: -- IP4.ADDRESS[1]: ip = 172.16.1.61/24, gw = 172.16.1.1 IP4.DNS[1]: 192.168.1.61 IP6.ADDRESS[1]: ip = fe80::20c:29ff:fe01:5fff/64, gw = ::
connection(インターフェース)の有効・無効
# 確認 # nmcli -fields GENERAL.STATE connection show ens32 GENERAL.STATE: activated # 有効 # nmcli connection up ens32 # 無効 # nmcli connection down ens32
connectionの変更
まずデバイスを確認(ens34はNICを追加しただけの状態) # nmcli device DEVICE TYPE STATE CONNECTION ens32 ethernet connected ens32 ens34 ethernet connecting (getting IP configuration) Wired connection 1 lo loopback unmanaged -- connectionの確認 # nmcli connection NAME UUID TYPE DEVICE Wired connection 1 21296268-c79e-4485-b47b-987f7eb8d86e 802-3-ethernet ens34 ens32 96467296-1d90-4aa5-94a6-e9490f30d081 802-3-ethernet ens32 connection'Wired connection 1'の名前を変更します。 # nmcli connection modify 'Wired connection 1' connection.id ens34 # nmcli connection show NAME UUID TYPE DEVICE ens34 21296268-c79e-4485-b47b-987f7eb8d86e 802-3-ethernet ens34 ens32 96467296-1d90-4aa5-94a6-e9490f30d081 802-3-ethernet ens32 固定IPアドレス・DNSを設定 (IPアドレスは「IPアドレス/プレフィックス デフォルトゲートウェイ」で指定する) # nmcli connection modify ens34 ipv4.method manual ipv4.addresses "192.168.1.161/24 192.168.1.1" # nmcli connection modify ens34 ipv4.dns "192.168.1.61" 設定した内容を確認 # nmcli --fields ipv4 connection show ens34 ipv4.method: manual ipv4.dns: 192.168.1.61 ipv4.dns-search: ipv4.addresses: { ip = 192.168.1.161/24, gw = 192.168.1.1 } ipv4.routes: 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 設定の一部を追加、削除する場合は+、-を使う # nmcli connection modify ens34 +ipv4.dns "192.168.1.62" # nmcli --fields ipv4.dns connection show ens34 ipv4.dns: 192.168.1.61, 192.168.1.62 # nmcli connection modify ens34 -ipv4.dns "192.168.1.62" # nmcli --fields ipv4.dns connection show ens34 ipv4.dns: 192.168.1.61 設定の反映は再起動 # nmcli connection down ens34 ; nmcli connection up ens34 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
connectionの追加
- ifname : device名に該当する
- con-name : connection名に該当する
connectionを新規作成して未使用のdeviceに紐づけて有効化してみる
deviceのens35にconnection名eth0を設定 # nmcli connection add type eth ifname ens35 con-name eth0 ip4 172.16.1.62 gw4 172.16.1.1 Connection 'eth0' (f4913ff7-9c31-4f5f-8131-12b6a05c5228) successfully added. 設定の反映(eth0は今回新規で作成したので、upだけでよいと思う) # nmcli connection down eth0 ; nmcli connection up eth0 Error: 'eth0' is not an active connection. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3) deviceの確認 # nmcli device DEVICE TYPE STATE CONNECTION ens32 ethernet connected ens32 ens34 ethernet connected ens34 ens35 ethernet connected eth0 lo loopback unmanaged -- connectionの確認 # nmcli connection NAME UUID TYPE DEVICE Wired connection 1 5d590530-d613-4fc4-b642-d886fffbeaaa 802-3-ethernet -- ens34 d755abf5-d821-4002-9d43-6d41c32eee8d 802-3-ethernet ens34 ens32 0d16ef59-0f1b-4423-ba86-1c8935552f09 802-3-ethernet ens32 eth0 f4913ff7-9c31-4f5f-8131-12b6a05c5228 802-3-ethernet ens35
connectionを新規作成して既存のdeviceに紐づけて有効化してみる
上記でconnection:eth0を紐づけたdevice:ens35にconnection:eth2を追加 # nmcli connection add type eth ifname ens35 con-name eth2 ip4 172.16.1.63 gw4 172.16.1.1 Connection 'eth2' (cbf99855-2103-4d19-99ce-2373c2a780d7) successfully added. 設定の反映(eth0を落として、eth2を立ち上げる) # nmcli connection down eth0 ; nmcli connection up eth2 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5) device:ens35の紐付けがconnection:eth2に変わったことを確認 # nmcli device DEVICE TYPE STATE CONNECTION ens32 ethernet connected ens32 ens34 ethernet connected ens34 ens35 ethernet connected eth2 lo loopback unmanaged -- connectionの確認 # nmcli connection NAME UUID TYPE DEVICE ens34 d755abf5-d821-4002-9d43-6d41c32eee8d 802-3-ethernet ens34 ens32 0d16ef59-0f1b-4423-ba86-1c8935552f09 802-3-ethernet ens32 eth2 cbf99855-2103-4d19-99ce-2373c2a780d7 802-3-ethernet ens35 eth0 f4913ff7-9c31-4f5f-8131-12b6a05c5228 802-3-ethernet --
connectionの切替え
- 同じdeviceに登録しているactiveになっていないconnectionを立ち上げると切り替わるようです。
設定されているconnectionの確認 # nmcli connection NAME UUID TYPE DEVICE Wired connection 1 5d590530-d613-4fc4-b642-d886fffbeaaa 802-3-ethernet -- ens34 d755abf5-d821-4002-9d43-6d41c32eee8d 802-3-ethernet ens34 ens32 0d16ef59-0f1b-4423-ba86-1c8935552f09 802-3-ethernet ens32 eth3 3f64bbd6-8928-45e3-856f-76784e92b03c 802-3-ethernet ens35 eth2 cbf99855-2103-4d19-99ce-2373c2a780d7 802-3-ethernet -- eth0 f4913ff7-9c31-4f5f-8131-12b6a05c5228 802-3-ethernet -- eth0を立ち上げてみる # nmcli connection up eth0 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8) device:ens35の紐付けがconnection:eth0に変わった # nmcli connection NAME UUID TYPE DEVICE Wired connection 1 5d590530-d613-4fc4-b642-d886fffbeaaa 802-3-ethernet -- ens34 d755abf5-d821-4002-9d43-6d41c32eee8d 802-3-ethernet ens34 ens32 0d16ef59-0f1b-4423-ba86-1c8935552f09 802-3-ethernet ens32 eth3 3f64bbd6-8928-45e3-856f-76784e92b03c 802-3-ethernet -- eth2 cbf99855-2103-4d19-99ce-2373c2a780d7 802-3-ethernet -- eth0 f4913ff7-9c31-4f5f-8131-12b6a05c5228 802-3-ethernet ens35
その他
有効になっているIPアドレスの確認はifconfigではなく、ip addr showを使います。
# ip addr show
最後に
面倒くさいんですけど…
慣れの問題でしょうか…
参考
第1回 管理ツールがNetworkManagerに一元化
NetworkManagerの設定変更、nmtuiとnmcliについてまとめたよ!
CentOS7 ネットワークの設定変更
RHEL7のNICのネーミングルール