2014年7月8日火曜日

NetworkManagerの設定変更、nmtuiとnmcliについてまとめたよ!

RHEL 7, CentOS 7では、NetworkManager の利用が推奨されています。今まで /etc/sysconfig/network-scripts/ の下や、そのほかのコマンドを利用して行っていた設定が、一元的に設定できるようになっています。

ここでは、よく使うような設定を、実際の利用例とともにまとめてみました。

NetworkManagerをテキストベースで利用するには、大きく分けてnmtuiコマンドnmcliコマンドがあります。それぞれ、テキストベースのUIと、コマンドラインツールになっています。

nmtui

最も簡単に使えるには、nmtuiコマンドです。実行すると、対話的にネットワークの設定を行うことが可能です。以下にスクリーンショットを掲載します。

いかがでしょうか? 基本的な設定はこのUIから可能です。少し変えてみる、初めて使ってみる場合にはこちらを利用するのが簡単です。

nmcli

nmcliを用いると、nmtuiとは対照的に、コマンドベースで設定変更を行うことができます。

nmcliは最後にhelpと入力すると、ヘルプが表示されます。コマンドごとのヘルプも、たとえば"nmcli connection help"や"nmcli conection up help"などのように入力すると表示されます。悩んだらhelpしましょう。

nmcliのコマンドは、前方一致で利用することが可能です。たとえばglobalはg、connectionはcといった具合です。もし一意に特定できない場合はエラーメッセージが表示されます。

それでは、それぞれの設定項目について、具体例を見ていきましょう。

ホスト名の表示、変更はnmcli global hostnameコマンドを利用します。この変更は、systemdで導入されたsystemctlコマンドと同期しています。

[yuryu@centos70 ~]$ nmcli general hostname 
centos70.local
[yuryu@centos70 ~]$ sudo nmcli general hostname centos7.local
[yuryu@centos70 ~]$ hostname
centos7.local
[yuryu@centos70 ~]$ hostnamectl 
   Static hostname: centos7.local
(省略)

NetworkManagerでは、ほとんどの設定が接続単位で保存されます。IPアドレスの設定なども接続ごとに行います。接続の一覧を表示するには、nmcli cと入力します。

[yuryu@centos7 ~]$ nmcli c
NAME         UUID                                  TYPE            DEVICE      
eno16777736  bf75cf80-fbeb-4b8f-b94c-778731bb2446  802-3-ethernet  eno16777736 

ifup / ifdown は nmcli connection up と nmcli connection down に置き換わります。

[yuryu@centos7 ~]$ sudo nmcli connection down eno16777736
[yuryu@centos7 ~]$ sudo nmcli connection up eno16777736
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/11)

なお、それぞれ nmcil c d, nmcli c u と省略することが可能です。ほかのコマンドも同様です。

接続の情報を取得するには nmcli connection show を使います。

[yuryu@centos7 ~]$ nmcli connection show eno16777736
connection.id:                          eno16777736
connection.uuid:                        bf75cf80-fbeb-4b8f-b94c-778731bb2446
connection.interface-name:              --
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
(ずらずら)

特定の設定のみを表示するには --fields オプションを追加します。

[yuryu@centos7 ~]$ nmcli --fields dhcp4 connection show eno16777736
DHCP4.OPTION[1]:                        requested_domain_search = 1
DHCP4.OPTION[2]:                        requested_nis_domain = 1
DHCP4.OPTION[3]:                        requested_time_offset = 1
(ずらずら)

設定を書き換えるには、nmcli connection modify コマンドを利用します。 書き換えた設定は一度接続を down / up させないと反映されません。

ここの例は、DHCPを無効にして、手動でアドレスを設定する例を示しています。ipv4.addressesは、"アドレス/プレフィックス長 デフォルトゲートウェイ"という形で指定します。

[yuryu@centos7 ~]$ sudo nmcli connection modify eno16777736 ipv4.method manual ipv4.addresses "172.16.105.201/24 172.16.105.2"
[yuryu@centos7 ~]$ # con mod は connection modify の省略形です
[yuryu@centos7 ~]$ sudo nmcli con mod eno16777736 ipv4.dns "8.8.8.8 8.8.4.4"
[yuryu@centos7 ~]$ sudo nmcli con mod eno16777736 ipv4.dns-search "local"
[yuryu@centos7 ~]$ nmcli --fields ipv4 connection show eno16777736
ipv4.method:                            manual
ipv4.dns:                               8.8.8.8, 8.8.4.4
ipv4.dns-search:                        local
ipv4.addresses:                         { ip = 172.16.105.201/24, gw = 172.16.105.2 }
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
[yuryu@centos70 ~]$ # connection down, connection up をそれぞれ c d, c u と省略できます
[yuryu@centos70 ~]$ sudo nmcli c d eno16777736 ; sudo nmcli c u eno16777736
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/14)
[yuryu@centos7 ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
search local
nameserver 8.8.8.8
nameserver 8.8.4.4

設定の一部を消去したり、追加したりするには、フィールド名の前に -, + をつけます。

[yuryu@centos7 ~]$ sudo nmcli con mod eno16777736 -ipv4.dns 1
[yuryu@centos7 ~]$ nmcli --fields ipv4.dns con show eno16777736
ipv4.dns:                               8.8.8.8
[yuryu@centos7 ~]$ sudo nmcli con mod eno16777736 +ipv4.dns 8.8.4.4
[yuryu@centos7 ~]$ nmcli --fields ipv4.dns con show eno16777736
ipv4.dns:                               8.8.8.8, 8.8.4.4

DHCPに戻すには次のようににします。

[yuryu@centos7 ~]$ sudo nmcli con mod eno16777736 ipv4.method auto
[yuryu@centos7 ~]$ sudo nmcli con mod eno16777736 ipv4.dns '' ipv4.dns-search '' ipv4.addresses ''

デバイスの一覧を表示するには nmcli deviceと入力します。

[yuryu@centos7 ~]$ nmcli device
DEVICE       TYPE      STATE      CONNECTION  
eno16777736  ethernet  connected  eno16777736 
lo           loopback  unmanaged  --  

また、このデバイスに紐付いている情報を表示するには、nmcli device showコマンドを利用します。

[yuryu@centos7 ~]$ nmcli device show eno16777736
GENERAL.DEVICE:                         eno16777736
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         00:0C:29:00:00:00
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     eno16777736
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/15
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         ip = 172.16.105.141/24, gw = 172.16.105.2
IP4.DNS[1]:                             172.16.105.2
IP4.DOMAIN[1]:                          localdomain
IP6.ADDRESS[1]:                         ip = fe80::20c:29ff:feb3:34dd/64, gw = ::

NetworkManagerとは関係ありませんが、従来ifconfigで見れていた、インタフェースごとの通信量を見るには、ipコマンドを使うと可能です。

[yuryu@centos7 ~]$ ip -s l 
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    340        4        0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    340        4        0       0       0       0      
2: eno16777736:  mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:00:00:00 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    7926980    13565    0       0       0       0      
    TX: bytes  packets  errors  dropped carrier collsns 
    1143281    7208     0       0       0       0      

新規の接続の追加はconnection addコマンドで行います。typeでイーサネットを示すethを、ifnameでインタフェース名を、con-nameで新しく追加する接続名を追加します。

# nmcli c add type eth ifname eth1 con-name eth1
# nmcli c mod eth1 ipv4.method manual ipv4.addresses "192.168.122.69/24 192.168.122.1"
# nmcli c down eth1
# nmcli c up eth1

いかがでしょうか。対応さえわかれば、ここ一カ所で操作することが可能で、あっちこっち見なくてよくなるので、意外と簡単ということがわかります。是非disableにせず、使ってみましょう。

1 件のコメント:

  1. nmcli connection modify eno16777736 ipv4.method manual ipv4.addresses "172.16.105.201/24 172.16.105.2"

    のコマンドですが、これは RHEL/CentOS 7.1以後ではエラーがでます。NetworkManager 1.0よりsyntaxが変わったためです。詳しくはこちらのリンクで:

    http://qiita.com/yunano/items/88a6e46b412d3be1d3ec

    返信削除