【CentOS7】 nmcli コマンドを使用して複数NIC環境の設定をする手順

CentOS7になり、CentOS6 からかなりコマンドが変わっています。

「chkconfig」→「systemctl」など、新しいコマンドに変わりました。

 

CentOS6 では、Network Manager は基本的に「停止」をしてファイルベースでネットワークを設定する運用をしていた方が多いと思いますが、CentOS7 からは Network Manager を利用して設定する運用方法が推奨されています。

 

一応 CentOS7 でも Network Manager を「停止」して今まで通りファイルベースで設定することも可能ですが、Network Manager を利用する設定する方法が推奨されているので、この機会に「Network Manager」を利用してネットワークの設定をする方法をマスターしましょう。

 

ちなみに、なぜ CentOS7 になって「Network Manager」を利用して設定する方法が推奨されるようになったのかというと、ネットワーク関連のコマンド「nmcli」が何でもできてしまうというところもあるからです。

 

そこで今回は「nmcli」コマンドを利用して複数NICを持つネットワークの設定をする手順について解説します。

 

 

ネットワーク構成図

今回はこのような構成で NIC の設定をします。

サーバーは「CentOS7」で、NIC は2つ持っています。

OSをインストールした直後を想定して、ネットワーク周りを設定していきます。

【仮想環境】【CentOS7】nmcli コマンドを使用して複数NIC環境の設定をする手順

 

 

ホスト名を設定する

OSをインストールした直後はホスト名を設定します。

インストール時に「ホスト名」、「ドメイン名」など一通り設定をした場合は、スキップしてください。

 

最初に root になります。

# sudo su –

 

ホスト名を設定します。

[root@cnt07 ~]# nmcli general hostname test07
[root@cnt07 ~]# hostname
test07 ← test07に変わっています。
[root@cnt07 ~]#

 

※プロンプトの表示はログイン時に環境変数を持ってきているため、一度ログオフ・ログインをしないと反映されません。

「nmcli general hostname <ホスト名>」コマンドは一時的な変更ではありません。

OSを再起動した後も「test07」です。

その理由は、「nmcli general hostname <ホスト名>」コマンドを実行すると「/etc/hostname」ファイルも書き換えられるからです。

[root@cnt07 ~]# cat /etc/hostname
test07 ← /etc/hostnameファイルの中身も書き換えられています。

 

 

OSを再起動して確認してみると、ホスト名はそのままです。

[test@test07 ~]$ cat /etc/hostname
test07

※ちなみに、プロンプトも「cnt07」→「test07」へ変わっています。

 

 

新規 NIC に対して IP アドレスを設定する場合

VMware で NIC を追加したり、物理 NIC をサーバーに追加した場合です。

OS からは「デバイスとしては認識」されているのですが、まだ何も OS での設定(IPアドレス等)がされていない状態です。

 

この状態は「/etc/sysconfig/network-scripts」ディレクトリに NIC ファイル(ifcfg-ensxxx や ifcfg-ethxx などのファイル)がまだ出来ていません。

[root@centos7 network-scripts]# pwd 
/etc/sysconfig/network-scripts 
[root@centos7 network-scripts]# ls 
ifcfg-ens160     ifdown-ib      ifdown-sit     ifup-eth    ifup-post         network-functions 
ifcfg-lo         ifdown-ippp    ifdown-tunnel  ifup-ib     ifup-ppp          network-functions-ipv6 
ifdown           ifdown-ipv6    ifup           ifup-ippp   ifup-routes 
ifdown-Team      ifdown-isdn    ifup-Team      ifup-ipv6   ifup-sit 
ifdown-TeamPort  ifdown-post    ifup-TeamPort  ifup-isdn   ifup-tunnel 
ifdown-bnep      ifdown-ppp     ifup-aliases   ifup-plip   ifup-wireless 
ifdown-eth       ifdown-routes  ifup-bnep      ifup-plusb  init.ipv6-global 
[root@centos7 network-scripts]#

 

 

 

OS 上よりデバイスを追加する設定

「nmcli」コマンドで IP アドレスの設定をします。

VMware 上で NIC を作成しても OS 上からはデバイスは認識できていますが、以下のように「切断済み」状態になっています。

