OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

RHEL6から変更になったネットワーク設定をRHEL5と同じに戻す

カテゴリ:OSSセットアップ | ソフトウェア:Linux | タグ:
最終更新日:2020/11/18 | 公開日:2013/07/07

目次

概要

 ネットワークインタフェースを2つ搭載したサーバに Red Hat Enterprise Linux 6.4 x86_64をインストールしたところ、 設定ファイル上のデフォルトゲートウェイと 実際にLinuxが使用しているデフォルトゲートウェイが異なるという 問題が発生しました。

 原因を調べていたところ、RHEL6から「NetworkManager」という機能が 採用されており、ネットワーク接続を自動化してくれているようです。 ただサーバとしてLinuxを利用する場合、ネットワーク接続が コロコロ変わるということはないため、必要性を感じません (不勉強なだけで実は便利な機能があるのかもしれませんが)。

 NetworkManager機能自体は不要であれば無効化すれば良いと思いますが、 ちょっと困ったのはNetworkManagerに対応するために ネットワーク周りの設定ファイルの書式が変わってしまっていることです。

 実際、RHEL6.4を最小構成でインストールすると、NetworkManager機能自体は インストールされませんでしたが、設定ファイル(ifcfg-ethX)は NetworkManager対応の書式になっていました。 RHEL6.4インストール時に各ネットワークインタフェース毎のゲートウェイを 設定するようになっていますが、デフォルトゲートウェイの設定が なかったので変だな?とは思ったのですが。

 ここではRHEL5とRHEL6のネットワーク設定ファイルの違いを紹介しつつ、 NetworkManager対応の書式になってしまったネットワークの 設定ファイルをRHEL5の時と同じ書式に戻す手順を紹介します。

構成

サーバ構成

OSバージョン

Red Hat Enterprise Linux 6.4 x86_64
Red Hat Enterprise Linux 5.9 x86_64 ※比較のために使用

発生した問題

 前述したとおり、ネットワーク設定ファイルのデフォルトゲートウェイと 実際に認識しているデフォルトゲートウェイが異なっていました。 以下のファイルはRHEL6.4インストール直後の設定ファイルです。

ファイル名:/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rhel6-sv
GATEWAY=192.168.0.1 ←デフォルトゲートウェイの設定
ファイル名:/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=18a2bfcf-6035-4dbd-a107-2866868d2468
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.0.53
PREFIX=24
GATEWAY=192.168.0.1 ←eth0のゲートウェイの設定
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0C:29:5D:0B:58
ファイル名:/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
UUID=716efa24-cef5-4811-840d-ce3605b2e890
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=172.16.1.53
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"
HWADDR=00:0C:29:5D:0B:62
GATEWAY=172.16.1.1 ←eth1のゲートウェイの設定
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      *               255.255.255.0   U     0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         172.16.1.1      0.0.0.0         UG    0      0        0 eth1 ←実際のデフォルトゲートウェイ

設定ファイルの比較

 RHEL5.9とRHEL6.4の設定ファイルを比較してみます。 いずれもインストール直後の状態です。

Red Hat Enterprise Linux 5.9 x86_64の場合

 昔ながらの見慣れたLinuxの設定ファイルです。

ファイル名:/etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=rhel5-sv
GATEWAY=192.168.0.1
ファイル名:/etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82545EM Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=static
BROADCAST=172.16.2.255
HWADDR=00:0C:29:3E:E5:FF
IPADDR=172.16.2.71
NETMASK=255.255.255.0
NETWORK=172.16.2.0
ONBOOT=yes

Red Hat Enterprise Linux 6.4 x86_64の場合

 networkファイルは変わりませんが、ifcfg-eth0に(個人的に)これまで見たことのない設定が並んでいます。

ファイル名:/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rhel6-sv
GATEWAY=192.168.0.1
ファイル名:/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
UUID=18a2bfcf-6035-4dbd-a107-2866868d2468
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.0.53
PREFIX=24
GATEWAY=192.168.0.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:0C:29:5D:0B:58

 また『eth0』や『eth1』のようなデバイス名称とMACアドレスの対応を定義するファイルとして 下記ファイルが追加されました。

ファイル名:/etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:5d:0b:62", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:5d:0b:58", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

設定変更

設定

 これまでの内容を踏まえて、RHEL6.4の定義ファイルを書き直します。 networkファイルは編集しません。

# cd /etc/sysconfig/network-scripts/
# vi ifcfg-eth0
ファイル名:/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.0.255
HWADDR=00:0C:29:5D:0B:58
IPADDR=192.168.0.53
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
# vi ifcfg-eth1
ファイル名:/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth0
BOOTPROTO=static
BROADCAST=172.16.1.255
HWADDR=00:0C:29:5D:0B:58
IPADDR=172.16.1.53
NETMASK=255.255.255.0
NETWORK=172.16.1.0
ONBOOT=yes

 設定変更したらnetworkサービスを再起動します。

# service network restart
インターフェース eth0 を終了中:                            [  OK  ]
インターフェース eth1 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                          [  OK  ]
インターフェース eth1 を活性化中:                          [  OK  ]
# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.1.0      *               255.255.255.0   U     0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     1002   0        0 eth0
link-local      *               255.255.0.0     U     1003   0        0 eth1
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0 ←正しく設定された

 想定通りデフォルトゲートウェイが設定されました。