2014年4月5日土曜日

CentOS 6系でVIP(仮想IP)を恒久的に設定する方法

1枚のNICに複数のIPアドレスを割り当てたい場合に重宝する設定です。
逆に複数のNICに1つのIPアドレスを割り当てる設定はNICチーミングです。
どちらも昔からある設定なので今更すぎますが・・・。
今回は恒久的に設定する方法を記載します。一時的に設定する方法はこちらです。
VIP(仮想IP)はWebサーバでVirtualHost設定時にIPを個別に割り当てたい場合等で便利です。

OS: CentOS 6.3(64-bit)


■VIP恒久設定用デバイスファイル作成
[root@cent63 ~]# cd /etc/sysconfig/network-scripts/
[root@cent63 network-scripts]# cp -p ifcfg-eth0 ifcfg-eth0:1
[root@cent63 network-scripts]# vi ifcfg-eth0:1
[root@cent63 network-scripts]# cat ifcfg-eth0:1
DEVICE="eth0:1"
BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
HWADDR=00:0C:29:D1:73:7C
IPADDR=192.168.16.136
PREFIX=24
GATEWAY=192.168.16.254
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0:1"
[root@cent63 network-scripts]#
とりあえず、「DEVICE」と「IPADDR」と「NAME」を設定。その他は変更なし。
※ifcfg-eth0:2も同様に準備。