[root@centos7 network-scripts]# nmcli device 
デバイス  タイプ    状態      接続 
ens160    ethernet  接続済み  ens160 
ens192    ethernet  切断済み  — 
lo        loopback  管理無し  — 
[root@centos7 network-scripts]#

 

この状態は上記で確認したように「/etc/sysconfig/network-scripts」ディレクトリに NIC ファイル(ifcfg-ensxxx や ifcfg-ethxx などのファイル)がまだ出来ていません。

 

以下のように「nmcli connection add」コマンドで「ens192」デバイスを追加します。

構文:nmcli connection add type <デバイスタイプ> ifname <ifname名> con-name <接続名>

[root@centos7 ~]# nmcli connection add type ethernet ifname ens192 con-name ens192 
接続 ‘ens192’ (48315650-6871-4892-8975-34627ba60d88) が正常に追加されました。 
[root@centos7 ~]#

 

 

「nmcli device」コマンドで設定を確認します。

先ほどは「切断済み」ですが、「接続中(IP 設定を取得中)」にステータスが変わっています。

[root@centos7 network-scripts]# nmcli device 
デバイス  タイプ    状態                       接続 
ens160    ethernet  接続済み                   ens160 
ens192    ethernet  接続中(IP 設定を取得中)  ens192 
lo        loopback  管理無し                   — 
[root@centos7 network-scripts]#

 

 

「/etc/sysconfig/network-scripts」に移動し NIC ファイルを確認すると「ifcfg-ens192」ファイルが作成されています。

[root@centos7 network-scripts]# pwd 
/etc/sysconfig/network-scripts 
[root@centos7 network-scripts]# ls 
ifcfg-ens160     ifdown-eth   ifdown-routes  ifup-bnep  ifup-plusb     init.ipv6-global 
ifcfg-ens192     ifdown-ib    ifdown-sit     ifup-eth   ifup-post      network-functions 
ifcfg-lo         ifdown-ippp  ifdown-tunnel  ifup-ib    ifup-ppp       network-functions-ipv6 
ifdown           ifdown-ipv6  ifup           ifup-ippp  ifup-routes 
ifdown-Team      ifdown-isdn  ifup-Team      ifup-ipv6  ifup-sit 
ifdown-TeamPort  ifdown-post  ifup-TeamPort  ifup-isdn  ifup-tunnel 
ifdown-bnep      ifdown-ppp   ifup-aliases   ifup-plip  ifup-wireless 
[root@centos7 network-scripts]#

 

 

作成された「ifcfg-ens192」ファイルの中身を確認します。

BOOTPROTO「dhcp」になっているので後ほど(下記で) nmcli コマンドで「BOOTPROTO=none」(スタティック)に修正をします。

[root@centos7 network-scripts]# cat ifcfg-ens192 
TYPE=Ethernet 
BOOTPROTO=dhcp ← BOOTPROTO が dhcp になっているので後ほど変更します。 
DEFROUTE=yes 
PEERDNS=yes 
PEERROUTES=yes 
IPV4_FAILURE_FATAL=no 
IPV6INIT=yes 
IPV6_AUTOCONF=yes 
IPV6_DEFROUTE=yes 
IPV6_PEERDNS=yes 
IPV6_PEERROUTES=yes 
IPV6_FAILURE_FATAL=no 
IPV6_ADDR_GEN_MODE=stable-privacy 
NAME=ens192 
UUID=48315650-6871-4892-8975-34627ba60d88 
DEVICE=ens192 
ONBOOT=yes 
[root@centos7 network-scripts]#

 

 

 

IPアドレスなどの設定

「nmcli connection modify」コマンドで IP アドレスを割り当てます。

[root@centos7 network-scripts]# nmcli connection modify ens192 ipv4.addresses 10.0.0.1/24 

 

 

「ifcfg-ens192」ファイルの中を確認します。

