RHEL6から変更になったネットワーク設定をRHEL5と同じに戻す
目次
概要
ネットワークインタフェースを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インストール直後の設定ファイルです。
NETWORKING=yes
HOSTNAME=rhel6-sv
GATEWAY=192.168.0.1 ←デフォルトゲートウェイの設定
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
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の設定ファイルです。
NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=rhel5-sv GATEWAY=192.168.0.1
# 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に(個人的に)これまで見たことのない設定が並んでいます。
NETWORKING=yes HOSTNAME=rhel6-sv GATEWAY=192.168.0.1
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アドレスの対応を定義するファイルとして 下記ファイルが追加されました。
# 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
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
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 ←正しく設定された
想定通りデフォルトゲートウェイが設定されました。