■設定反映
[root@cent63 network-scripts]# /etc/init.d/network restart
インターフェース eth0 を終了中:                          [  OK  ]
インターフェース eth1 を終了中:                          [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                        [  OK  ]
インターフェース eth1 を活性化中:                        [  OK  ]
[root@cent63 network-scripts]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D1:73:7C
          inet addr:192.168.16.36  Bcast:192.168.16.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:27ff:fad2:737c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:50 errors:0 dropped:0 overruns:0 frame:0
          TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4380 (4.2 KiB)  TX bytes:12681 (12.3 KiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:D1:73:86
          inet addr:192.168.7.54  Bcast:192.168.7.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:27ff:fad2:7386/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:180 (180.0 b)  TX bytes:4011 (3.9 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)

[root@cent63 network-scripts]#
反映されない…。(T-T)
調べてみると、CentOS5系までは上記の設定だけでOKだったが、6系からはudevを使用する方式に変更となったらしい。

■udev設定
udev(userspace device management)とは、カーネルがパソコンへの接続を検出したデバイスに対して、 動的に「デバイス・ファイル」を作成して割り当てるための仕組みだそうです。
[root@cent63 ~]# cd /etc/udev/rules.d/
[root@cent63 rules.d]# cp -p 70-persistent-net.rules 70-persistent-net.rules.org
[root@cent63 rules.d]# vi 70-persistent-net.rules
[root@cent63 rules.d]# cat 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 0x15ad:0x07b0 (vmxnet3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d1:73:7c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d1:73:7c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0:1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d1:73:7c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0:2"

# PCI device 0x15ad:0x07b0 (vmxnet3)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d1:73:86", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
[root@cent63 rules.d]#
NAME="eth0"の行をマネして、NAME="eth0:1"とNAME="eth0:2"の行を追加。
設定を反映するにはOSの再起動が必要ですが、デバイスファイルを準備してからにしてください。

■NetworkManagerの停止
NetworkManager (ネットワークマネージャ) は、ネットワークデバイスと接続が利用可能な時に それらをアクティブに維持するよう試行する動的ネットワーク制御及び設定システムです。
⇒ので、サーバOSではほぼ不要です。っというか邪魔。
[root@cent63 ~]# /etc/init.d/NetworkManager stop
NetworkManager デーモンを停止中:                           [  OK  ]
[root@cent63 ~]# chkconfig NetworkManager off; chkconfig --list NetworkManager
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@cent63 ~]#

■VIP恒久設定用デバイスファイル再作成
[root@cent63 ~]# cd /etc/sysconfig/network-scripts/
[root@cent63 network-scripts]# cp -p ifcfg-eth0 ifcfg-eth0:1
[root@cent63 network-scripts]# vi ifcfg-eth0:1
[root@cent63 network-scripts]# cat ifcfg-eth0:1
DEVICE="eth0:1"
BOOTPROTO=static
NM_CONTROLLED="no"
ONBOOT=yes
TYPE="Ethernet"
# UUID="43f82f1f-073f-4494-8500-8f211ec8ede2"
# HWADDR=00:0C:29:D1:73:7C
IPADDR=192.168.16.136
PREFIX=24
# GATEWAY=192.168.16.254
# DNS1=192.168.16.10
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
# NAME="System eth0"
[root@cent63 network-scripts]#
70-persistent-net.rulesに記載したデバイスファイルは必ず準備してください。 でないと再起動後にネットワークに接続できなくなります。
NetworkManager関連等、不要な設定はコメントアウトとしました。
※ifcfg-eth0:2も同様に準備。

■ifcfg-ethxxの説明
## BOOTPROTO
BOOTPROTO には static というオプションはなく、dhcp、bootp、それ以外 となります。
明示的にアドレスを指定する場合は static、アドレスを与えないインターフェスの場合 none としておくのが慣例です。

## NM_CONTROLLED
yesにするとNetwork Managerの管理下に置かれる。今回は停止しているのでこの行をコメントアウトしてもよいが、明示的に"no"としています。

## ONBOOT
起動時にNICを有効化します。

## UUID
NetworkManagerでの識別子に使われるので、設定不要です。

## HWADDR
MACとインターフェースの関連付け。書いておいても問題ないが、udevとの二重管理になるのでコメントアウトしています。

## IPADDR
IPアドレスを指定しています。

## PREFIX
NETMASKと記載してもよいですが、RHEL6(CentOS6系)からはPREFIXが推奨されています。

## GATEWAY
NICごとに個別にゲートウェイを指定する場合はここに記載します。
今回はGateWayが1つなので、/etc/sysconfig/network の設定に従うということでコメントアウト。

## DNS1
NICごとに個別にDNSを指定する場合はここに記載します。
今回はDNSを個別設定しないので、/etc/resolv.conf の設定に従うということでコメントアウト。

## DEFROUTE
このオプションは複数NICを備えるサーバで、デフォルトの通信に利用されるインターフェースを指定します。
yesとしたインターフェースがデフォルト通信用になります。1NICの場合は指定してもしなくてもOK。

## IPV4_FAILURE_FATAL
IPv4の設定に失敗した場合、IPv6の設定を行う。
noで有効(IPv6を設定する)、yesで無効(IPv6を設定しない)

## IPV6INIT
IPv6を利用するか。今回は使用しません。

## NAME
NetworkManagerでの識別子に使われるので、設定不要です。

■設定反映と確認
[root@cent63 network-scripts]# /etc/init.d/network restart
インターフェース eth0 を終了中:                          [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                        [  OK  ]
インターフェース eth1 を活性化中:                        [  OK  ]
[root@cent63 network-scripts]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:D1:73:7C
          inet addr:192.168.16.36  Bcast:192.168.16.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:27ff:fad2:737c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17 errors:0 dropped:0 overruns:0 frame:0
          TX packets:49 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1434 (1.4 KiB)  TX bytes:7410 (7.2 KiB)

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:D1:73:7C
          inet addr:192.168.16.136  Bcast:192.168.16.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth0:2    Link encap:Ethernet  HWaddr 00:0C:29:D1:73:7C
          inet addr:192.168.16.236  Bcast:192.168.16.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

eth1      Link encap:Ethernet  HWaddr 00:0C:29:D1:73:86
          inet addr:192.168.7.54  Bcast:192.168.7.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:27ff:fad2:7386/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:120 (120.0 b)  TX bytes:3894 (3.8 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)

[root@cent63 network-scripts]#
udevを設定することにより、OSを再起動しても設定は保持されるようになります。

こちらの情報が何かのお役に立てましたら幸いです。サイト継続のご協力ありがとうございます。m(_ _)m

0 件のコメント:

コメントを投稿