[root@centos7 network-scripts]# cat ifcfg-ens192 
TYPE=Ethernet 
BOOTPROTO=dhcp 
DEFROUTE=yes 
IPV4_FAILURE_FATAL=no 
IPV6INIT=yes 
IPV6_AUTOCONF=yes 
IPV6_DEFROUTE=yes 
IPV6_FAILURE_FATAL=no 
IPV6_ADDR_GEN_MODE=stable-privacy 
NAME=ens192 
UUID=48315650-6871-4892-8975-34627ba60d88 
DEVICE=ens192 
ONBOOT=yes 
IPADDR=10.0.0.1 ← IPアドレスが設定されています。 
PREFIX=24 
PEERDNS=yes 
PEERROUTES=yes 
IPV6_PEERDNS=yes 
IPV6_PEERROUTES=yes 
[root@centos7 network-scripts]#

 

 

【補足】nmcli コマンドで指定するデバイスは「nmcli device」コマンドの「接続」の部分

例えば、以下のようなデバイス名の場合は「eth0」ではなく「System eth0」になります。

[root@ip-10-0-2-20 network-scripts]# nmcli device 
DEVICE  TYPE      STATE      CONNECTION 
eth0    ethernet  connected  System eth0  ← ”System eth0″ がデバイス名になります。
lo      loopback  unmanaged  — 
[root@ip-10-0-2-20 network-scripts]# nmcli connection modify eth0 ipv4.address 10.0.2.20/24  ← eth0 を指定するとエラーになります。
Error: unknown connection ‘eth0’. 
[root@ip-10-0-2-20 network-scripts]# nmcli connection modify “System eth0” ipv4.address 10.0.2.20/24  ← ”System eth0″ を指定します。
[root@ip-10-0-2-20 network-scripts]# cat ifcfg-eth0 
# Created by cloud-init on instance boot automatically, do not edit. 

BOOTPROTO=dhcp 
DEVICE=eth0 
HWADDR=06:D6:66:B2:70:1A 
ONBOOT=yes 
TYPE=Ethernet 
USERCTL=no 
PROXY_METHOD=none 
BROWSER_ONLY=no 
IPADDR=10.0.2.20 
PREFIX=24 
DEFROUTE=yes 
IPV4_FAILURE_FATAL=no 
IPV6INIT=no 
NAME=”System eth0″ 
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 
[root@ip-10-0-2-20 network-scripts]#

 

以下の記事で設定しました。

 

【AWS】AWS で Sophos インストール&設定手順(ELBとWEBサーバ間に配置する)【Part.2】

 

 

 

 

DHCP から手動 IP アドレス設定に変更する

デフォルトでは「DHCP」になっているので、手動で IP アドレスを割り当てる設定にします。

「nmcli connection modify」コマンドで「DHCP」から「手動(manual)」に設定を変更します。

 

※OS のバージョンは Redhat 7.5系です。

# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)

 

以下のように「ipv4.address 172.31.2.20/24」を一緒に付ける必要があります。

nmcli connection modify “System eth0” ipv4.method manual ipv4.address 172.31.2.20/24

 

BOOTPROTO 「none」になりました。

# cat ifcfg-eth0
# Created by cloud-init on instance boot automatically, do not edit.
#
BOOTPROTO=none ← none に変わっています。
DEVICE=eth0
HWADDR=0E:21:6D:55:72:50
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=”System eth0″
UUID=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
IPADDR=172.31.2.20
PREFIX=24

 

 

以下のように「ipv4.address 172.31.2.20/24」を付けないと以下のようなエラーが出力されます。

# nmcli connection modify “System eth0” ipv4.method manual
Error: Failed to modify connection ‘System eth0’: ipv4.addresses: this property cannot be empty for ‘method=manual’

 

 

※しかし、7.0系など比較的7系の若いバージョンの場合は以下のように「ipv4.address xxx.xxx.xxx.xxx/xx」の引数がなくてもコマンド実行が可能です。

[root@centos7 network-scripts]# nmcli connection modify ens192 ipv4.method manual

 

 

「ifcfg-ens192」ファイルの中を確認します。

