スタティックルーティング機能を使ってVyatta & Linuxルータを構築してみよう - 「楽しいさくらのクラウド」(7)

連載「楽しいさくらのクラウド」、前回の「ルータ+スイッチを使ったネットワークを構築してみよう」では、「ルータ+スイッチ」を使ったネットワーク構築について解説しました。「ルータ+スイッチ」を利用することにより、スイッチに接続されたサーバにグローバルIPアドレスを割り当てるネットワークも簡単に作成できることがお分かりいただけたかと思います。

今回は、前回説明しきれなかった「ルータ+スイッチ」に含まれる機能のひとつである「スタティックルーティング」機能を使い、Linuxや、ソフトウェアルータの「Vyatta」をルータとしたネットワークを作成する方法について解説したいと思います。

1. 「ルータ+スイッチ」と「スタティックルーティング」機能

「スタティックルーティング」機能は、「ルータ+スイッチ」に付属する機能のひとつで、新たに割り当てたIPアドレスブロックのルーティング先を、スイッチに接続されたいずれかの機器に設定することができる機能です。

前回までに作成した、「ルータ+スイッチ」で割り当てられた203.0.113.0/28ネットワークは、「ルータ+スイッチ」に付属するルータにより配下のサーバへ接続しています。

図1 「ルータ+スイッチ」構成のネットワーク

 
このネットワークに「スタティックルーティング」機能による新たなIPアドレスブロック198.51.100.0/28が追加され、そのIPアドレスブロックのネクストホップとして「ルータ+スイッチ」に接続したLinuxルータを指定した状態が以下の図となります。

図2 「スタティックルーティング」を追加したネットワーク

 
これにより、Linuxルータがルータとして適切な設定が行われていれば、Linuxルータ配下のスイッチに接続された198.51.100.0/28ネットワーク内のサーバに接続が可能となります。

このように、スタティックルーティング機能で割り当てたIPアドレスに対しては、「ルータ+スイッチ」に付属するルータを使用せず、ユーザが独自に構築したLinuxサーバや、高機能なソフトウェアルータ「Vyatta」などをルータとして使用するネットワークの構築が可能となります。これにより、Linuxルータ内でiptablesなどのLinuxのファイアウォール機能を活用したり、VPNや高度なルーティングプロトコルが簡単に利用できるVyattaをルータにすることでよりニーズにより適合した柔軟なネットワーク構築が可能となります。もちろん、独自のルータを使用するだけではなく、IPアドレスブロックを丸ごと1台のサーバに割り当てる設定も行えます。

2. ネットワーク構成を計画する

それではこれまでの連載の通り、最終的にどのような構成にするかをネットワーク構成図として書き出してみます。

図3 ネットワーク構成図

 
今回も、前回まで作成した構成を基に拡張を進めます。まず、1台のLinuxサーバをルータに転用し、このサーバの2枚目のNICに新たに作成する198.51.100.0/28ネットワーク用のスイッチとサーバを接続します。スタティックルーティング機能で設定するネクストホップは、このLinuxルータの203.0.113.0/28ネットワーク側のIPアドレス203.0.113.9を指定します。

※「ルータ+スイッチ」と同様、スタティックルーティング機能で割り当てられるIPアドレスブロックは作成時に自動的に決定され、事前に任意のIPアドレスブロックを指定することはできません。上の図では便宜的に、作成後に割り当てられるIPアドレスブロックを記載した状態としています(前回同様、例示用のIPアドレスは2個ともRFC 5737で定められたドキュメンテーションアドレスブロックを使用しています)。

3. ネットワーク構築

構成図が完成したら、さくらのクラウド上に構成図に従ってネットワークを構築します。

1. 新たなリソースの作成とネットワーク構成

前回の構築状態から必要となる新たなリソースは以下のとおりです。

  • Linuxルータ(NIC1枚を追加) 1台
  • 198.51.100.0/28ネットワーク用スイッチ 1台
  • 198.51.100.0/28ネットワーク内のサーバ 2台

ルータとなるLinuxサーバへのNICの追加やスイッチとサーバの新規作成、そしてこれらをネットワークで接続する必要がありますが、こちらの手順についてはこれまでの連載の記事を参照してください。

構築完了後は「マップ」画面を表示し、構成図通りの表示となっていることを確認します。

図4 「マップ」画面

 

2. スタティックルーティング機能の設定

前回構築したルータ+スイッチにスタティックルーティング機能で新たなIPアドレスブロック(198.51.100.0/28)を割り当て、それを配下のLinuxルータにスタティックルートを設定します。

前回逆引き設定を行った、ルータ+スイッチ詳細画面の「IPアドレス」タブをクリックします。右下に「スタティックルート追加」ボタンがあるので、これをクリックします。

図5 「IPアドレス」タブ画面

 
スタティックルート追加設定のダイアログボックスが表示されるので、それぞれの項目で

  • プリフィックス: /28 (16IP)
  • ネクストホップ: 203.0.113.9

を選択します。ネクストホップは203.0.113.0/28ネットワーク接続側のLinuxルータのIPアドレスとなります。

図6 スタティックルート追加画面

 
選択後、「追加」ボタンをクリックすると、新たなIPアドレスブロックが割り当てられ、それがネクストホップに指定されたサーバにルーティングされるようになります。スタティックルーティングが設定された「ルータ+スイッチ」の「IPアドレス」タブの上部にはスタティックルーティング機能で追加されたIPアドレスブロックの切り替えボタンが新たに表示され、対象のIPアドレスブロックのボタンをクリックすることで、「ルータ+スイッチ」で割り当てられたIPアドレスブロックと同様に逆引き設定が行えます。

図7 スタティックルートで追加されたIPアドレスブロック

 
また、画面下部の「ネクストホップ変更」ボタンからはネクストホップに指定されたIPアドレスの変更、「削除」ボタンからはスタティックルーティング設定の削除と割り当てられたIPアドレスブロックの削除をそれぞれ行うことができます。

4. サーバの設定

これで、コントロールパネルからの操作が必要な手順は全て完了しました。ここからは各サーバを起動し、サーバ側の設定を進めていきます。

1. IPアドレスの利用計画

スタティックルーティング機能を使用することにより、IPアドレスブロック「198.51.100.0/28」が新規に割り当てられました。ルータを使用したネットワーク構成とする場合、ネットワークアドレスなどいくつかの予約IPアドレスが必要となるため、割り当てられたIPアドレス全てをルータ配下のサーバに割り当てることができません。そこで、まずはIPアドレスの利用計画を立て、割り当てるIPアドレスを間違えないようにしておきます。

  • 198.51.100.0: ネットワークアドレス(使用不可)
  • 198.51.100.1: ゲートウェイ(Linuxルータの198.51.100.0/28ネットワーク側NICに割り当て)
  • 198.51.100.2: サーバ3
  • 198.51.100.3: サーバ4
  • 198.51.100.4~14: 空き
  • 198.51.100.15: ブロードキャストアドレス

2. Linuxルータの設定

まずは、Linuxルータをルータとして使用できるように設定します。設定のポイントごとに手順を示すと

  1. 追加側NIC(eth1)に198.51.100.0/28ネットワークのゲートウェイアドレス198.51.100.1を設定
  2. NIC間(eth0⇔eth1)でパケットの転送が行われるようにカーネルパラメータを設定

となります。

追加側NIC(eth1)へのIPアドレス設定

/etc/sysconfig/network-scripts/ifcfg-eth1に以下の設定を行います。

DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
NETMASK=255.255.255.240
IPADDR=198.51.100.1

設定後、ネットワークサービスを再起動させ、設定を反映します。

# service network restart

NIC間のパケット転送設定

NIC間のパケット転送を有効にするには、カーネル設定ファイル/proc/sys/net/ipv4/ip_forwardの内容が"1"である必要があります。デフォルトでは"0"(無効)となっているので、設定内容を確認し、"1"に変更します。変更後はすぐに設定が反映されます。

# cat /proc/sys/net/ipv4/ip_forward 
0
# echo 1 > /proc/sys/net/ipv4/ip_forward 
# cat /proc/sys/net/ipv4/ip_forward 
1

また、サーバの再起動後も設定が有効となるように、/etc/sysctl.confファイル内のnet.ipv4.ip_forward指示子の設定値を"1"に変更し、保存します。

# Controls IP packet forwarding
net.ipv4.ip_forward = 1

3. サーバへのIPアドレス設定

2台のサーバへIPアドレスを設定します。作成後はネットワーク情報が未設定のため、連載第5回で解説した「モニタ」機能を使用して設定を進めていきます。

サーバ3・サーバ4のゲートウェイアドレス設定

/etc/sysconfig/networkのGATEWAY行を変更し、Linuxルータのeth1側のIPアドレスを設定します。

GATEWAY=198.51.100.1

サーバ3のIPアドレス設定

/etc/sysconfig/network-scripts/ifcfg-eth0を以下のように変更し、サーバ3のIPアドレス198.51.100.2を設定します。

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
NETMASK=255.255.255.240
IPADDR=198.51.100.2

サーバ4のIPアドレス設定

/etc/sysconfig/network-scripts/ifcfg-eth0を以下のように変更し、サーバ3のIPアドレス198.51.100.3を設定します。

DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
NETMASK=255.255.255.240
IPADDR=198.51.100.3

4. 設定の確認

サーバ3またはサーバ4からpingを打つなど、外部との疎通があることを確認します。

