CentOS 7のネットワーク管理基礎(前編)

2014年12月25日(木)
古賀 政純

/etc/resolv.confファイルの自動更新を抑制する方法

CentOS 7において、参照先のDNSサーバーのIPアドレスがNICに設定されている場合、デフォルトでは、/etc/resolv.confファイルが自動的に更新されるようになっています。しかし、環境によっては、NICの参照先DNSサーバーのIPアドレスの変更に伴う/etc/resolv.confファイルの自動更新を無効にしたい場合があります。以下では、/etc/resolv.confファイルの自動更新を無効にする手順を紹介します。まず、ネットワークインタフェースのeno1に設定されている参照先のDNSサーバーのIPアドレスを確認しておきます。

# nmcli device show eno1 |grep DNS
IP4.DNS[1]:                             10.0.0.254

上記により、eno1に設定されている参照先のDNSサーバーのIPアドレスは、10.0.0.254であることがわかります。デフォルトでは、/etc/resolv.confファイルがNetworkManagerによって自動的に生成されますので、上記のIPアドレスが/etc/resolv.confファイルに記述されているはずです。

# cat /etc/resolv.conf
...
nameserver 10.0.0.254

/etc/resolv.confファイルが自動的に更新されないようにするには、/etc/NetworkManager/NetworkManager.confファイルの[main]の下にdns=noneを記述します。

# vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifcfg-rh
dns=none

次に、eno1が参照するDNSサーバーのIPアドレスを変更しても、/etc/resolv.confファイルが自動的に更新されていないかを確認します。まず、eno1が参照するDNSサーバーのIPアドレスを10.0.0.253に変更します。

# nmcli connection modify eno1 ipv4.dns "10.0.0.253"
# nmcli device show eno1 |grep DNS
IP4.DNS[1]:                             10.0.0.253

NetworkManagerと、ネットワークサービスを再起動します。

# systemctl restart NetworkManager
# systemctl restart network

ネットワークインタフェースのeno1に対して新しく設定した参照先DNSサーバーのIPアドレスである10.0.0.253が、/etc/resolv.confファイルに自動的に設定されていないことを確認します。

# cat /etc/resolv.conf
...
nameserver 10.0.0.254

インタフェースの接続の追加と削除

インタフェースの接続の追加と削除も、nmcliコマンドで行うことが可能です。先程、IPアドレスの変更を行ったばかりのインタフェースeno1を使って操作例を示します。まず、インタフェースの状況を確認します。

# nmcli device
DEVICE  TYPE      STATE        CONNECTION
eno1    ethernet  connected    eno1
eno2    ethernet  connected    eno2
eno3    ethernet  unavailable  --
eno4    ethernet  unavailable  --
lo      loopback  unmanaged    --

インタフェースeno1の接続を削除してみます。接続の削除は、nmcli connectionに「delete」を付与し、削除するインタフェース名を指定します。

# nmcli connection delete eno1
# nmcli device
DEVICE  TYPE      STATE         CONNECTION
eno2    ethernet  connected     eno2
eno1    ethernet  disconnected  -- ←接続が切断されていることがわかる
eno3    ethernet  unavailable   --
eno4    ethernet  unavailable   --
lo      loopback  unmanaged     --

インタフェースeno1は接続が切断され、設定したIPアドレス等も破棄されます。インタフェースeno1に新規に接続を追加し、新たなIPアドレスを付与してみましょう。接続の追加は、nmcli connectionに「add type」を付与します。今回は、1GbEの有線のイーサネットですので、typeとしてethernetを指定します。インタフェース名は、ifnameで指定します。接続名はcon-nameで指定します。今回、接続名は、インタフェース名と同じeno1を指定することにします。

# nmcli connection add type ethernet ifname eno1 con-name eno1
Connection 'eno1' (8724b120-0270-40dc-982a-8a1be7ea1340) successfully added.

eno1のデバイスに対する接続が追加されているかを確認します。

# nmcli device
DEVICE  TYPE      STATE                                  CONNECTION
eno2    ethernet  connected                              eno2
eno1    ethernet  connecting (getting IP configuration)  eno1 ←接続が追加されている
eno3    ethernet  unavailable                            --
eno4    ethernet  unavailable                            --
lo      loopback  unmanaged                              --

接続が追加されたら、インタフェースeno1に対して、IPアドレス等の設定が可能になります。今回は、固定IPアドレスとして192.168.0.82/24、ゲートウェイアドレスとして192.168.0.254を設定してみます。固定IPアドレスを設定するには、ipv4.method manualを付与します。

# nmcli connection modify eno1 ipv4.method manual ipv4.addresses "192.168.0.82/24 192.168.0.254"

設定を反映させます。

# nmcli connection down eno1 && nmcli connection up eno1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/13)

インタフェースにeno1に固定IPアドレスが付与されていることを確認します。

# nmcli device show eno1
GENERAL.DEVICE:                         eno1
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         2C:76:8A:5D:F3:6C
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     eno1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/13
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         ip = 192.168.0.82/24, gw = 192.168.0.254
IP6.ADDRESS[1]:                         ip = fe80::2e76:8aff:fe5d:f36c/64, gw = ::

上記の固定IPアドレスが設定されたインタフェースeno1の設定ファイルは、/etc/sysconfig/network-scripts/ifcfg-eno1として生成されています。

# cat /etc/sysconfig/network-scripts/ifcfg-eno1
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno1
UUID=8724b120-0270-40dc-982a-8a1be7ea1340
DEVICE=eno1
ONBOOT=yes
IPADDR0=192.168.0.82
PREFIX0=24
GATEWAY0=192.168.0.254
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

nmcliコマンドでホスト名の設定を行う

CentOS 6までは、ホスト名の設定を/etc/sysconfig/networkファイルに記述していましたが、CentOS 7では、/etc/hostnameファイルに記述するようになりました。/etc/hostnameファイルを直接編集してもよいのですが、CentOS 7では、nmcliコマンドでホスト名を設定します。以下は、nmcliコマンドで、ホスト名を設定する例を紹介します。まず、現在、設定されているホスト名を表示します。

# nmcli general hostname
centos70n02.jpn.linux.hp.com

ホスト名を「centos70n254.jpn.linux.hp.com」に変更します。

# nmcli general hostname centos70n254.jpn.linux.hp.com

ホスト名が変更されたかどうかをhostnameコマンドで確認します。また、/etc/hostnameファイルの中身も確認します。

# hostname
centos70n254.jpn.linux.hp.com

# cat /etc/hostname
centos70n254.jpn.linux.hp.com

このように、IPアドレス、デフォルトゲートウェイ、DNS、ルーティング、ホスト名等の設定をnmcliコマンドだけで一通り行うことができますので、設定ファイルのパラメータの記述方法や複数のコマンドを覚える負担を減らすことができます。しかも、nmcliコマンドは、それに続く引数の候補をキーボード入力のTABキー補完で表示してくれますので、従来の管理手法に比べ、習得のハードルが大幅に下がっています。nmcliコマンドに慣れると設定ファイルの記述方法を覚える必要がなくなるため、非常に便利です。是非nmcliコマンドを使いこなしてみて下さい。

nmtuiによる設定

先述のnmcliコマンドは、大量の管理対象サーバーのネットワーク設定を自動化する場合に威力を発揮しますが、管理対象サーバーが少数で、直感的な操作で1台ずつ設定を行いたいという場合は、nmtuiを利用するのがよいでしょう。nmtuiは、ネットワーク設定を行うサービスであるNetworkManagerデーモンに対して様々な指示を行うことでネットワークの設定を行うアプリケーションです。nmtuiは、GNOMEターミナルやTera Term等のターミナルエミュレータ内で起動すると、テキストベースの分かりやすいGUIが起動します。GUIでは、メニューの選択や空欄に値を入れることで、簡単にネットワーク設定を行うことが可能となっています。nmtuiの起動は、コマンドラインからnmtuiを入力します。nmtuiは、NetworkManager-tuiパッケージに含まれています。

# nmtui

nmtuiのGUIがターミナルエミュレータ内に表示されます。設定画面内で、キーボードの上下左右キーを使ってカーソルを合わせ、パラメータを入力することができます。

図3:nmtuiのGUIメニューのトップ画面。シンプルで分かりやすいメニューになっている

図4:nmtuiで、インタフェースeno1のIPアドレス等を設定している様子

日本ヒューレット・パッカード株式会社 プリセールス統括本部 ソリューションセンター OSS・Linux担当 シニアITスペシャリスト

兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師を担当。科学技術計算サーバーのSI経験も持つ。2005年、大手製造業向けLinuxサーバー提案で日本HP社長賞受賞。2006年、米国HPからLinux技術の伝道師に与えられる「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。日本HPプリセールスMVPを4度受賞。現在は、Linux、FreeBSD、Hadoop等のOSSを駆使したスケールアウト型サーバー基盤のプリセールスSE、技術検証、技術文書執筆を担当。日本HPのオープンソース・Linuxテクノロジーエバンジェリストとして講演活動も行っている。Red Hat Certified Engineer、Red Hat Certified Virtualization Administrator、Novell Certified Linux Professional、EXIN Cloud Computing Foundation Certificate、HP Accredited Systems Engineer Cloud Architect、Red Hat Certified System Administrator in Red Hat OpenStack、Cloudera Certified Administrator for Apache Hadoop認定技術者。HP公式ブログ執筆者。趣味はレーシングカートとビリヤード

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています