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にせず、使ってみましょう。