====== CentOS 7.xのネットワーク設定(nmcli) ======
{{tag>centos7 network-manager}}
CentOS 7.xのネットワーク設定コマンド ''nmcli'' の使用方法。
インタフェース名(ifname)を''eth0''、コネクションの接続ID(id)を''System eth0''として例を記載。
詳しくは、RHELの[[https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/sec-using_the_networkmanager_command_line_tool_nmcli|ネットワークガイド 2.3. NETWORKMANAGER のコマンドラインツール NMCLI の使用]]を参照。
===== 状態表示 =====
==== ネットワーク接続の一覧 ====
$ nmcli con show
NAME UUID TYPE DEVICE
System eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 802-3-ethernet eth0
''NAME''が接続ID、''DEVICE''がインタフェース名。
文字が緑色なら接続中、オレンジ色なら接続試行中、白色なら未接続。
オプションに''%%--%%active''を付けると、接続中の接続だけを表示する。
==== ネットワーク接続の設定内容 ====
$ nmcli con show "System eth0"
connection.id: System eth0
connection.uuid: 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
connection.stable-id: --
connection.interface-name: eth0
connection.type: 802-3-ethernet
connection.autoconnect: yes
...
==== ネットワークデバイスの状態 ====
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected System eth0
eth1 ethernet disconnected --
lo loopback unmanaged --
===== ホスト名の変更 =====
nmcli general hostname centos7
===== ネットワーク接続の停止と開始 =====
nmcli dev discon eth0
nmcli con up ifname eth0
ネットワーク接続の開始でインタフェース名ではなく接続IDを指定したい場合はこちら。
nmcli con up "System eth0"
===== ネットワーク接続の設定変更 =====
''nmcli con mod 接続ID''の後に、任意の数の設定項目を空白区切りで追加する。
接続中のインタフェースに反映させるには、インタフェースの再起動が必要。
代表的な設定項目
* ipv4.method [auto,manual,link-local]
* ipv4.addresses 複数設定可
* ipv4.gateway
* ipv4.dns 複数設定可
* ipv4.routes 複数設定可 ''"ip[/prefix] [gateway] [metric],..."'' 例: ''"192.168.1.0/24 192.168.0.1, 192.168.2.0/24 192.168.0.1"''
* ipv6.method
* ipv6.addresses 複数設定可
設定値を削除したい場合は、空文字列''""''を値に設定する。
複数設定可の項目は項目名だけなら置き換え。
項目名に''+''または''-''を付けると、指定した値の追加削除になる。
一回で複数設定したい場合はカンマ'',''で区切って設定する。
addressesとgatewayは短縮名がある。''ip4''、''gw4''、''ip6''、''gw6''。
''ip4''は''+ipv4.addresses''と同じ働き(変更ではなく追加)をするので注意。
==== 設定例 ====
=== 複数可の項目に値を追加 ===
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.2/24
$ sudo nmcli con mod "System eth0" +ipv4.addresses 192.168.0.3/24
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.2/24, 192.168.0.3/24
=== 設定値の変更 ===
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.2/24, 192.168.0.3/24
$ sudo nmcli con mod "System eth0" ipv4.addresses 192.168.0.4/24
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.4/24
=== 設定値の変更(複数指定) ===
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.4/24
$ sudo nmcli con mod "System eth0" ipv4.addresses 192.168.0.2/24,192.168.0.3/24
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.2/24, 192.168.0.3/24
=== 複数可の項目から指定した値を削除 ===
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.2/24, 192.168.0.3/24
$ sudo nmcli con mod "System eth0" -ipv4.addresses 192.168.0.3/24
$ nmcli con show "System eth0" | grep ipv4.addresses
ipv4.addresses: 192.168.0.2/24
=== 項目の設定値を削除 ===
IPv4アドレスの全削除は出来ないので、DNSで。
$ nmcli con show "System eth0" | grep ipv4.dns:
ipv4.dns: 8.8.8.8,8.8.4.4
$ sudo nmcli con mod "System eth0" ipv4.dns ""
$ nmcli con show "System eth0" | grep ipv4.dns:
ipv4.dns: --
=== 複数項目の一括設定 ===
nmcli con mod "System eth0" ipv4.addresses 192.168.0.2/24 ipv4.dns 8.8.8.8,8.8.4.4
===== ネットワーク接続の追加 =====
==== 動的アドレス(DHCP)のネットワーク接続を追加 ====
nmcli con add type ethernet con-name "System eth1" ifname eth1
NetworkManagerが''connection.autoconnect yes ipv4.method auto''を自動で設定。
また、''/etc/sysconfig/network-scripts/ifcfg-接続ID''を自動で作成する。
この例では''ifcfg-System_eth1''が出来ていたので、接続IDをインタフェース名と同じにしておいた方が便利。
コマンドが完了した時点でネットワークへの接続を開始する。
==== 静的アドレスのネットワーク接続を追加 ====
nmcli con add type ethernet con-name "System eth1" ifname eth1 ip4 192.168.0.3/24 gw4 192.168.0.1
NetworkManagerが''connection.autoconnect yes ipv4.method manual''を自動で設定。
この例では接続IDを''eth1''としたので、''/etc/sysconfig/network-scripts/ifcfg-eth1''を自動で作成。
コマンドが完了した時点でネットワークへの接続を開始する。
===== ネットワーク接続の削除 =====
nmcli con del "System eth1"
===== ファイルを直接変更したら、NetworkManagerに通知する =====
''/etc/sysconfig/network-scripts/ifcfg-eth0''等の設定ファイルを直接変更した場合は、
NetworkManagerに通知して変更を反映させる。
全てのファイルを読み込みし直す。
nmcli con reload
特定のファイルだけ読み込みし直す。
nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth0