グローバルIPとローカルIPをひとつのethにエイリアスで振り分けた

利用した環境

Ubuntuのネットワークの設定


単純にエイリアスをはることはifconfigコマンドでできますが再起動したら設定が消えてしまいます

一時的にエイリアス


設定する方法
今回はeth0とloのネットワークが存在しました。
eth0にはグローバルIPを設定しており、研究室内のローカル環境で通信したいのにわざわざ研究室から出て大学で管理しているGWを通って研究室のネットワークに戻ってくるという経路が増えてしまう状態になっていました。
私は困ることはないのですが、友人がローカル上で通信したいとのことだったのでIPをエイリアスで増やすことを考えました。
今回初めてエイリアスの設定をしたのでメモとしてこの記事を書こうかと思います。
eth1とか増やすと意味がわからなくなりそうなので(できるのか?)eth0:0に設定することにしました。
eth0にはグローバルIP、eth0:0にはローカルIPを振り分けます。

 ifconfig eth0:0 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255

これでローカルIPを追加しました
netstatで確認します。

# netstat -r
カーネルIP経路テーブル
受信先サイト ゲートウェイ ネットマスク フラグ MSS Window irtt インタフェース
グローバルIP * 255.255.255.128 U 0 0 0 eth0
192.168.0.128 * 255.255.255.128 U 0 0 0 eth0
link-local * 255.255.0.0 U 0 0 0 eth0
default グローバルIPgw 0.0.0.0 UG 0 0 0 eth0

ifconfigでも確認をします

# ifconfig -a
eth0 Link encap:イーサネット ハードウェアアドレス 00:1e:4f:ce:d1:74
inetアドレス:グローバルIP ブロードキャスト:グローバル マスク:255.255.255.128
inet6アドレス: fe80::21e:4fff:fece:d174/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:4780 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:1252 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:716639 (716.6 KB) TXバイト:168894 (168.8 KB)
割り込み:16

eth0:0 Link encap:イーサネット ハードウェアアドレス 00:1e:4f:ce:d1:74
inetアドレス:192.168.0.10 ブロードキャスト:192.168.0.255 マスク:255.255.255.128
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
割り込み:16

lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
inet6アドレス: ::1/128 範囲:ホスト
UP LOOPBACK RUNNING MTU:16436 メトリック:1
RXパケット:14981 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:14981 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:0
RXバイト:2079097 (2.0 MB) TXバイト:2079097 (2.0 MB)

一時的に設定する分にはこれで十分ですが再起動すると設定が消えてしまいます。
念のため再起動してみましたが、見事に設定は消えましたw

再起動しても状態を残す


まず、上記のようにifconfigコマンドでネットワークを追加しておきます。
前述したとおりこのままだと再起動で設定が消えてしまうので設定を直接書き込みます。

Ubuntuの場合のネットワークの設定は

/etc/network/interfaces
に書かれています。
初期設定は

auto lo
iface lo inet loopback

となっておりeth0も設定がないのでeth0:0と両方書き込みます。

私が書いた設定は以下の通りになります

auto lo
iface lo inet loopback

auto eth0 #メインで利用するIPの設定
iface eth0 inet static
address 192.168.0.110 #ここはグローバルIPを設定しています
netmask 255.255.255.128
gateway 192.168.0.129 #グローバルIPに利用するGWを書きます
broadcast 192.168.0.255

auto eth0:0 #同じデバイスで違うIPを振る場合に書く内容
iface eth0:0 inet static
address 192.168.0.10
netmask 255.255.255.128
broadcast 192.168.0.255

この様に書いてネットワークを再起動します

 /etc/init.d/networking restart

これで設定は完了です。私はサーバを再起動しても設定が初期化されないか確認しましたが設定は初期化されませんでした。

CentOSの場合


基本的に再起動しても状態を残すと同じですが、Ubuntuとは設定ファイルが別になります。
下記の様に設定ファイルを/etc/sysconfig/network-scripts/配下に新規で作成します。

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

DEVICE=eth0:0
BOOTPROTO=none
ONBOOT=yes
NETWORK=192.168.0.255
NETMASK=255.255.255.128
IPADDR=192.168.0.10

この様に新規で設定ファイルを作成すれば再起動してもネットワークの設定は消えないです。