====== 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