インターフェイスに複数の IP アドレスを割り当てる (CentOS 5.5) - Linux の使い方


IP エイリアスを利用して仮想インターフェイスを設定する

CentOS 5.5 では、ひとつのネットワークインターフェイスに複数の IP アドレスを設定することができるようになっています。

これは Linux の "IP エイリアス" という機能を利用して、ひとつのネットワークインターフェイス、たとえば "eth0" であれば、それに "eth0:0" や "eth0:1" といったインターフェイスを仮想的に用意して、それぞれに固定 IP を設定することができるようになる仕組みです。

 

CentOS 5.5 の場合、通常のネットワークインターフェイスと同じように、"/etc/sysconfig/network-scripts/" ディレクトリ内に "ifcfg-インターフェイス名" という形で設定ファイルを用意します。

この時、設定ファイル名のインターフェイス名や、その設定ファイル内の "DEVICE" で指定するデバイス名には、"eth0:番号" という形式で、仮想ネットワークインターフェイス名を指定するところに注意します。

 

仮想インターフェイスの番号は、通常 "0" からの通し番号で設定するようですので、たとえば "eth0:0" を設定したい場合には、次のような内容で "/etc/sysconfig/network-scripts/ifcfg-eth0:0" を用意します。

DEVICE=eth0:0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.0.6

NETMASK=255.255.255.0

BROADCAST=192.168.0.255

あとは、CentOS 5.5 の場合には、次のコマンドを実行して、ネットワーク設定をシステムに反映させます。このとき、稀にネットワークの有効化に失敗することがあるようなので、リモートで設定を行うときには十分注意が必要です。

service network restart

または、次のようにして、ネットワーク設定の全体ではなく、追加した "eth0:0" の有効化だけを図ることも可能と思います。

ifup eth0:0

こうすることで、従来の "eth0" に加えて、仮想ネットワークインターフェイス "eth0:0" が利用できるようになります。

設定の際の注意点としては、仮想ネットワークインターフェイスについては、"BOOTPROTO" を "static" に設定して、必ず固定で IP アドレスを設定してあげないといけないところでしょうか。

IP アドレスを設定しなかったり、または DHCP からの自動取得にしたりすると、"error in ifcfg-eth0:0: didn't specify device or ipaddr" というエラーメッセージが表示されてしまうようでした。

また、"DEVICE" のところを "eth0:0" にし忘れて eth0 などにしてしまうと、設定を反映した際に、従来の "eth0" インターフェイスを見失うことがあるため、既に稼働中のサーバーで設定を行う場合などには注意が必要です。

 

なお、"ipconfig" コマンドを使って、次のようにして直接的に仮想ネットワークインターフェイスを設定することも可能です。

ifconfig eth0:0 192.168.0.6 netmask 255.255.255.0 broadcast 192.168.0.255

このようにすることで、仮想ネットワークインターフェイス "eth0:0" が追加され、利用できるようになります。

ただしこの場合、再起動すると設定内容が消えてしまうので、再起動後もこの仮想ネットワークインターフェイスを利用する場合には、"/etc/rc.d/rc.local" 等の起動時に実行されるスクリプト内で、起動の都度、このコマンドが実行されるようにする必要があります。