# ping www.sakura.ad.jp
PING www.sakura.ad.jp (210.224.168.100) 56(84) bytes of data.
64 bytes from www.sakura.ad.jp (210.224.168.100): icmp_seq=1 ttl=54 time=27.8 ms
64 bytes from www.sakura.ad.jp (210.224.168.100): icmp_seq=2 ttl=54 time=27.6 ms

これでLinuxをルータとして動作させることができました。Linuxルータが特定のネットワークのパケットが全て通過するゲートウェイとしての役割を持つことにより、前述のファイアウォール機能を活用したり、配下のサーバのキャッシュ、ロードバランシングを行うなど、多様な機能を持たせることができるようになります。

5. Vyattaを活用する

それではVyattaをルータに使用したネットワーク構成にしてみましょう。さくらのクラウドではVyattaの非商用・オープンソース版である「Vyatta Core 6.5R1(32bit、6rdパッチ適用済版)」をアーカイブとして提供しているため、CentOSやUbuntuサーバの作成と同様の操作で簡単に準備することができます。

この項では、これまでの手順で作成したLinuxルータをVyattaに置き換えた場合の構成で構築作業を進めていきます。

1. Vyattaの作成

VyattaはDebianをベースに開発されたソフトウェアルータのため、通常のIAサーバで動作します。そのため、さくらのクラウドにおいてはLinuxサーバと同様の手順で作成を進めます。

Vyattaはほとんどの場合、サーバはプラン1(1Core 1GBメモリ)で十分な性能を発揮し、ディスクサイズも通常は20GBで問題はありません。必要なサーバのスペックの選択後は、「アーカイブ選択」の項目で「Vyatta Core 6.5R1 32bit (6rd対応)」を選択し、続いて作成するサーバの設定を行います。

図8 アーカイブ選択で「Vyatta」を選択

 
ディスク修正機能ではLinuxと同様に、ホスト名やパスワード、IPアドレスやゲートウェイなどのネットワーク情報をあらかじめ設定しておくことができます。また、今回のようにスイッチに接続する場合は、NICの項目で「スイッチに接続」を選択し、直下のポップアップメニューで接続先のスイッチを選択します。

2. NICの追加

サーバ作成後、198.51.100.0/28ネットワーク側スイッチに接続するNICを追加します。こちらもLinuxサーバと同様の操作となります。

3. ネットワーク構成の変更

先ほど作成したLinuxサーバをVyattaに置き換えたネットワーク構成を再作成します。Vyatta導入後の「マップ」画面は以下のようになります。

図9 Vyatta導入後の「マップ」画面

 

3. Vyattaの設定

ネットワーク構成後、Vyattaを起動し設定作業を進めます。Vyattaではデフォルトのログインユーザが"vyatta"となっているため、こちらのユーザ名と、サーバ作成時に指定したパスワードを使用してログインします。

SSHサービスの開始

VyattaはデフォルトではSSHサーバが起動しておらず、起動後すぐにリモートからSSH接続ができません。そのため「モニタ」でコンソールからログインし、以下のコマンドでSSHサービスを起動します。

$ configure
# set service ssh
# commit

これでVyattaにSSHログインしての作業が行えるようになります。もちろん、安全性向上のためSSHでの作業完了後はSSHサービスを停止する、またはSSHサービスを起動せずにコントロールパネルの「モニタ」経由ですべての作業を行っても問題ありません。

198.51.100.0/28ネットワークの設定

198.51.100.0/28ネットワーク用スイッチを接続したeth1インタフェースに、198.51.100.0/28ネットワークをスタティックルーティング用IPアドレスブロックとして設定を行います。

$ configure
# set interfaces ethernet eth1 address 198.51.100.1/28
# commit

このコマンドを実行することで、Vyattaがルータとして動作するようになります。

Vyattaはルータ以外にも充実したネットワーク機能を持ち、それらを簡単なコマンド操作でサービス開始できることが大きな特長です。強力なネットワーク機能を備えたルータが必要となる場合、有力な候補のひとつに挙げられます。

次回予告

次回は、アーカイブやISOイメージのアップロードなど、ディスク関連の機能について解説する予定です。

【関連記事】
>> 高機能なLinuxベースのソフトウェアルーター「Vyatta」を使う

▼「楽しいさくらのクラウド」シリーズ・バックナンバー
(1)クラウドってなに?
(2)コントロールパネルをさわってみよう
(3)サーバを作ってみよう
(4)サーバを拡張してみよう
(5)スイッチを使ってローカルネットワークを構築してみよう
(6)ルータ+スイッチを使ったネットワークを構築してみよう
(7)スタティックルーティング機能を使ってVyatta & Linuxルータを構築してみよう
(8)アーカイブ・ISOイメージ機能を活用してみよう

おしらせ