[root@centos7 network-scripts]# cat ifcfg-ens192 
TYPE=Ethernet 
BOOTPROTO=none ← BOOTPROTO が「dhcp」から「none」(マニュアル)に変更されています。 
DEFROUTE=yes 
IPV4_FAILURE_FATAL=no 
IPV6INIT=yes 
IPV6_AUTOCONF=yes 
IPV6_DEFROUTE=yes 
IPV6_FAILURE_FATAL=no 
IPV6_ADDR_GEN_MODE=stable-privacy 
NAME=ens192 
UUID=48315650-6871-4892-8975-34627ba60d88 
DEVICE=ens192 
ONBOOT=yes 
IPADDR=10.0.0.1 
PREFIX=24 
IPV6_PEERDNS=yes 
IPV6_PEERROUTES=yes 
[root@centos7 network-scripts]#

各仮想マシン上で同じように設定をして DRBD ネットワークを構築します。

 

 

IPアドレスを設定する(すでにデバイスファイルが存在する場合)

次に IP アドレスを設定します。

# nmcli connection modify eth0 ipv4.addresses 192.168.51.61/24
# nmcli connection modify eth1 ipv4.addresses 192.168.151.61/24

ちなみに IP アドレスの変更に関しては、コマンド実行後にすぐには反映されません。

反映させるためには「systemctl restart network.service」コマンドを実行しますが、設定がすべて完了してから最後に反映します。

 

IPアドレス を含む各設定を手動(manual)に変更する

OSをインストールした直後は「BOOTPROTO=DHCP」になっています。

以下のように「method manual」オプションのコマンドを実行すると「BOOTPROTO=none」(手動設定、スタティック)になります。

# nmcli connection modify eth0 ipv4.method manual
# nmcli connection modify eth1 ipv4.method manual

※IPアドレスを設定する前にこのコマンドを実行すると「Error: Failed to modify connection ‘eth0’: ipv4.address: ‘method=manual’」というエラーが出ます。

 

NICの自動起動の設定

OSをインストールした直後は「ONBOOT=no」の状態になっています。

この設定を「ONBOOT=yes」に変更します。

# nmcli connection modify eth0 connection.autoconnect yes
# nmcli connection modify eth1 connection.autoconnect yes

 

 

 

 

 

 

デフォルトゲートウェイの設定

NICにデフォルトゲートウェイを設定します。

# nmcli connection modify eth1 ipv4.gateway 192.168.151.254

 

ネットワーク構成図はこうでした。

eth1に対してデフォルトゲートウェイ「192.168.151.254」を割り当てます。

【仮想環境】【CentOS7】nmcli コマンドを使用して複数NIC環境の設定をする手順

 

 

スタティックルートの設定

以下のようなネットワーク構成の場合、スタティックルートを設定しないと「192.168.1.0/24」「192.168.10.0/24」のネットワークへアクセスできません。

スタティックルートの設定も「nmcli」コマンドで設定できます。

しかも「自動的」に /etc/sysconfig/network-scripts ディレクトリに「route-ethX」ファイルが作成されます。

非常に便利です。

【仮想環境】【CentOS7】nmcli コマンドを使用して複数NIC環境の設定をする手順

 

下記のコマンドで「192.168.0.0/24」ネットワーク宛のパケットは、すべて「192.168.51.254」に向けて送信します。

# nmcli connection modify eth0 ipv4.routes “192.168.0.0/16 192.168.51.254”

このコマンドを実行すると /etc/sysconfig/network-scripts/ ディレクトリに「route-eth0」ファイルが作成されます。

実際に作成された「route-eth0」ファイルの中身を見てみます。

[root@test07 network-scripts]# cat route-eth0
ADDRESS0=192.168.0.0
NETMASK0=255.255.0.0
GATEWAY0=192.168.51.254

 

 

 

DNSの設定

まだまだネットワークの設定は続きます。

すべて nmcli コマンドで設定することができます。

次は DNS の設定(ネームサーバーの設定)をします。

プライマリ DNS サーバー(192.168.1.11)、セカンダリ DNS サーバー(192.168.1.12)の登録をします。

# nmcli connection modify eth1 ipv4.dns “192.168.1.11 192.168.1.12”

気を付けるべき点は、2つ同時に設定するという部分です。

1つずつ設定しようとすると、「追加」ではなく「上書き」方式なので、最初に設定した値が上書きで消えてしまいます。

たとえば、3つの DNS サーバーを登録したい場合は、3つの IP アドレスを1コマンドで設定します。

あとは、最初の値(IP アドレス)が、プライマリ DNS サーバーになるということです。

 

[root@test07 network-scripts]# cat ifcfg-eth1
TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
IPV6_ADDR_GEN_MODE=”stable-privacy”
NAME=”eth1″
UUID=”5da93180-192d-4961-9211-8521be319a4b”
DEVICE=”eth1″
ONBOOT=”yes”
DNS1=192.168.1.11 ← プライマリ DNS サーバー
DNS2=192.168.1.12 ← セカンダリ DNS サーバー
IPADDR=192.168.151.61
PREFIX=24
GATEWAY=192.168.151.254
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

 

この DNS サーバーの設定変更は「systemctl restart network.service」コマンドを実行するまで反映されません。

「/etc/resovl.conf」ファイルも元のままです。

 

[root@test07 network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
search flets-east.jp iptvf.jp
nameserver 8.8.8.8 ← 元のままです。 
nameserver 8.8.4.4 ← 元のままです。

 

 

ネットワークの設定変更の反映

設定が完了したら最後に設定を反映させます。

# systemctl restart network.service

 

[root@test07 network-scripts]# cat ifcfg-eth1
TYPE=”Ethernet”
BOOTPROTO=”none”
DEFROUTE=”yes”
IPV4_FAILURE_FATAL=”no”
IPV6INIT=”yes”
IPV6_AUTOCONF=”yes”
IPV6_DEFROUTE=”yes”
IPV6_FAILURE_FATAL=”no”
IPV6_ADDR_GEN_MODE=”stable-privacy”
NAME=”eth1″
UUID=”5da93180-192d-4961-9211-8521be319a4b”
DEVICE=”eth1″
ONBOOT=”yes”
DNS1=192.168.1.11 ← DNSサーバーが更新されています。
DNS2=192.168.1.12 ← DNSサーバーが更新されています。
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.1
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no

 

/etc/resolv.conf を確認します。

[root@test07 network-scripts]# cat /etc/resolv.conf
# Generated by NetworkManager
search flets-east.jp iptvf.jp
nameserver 192.168.1.11 ← 更新されています。
nameserver 192.168.1.12 ← 更新されています。

 

 

NetworkManagerを使う場合の注意点

手動で「/etc/resolv.conf」ファイルなどを編集しても、NetworkManagerが持っている情報でファイルが上書きされてしまうことがあります。

【例】

[root@test07 ~]# cat /etc/resolv.conf
# Generated by NetworkManager ← NetworkManager が設定をしていることを示しています。

 

 

 

ヒューマンエラー防止のため「NetworkManager」を「停止」して「net-tools」をインストールしても良い

目的は人数の多い組織でサーバーを運用管理することなら、無理に CentOS7 からやり方を変えて「NetworkManager」を起動して「nmcli」コマンドを使う必要はありません。

急に「CentOS6」でちゃんとできていた運用を捨てて「CentOS7」からよく分からない方法を使う必要はありません。

 

しかも突然 CentOS7 から、「RedHat社が推奨しているので nmcli コマンドを使いましょう」と宣言しても、それぞれのメンバーの手順がバラバラなら遅かれ早かれ障害が発生するでしょう。

 

私は新しい技術に手を出して障害を発生させてサービスを止めるよりも、安定した手順で確実に運用管理をする方がはるかにいいと思います。

 

 

ネットワークインターフェイスの確認方法

nmcli コマンドでネットワークインターフェイスを設定したら、同じ「nmcli」コマンドで設定を確認します。

 

基本的なネットワークインターフェイスの設定確認

まずは基本的な設定を確認するコマンドからです。

[root@test07 ~]# nmcli device
デバイス   タイプ     状態       接続
ens160     ethernet   接続済み   ens160
lo         loopback   管理無し   —

[root@test07 ~]# nmcli device show ens160 ← ネットワークインターフェイスを指定します。
GENERAL.デバイス:              ens160
GENERAL.タイプ:                ethernet
GENERAL.ハードウェアアドレス:  00:0C:29:AF:89:22
GENERAL.MTU:                   1500
GENERAL.状態:                  100 (接続済み)
GENERAL.接続:                  ens160
GENERAL.CON パス:              /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.キャリア:     オン
IP4.アドレス[1]:               192.168.1.10/24
IP4.ゲートウェイ:              192.168.1.1
IP4.DNS[1]:                    8.8.8.8
IP4.DNS[2]:                    192.168.1.1
IP6.ゲートウェイ:
IP6.DNS[1]:                    2404:1a8:7f01:b::3
IP6.DNS[2]:                    2404:1a8:7f01:a::3

 

 

更に詳しく接続状態を確認する場合は「nmcli device」ではなく「nmcli connection ~」コマンドを実行します。

[root@test07 ~]# nmcli connection show ens160
connection.id: ens160
connection.uuid: 5da93180-192d-4961-9211-8521be319a4b
connection.stable-id: —
connection.interface-name: ens160
connection.type: 802-3-ethernet
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.timestamp: 1503409855
connection.read-only: no
connection.permissions:
connection.zone: —
connection.master: —
connection.slave-type: —
connection.autoconnect-slaves: -1 (default)
connection.secondaries:
connection.gateway-ping-timeout: 0
connection.metered: 不明
connection.lldp: -1 (default)
802-3-ethernet.port: —
802-3-ethernet.speed: 0
802-3-ethernet.duplex: —
802-3-ethernet.auto-negotiate: yes
802-3-ethernet.mac-address: —
802-3-ethernet.cloned-mac-address: —
802-3-ethernet.generate-mac-address-mask:–
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu: 自動
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype: —
802-3-ethernet.s390-options:
802-3-ethernet.wake-on-lan: 1 (default)
802-3-ethernet.wake-on-lan-password: —
ipv4.method: manual
ipv4.dns: 8.8.8.8,192.168.1.1
ipv4.dns-search:
ipv4.dns-options: (デフォルト)
ipv4.dns-priority: 0
ipv4.addresses: 192.168.1.10/24
ipv4.gateway: 192.168.1.1
ipv4.routes: { ip = 192.168.0.0/16, nh = 192.168.51.254 }
ipv4.route-metric: -1
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: —
ipv4.dhcp-timeout: 0
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: —
ipv4.dhcp-fqdn: —
ipv4.never-default: no
ipv4.may-fail: yes
ipv4.dad-timeout: -1 (default)
ipv6.method: auto
ipv6.dns:
ipv6.dns-search:
ipv6.dns-options: (デフォルト)
ipv6.dns-priority: 0
ipv6.addresses:
ipv6.gateway: —
ipv6.routes:
ipv6.route-metric: -1
ipv6.ignore-auto-routes: no
ipv6.ignore-auto-dns: no
ipv6.never-default: no
ipv6.may-fail: yes
ipv6.ip6-privacy: 0 (無効)
ipv6.addr-gen-mode: stable-privacy
ipv6.dhcp-send-hostname: yes
ipv6.dhcp-hostname: —
ipv6.token: —
GENERAL.名前: ens160
GENERAL.UUID: 5da93180-192d-4961-9211-8521be319a4b
GENERAL.デバイス: ens160
GENERAL.状態: アクティベート済み
GENERAL.デフォルト: はい
GENERAL.デフォルト6: はい
GENERAL.VPN: いいえ
GENERAL.ゾーン: —
GENERAL.DBUS パス: /org/freedesktop/NetworkManager/ActiveConnection/0
GENERAL.CON パス: /org/freedesktop/NetworkManager/Settings/1
GENERAL.スペックオブジェクト: /
GENERAL.マスターパス: —
IP4.アドレス[1]: 192.168.1.10/24
IP4.ゲートウェイ: 192.168.1.1
IP4.DNS[1]: 8.8.8.8
IP4.DNS[2]: 192.168.1.1
IP6.ゲートウェイ:
IP6.DNS[1]: 2404:1a8:7f01:b::3
IP6.DNS[2]: 2404:1a8:7f01:a::3
DHCP6.オプション[1]: dhcp6_client_id = 0:4:69:63:b4:18:db:f0:e4:ee:f:50:6d:94:4d:19:85:88
DHCP6.オプション[2]: dhcp6_name_servers = 2404:1a8:7f01:b::3 2404:1a8:7f01:a::3
DHCP6.オプション[3]: requested_dhcp6_name_servers = 1
DHCP6.オプション[4]: requested_dhcp6_domain_search = 1
DHCP6.オプション[5]: requested_dhcp6_client_id = 1
DHCP6.オプション[6]: dhcp6_sntp_servers = 2404:1a8:1102::b 2404:1a8:1102::a
DHCP6.オプション[7]: dhcp6_domain_search = flets-east.jp. iptvf.jp.
DHCP6.オプション[8]: dhcp6_server_id = 0:3:0:1:0:19:e7:13:6c:1b
[root@test07 ~]#

 

 

 

ルートの設定を確認する(ルーティングテーブルを見る)

ルーティングテーブルは「route」コマンドでも確認できます。

[root@test07 ~]# route -n
Kernel IP routing table
Destination    Gateway         Genmask          Flags   Metric  Ref  Use Iface
0.0.0.0        192.168.1.1     0.0.0.0          UG      100     0    0   ens160
192.168.1.0    0.0.0.0         255.255.255.0    U       100     0    0   ens160

 

 

「ip route(ip r)」コマンドでもルーティングの設定を確認できます。

[root@test07 ~]# ip route
default via 192.168.1.1 dev ens160 proto static metric 100
192.168.1.0/24 dev ens160 proto kernel scope link src 192.168.1.10 metric 100

 

 

 

ip a コマンドを実行したら「down」だったので「up」にするコマンド

サーバーと通信できないため、コンソールからログインしてネットワークインターフェイスの状況を調べたら「down」していた場合です。

「nmcli connection up <デバイス名>」でインターフェイスを「up」することができます。

[root@test07 ~]# nmcli connection up ens160
接続が正常にアクティベートされました (D-Bus アクティブパス: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@test07 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
        valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:0c:29:af:89:22 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global ens160
        valid_lft forever preferred_lft forever
    inet6 2408:210:8105:9500:268b:5f3a:6aac:c7b1/64 scope global noprefixroute dynamic
        valid_lft 2591956sec preferred_lft 604756sec
    inet6 fe80::80ec:1873:ccf:1eb5/64 scope link
        valid_lft forever preferred_lft forever
[root@test07 ~]#

 

 

 

 

nmtui コマンド

CentOS7 からは「nmtui」コマンドも使えるようになりました。

私はあまりお勧めしません。

確かに便利ですが、欠点としてはコマンドラインで再現できないというところです。

historyコマンドでも何をやったのかが出てきません。

手順書としては再現できますが、その場合は「IPアドレスに●●を入力する」→ 「OK」を選択するというような手順になります。

個人が自分専用の CentOS7 を管理する分にはいいかもしれませんが組織が大きくなると、誰が何をしたのかが見えにくくなります。

その結果、ヒューマンエラーが発生する確率が高くなります。

 

nmtuiコマンドの使い方

コンソールにログインし、「nmtui」コマンドを実行します。

CentOS7 nmtui コマンドの使い方

 

ネットワークを編集する場合は「Edit a connection」を選択します。

CentOS7 nmtui コマンドの使い方

 

 

編集したいインターフェイスを選択します。

※複数のネットワークインターフェイスを持っている場合は複数表示されます。

CentOS7 nmtui コマンドの使い方

 

下図のような感じでネットワークの設定をします。

CentOS7 nmtui コマンドの使い方

 

 

 

まとめ

nmcli コマンド 1つでネットワーク関連の設定はすべて可能です。

以前まで、ネットワークの設定はファイルを編集する方がいいと思っていましたが、CentOS7になり「nmcli」コマンドですべての設定が可能ということを知り、「nmcli」コマンドで設定する方が運用的にいいと思うようになりました。

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (1件)

  • AWSに構築したCentOS7のDNS設定で、Error: unknown connectionが発生してしまい煮詰まりそうな所で記事を拝見させて頂きました。
    nmcli deviceで表示されるCONNECTIONの値を設定すると言う事がよくわかりました。
    ありがとうございました。

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください