高機能なLinuxベースのソフトウェアルーター「Vyatta」を使う

専用サーバーサービスを使って複数のサーバーを利用している場合や、サーバー上に仮想マシンを複数稼働させてネットワークを構築しているといった場合、仮想的なルーターを利用できると便利なことが多い。本記事では仮想マシン上にインストールして利用できるLinuxベースのソフトウェアルーター「Vyatta」を使い、専用サーバーのネットワーク上にルーターを設置する方法を紹介する。

Linuxベースのソフトウェアルーター「Vyatta」を使う

ネットワーク環境を構築する場合、インターネットに直接接続されている必要の無いマシンについてはローカルネットワークを作成してそこに接続するのが一般的だ。これにより、マシンへの不適切なアクセスを防ぐことができ、セキュリティを向上させることができる。たとえば「さくらの専用サーバ」ではローカル接続機能が提供されており、複数台のサーバーをローカルネットワークで接続することが可能だ。これを利用することで、ローカルネットワークだけに接続され、インターネットとは直接通信を行えないサーバーを用意することができる。このような構成の場合、ローカルネットワークだけに接続されたマシンはインターネットに接続されたマシンをルーターとして使用し、このマシンを経由することでインターネットに接続できる(図1)。

図1 ローカル接続機能を利用し、インターネットから特定のマシンを切り離す構成
図1 ローカル接続機能を利用し、インターネットから特定のマシンを切り離す構成

 元々Linuxにはルーターとしての機能も搭載されており、たとえばNATを利用したい場合はiptables、DHCPサーバーを提供したい場合はdhcpdなどのソフトウェアを利用することでLinuxマシンをルーターとして利用することが可能だ。しかし、これらはそれぞれ個別のソフトウェアとして提供されるため、インストールや設定などをそれぞれ行う必要があり手間がかかってしまう。そこで最近注目されているのが、ルーターとして必要なソフトウェアやその統一的な設定ツールを含むLinuxディストリビューション「Vyatta」だ。VyattaはDebian GNU/Linuxをベースに独自の管理インターフェイスやソフトウェアの組み込みといったカスタマイズを行ったもので、ルーターとして必要な設定を統一的に管理することができる。VyattaはLinuxベースということで、仮想環境上に容易にインストールできるのも特徴だ。そのため、仮想マシンを複数運用している環境で仮想ルーターとして利用する例も増えている。

本記事では、このVyattaを仮想マシン上にインストールし、ルーターとして利用する方法について紹介していく。

今回作成するネットワーク構成

今回作成するネットワーク構成では、1台のサーバーのみがインターネットに直接接続される。このサーバー上でKVMを利用して稼働させている仮想マシンにVyattaをインストールし、ルーターとして利用する(図2)。

図2 今回作成するネットワーク構成
図2 今回作成するネットワーク構成

 また、Vyattaをインストールした仮想マシンはブリッジ接続を使用してWAN側のネットワークとローカルネットワークの両方にアクセスできるように設定しておく。これにより、Vyattaをルーターとして利用できるようになる。

なお、仮想マシンのホストとするLinuxディストリビューションにはRed Hat Enterprise Linux(RHEL)互換のCentOS 6.3を使用している。また、仮想化ソフトウェアにはRHEL(およびその互換OS)が標準でサポートしているKVMを使用している。

仮想化ソフトウェアやネットワークの事前準備

今回は仮想マシン上にVyattaをインストールしていくので、まず事前に仮想化関連のパッケージをインストールしておく必要がある。必要なパッケージは表1のとおりだ。

表1 仮想環境の利用に必要なパッケージ
パッケージ名 説明
qemu-kvm KVM本体
qemu-img ディスクイメージ管理ツール
libvirt ハイパーバイザや仮想マシンにアクセスするためのライブラリ
virt-manager 仮想マシンを監視するGUIツールを提供する
libvirt-client 仮想マシンを管理するクライアントを提供する

これらはyumコマンドでインストールできる。

# yum install qemu-kvm qemu-img libvirt virt-manager libvirt-client

インストールが完了したら、仮想マシンを管理するサービスであるlibvirtdを起動しておく。

# chkconfig libvirtd on
# service libvirtd start

以上で仮想化関連の設定は完了だ。

ネットワークインターフェイスの設定

仮想マシン上のネットワークインターフェイス(仮想NIC)を実ネットワークに接続する方法にはいくつかがあるが、今回はブリッジネットワークを使用する。ブリッジネットワークは、ホストマシン上に仮想的に作成したブリッジインターフェイスをホストのNICおよび仮想マシン上の仮想NICに接続することで、仮想NICを直接インターネットやローカルネットワークに接続できるようにするものだ。これにより、仮想マシンをインターネットとローカルネットワークをつなぐルーターとして利用できるようになる。

なお、RHEL 6およびその互換OSでは、ネットワークを管理するためのNetworkManagerというツールが用意されているのだが、このツールはブリッジネットワークの管理には対応していないため、今回は使用できない。NetworkManagerを利用している場合はNetworkManagerを無効にしておこう。

ネットワークインターフェイスの設定は、/etc/sysconfig/network-scriptsディレクトリ内の設定ファイルを追加/編集することで行う。まず、インターネット側のNIC(eth0)に接続するブリッジデバイスであるbr0の設定を「/etc/sysconfig/network-scripts/ifcfg-br0」というファイルに記述する。記述する設定内容はリスト1のとおりだ。なお、太字の個所は環境に応じて適宜変更してほしい。

リスト1 /etc/sysconfig/network-scripts/ifcfg-br0の内容

DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=203.0.113.1 #WAN側のIPアドレス
NETMASK=255.255.255.0 #WAN側のネットマスク
GATEWAY=203.0.113.128 #WAN側のゲートウェイ

ここで、IPアドレスおよびネットマスク、ゲートウェイなどは使用する環境に応じて適切に設定しておく。通常はいままでeth0に設定されていたものと同じものを指定すれば良い。

同様にして、ローカルネットワーク側のNIC(eth1)に接続するブリッジデバイスbr1の設定を記述したファイル「/etc/sysconfig/network-scripts/ifcfg-br1」を作成し、ここにリスト2のような内容を記述する。

リスト2 /etc/sysconfig/network-scripts/ifcfg-br1の内容

DEVICE=br1
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.100.1 #ローカルネットワーク側のIPアドレス
NETMASK=255.255.255.0 #ローカルネットワーク側のネットマスク

こちらも、IPアドレスやネットマスク、ゲートウェイの値については今までeth1に設定されていたものと同じものを指定する。

最後に、/etc/sysconfig/network-scripts/ifcfg-eh0および/etc/sysconfig/network-scripts/ifcfg-eth1の内容をリスト3、4のように修正し、作成したブリッジネットワークに接続するように設定を変更する。

リスト3 /etc/sysconfig/network-scripts/ifcfg-eh0の内容

DEVICE=eth0
BRIDGE=br0
ONBOOT=yes
HWADDR=<NICのMACアドレス>

リスト4 /etc/sysconfig/network-scripts/ifcfg-eh1の内容

DEVICE=eth1
BRIDGE=br1
ONBOOT=yes
HWADDR=<NICのMACアドレス>

なお、ここでHWADDR行にはそれぞれのNICのMACアドレスを「**:**:**:**:**:**」といった形式で指定しておく。

これら設定ファイルの修正が完了したら、ネットワークを再起動する。

# service network restart

再起動が完了したら、NICやブリッジが正しく設定されているかどうかをifconfigコマンドで確認しておこう。

# ifconfig
br0 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet addr:203.0.113.1 Bcast:203.0.113.255 Mask:255.255.255.240
inet6 addr: ****::***:****:****:****/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14366 errors:0 dropped:0 overruns:0 frame:0
TX packets:9117 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1348559 (1.2 MiB) TX bytes:1416806 (1.3 MiB)

br1 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet addr:192.168.100.100 Bcast:192.168.100.255 Mask:255.255.255.0
inet6 addr: ****::***:****:****:****/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:12535 errors:0 dropped:0 overruns:0 frame:0
TX packets:13159 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1092804 (1.0 MiB) TX bytes:1085957 (1.0 MiB)

eth0 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet6 addr: ****::***:****:****:****/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:29002511 errors:0 dropped:0 overruns:0 frame:0
TX packets:4747322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3928090032 (3.6 GiB) TX bytes:1370901150 (1.2 GiB)
Interrupt:18 Memory:ef900000-ef920000

eth1 Link encap:Ethernet HWaddr **:**:**:**:**:**
inet6 addr: ****::***:****:****:****/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:55848811 errors:0 dropped:0 overruns:0 frame:0
TX packets:53780265 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4395197819 (4.0 GiB) TX bytes:4142896905 (3.8 GiB)
Interrupt:20 Memory:efb00000-efb20000

また、ブリッジインターフェイスの状況はbrctl showコマンドで確認できる。

# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.00224d67eab2 no eth0
br1 8000.00224d67eab3 no eth1

この結果から、br0がeth0に、br1がeth1に正しく接続されていることが分かる。

Vyattaのダウンロードとインストール

Vyattaはオープンソースで開発されており、Vyatta.orgのダウンロードページから無償でダウンロードできる。VyattaはISOイメージ形式で配布されており、32ビット版のLive CDおよびVirtualization版、そして64ビット版の3種類が提供されている。今回は仮想マシン上にインストールを行うため、「 Virtualization ISO」版をダウンロードして利用する。ダウンロードしたISOファイルは、仮想マシンの実行を行う「qemu」ユーザーがアクセスできるようそのパーミッションやディレクトリのパーミッションを設定しておく。たとえば今回は/var/isoというディレクトリを作成し、そこにダウンロードしたISOファイルを格納している。

# mkdir /var/iso
# mv vyatta-livecd-virt_VC6.5R1_i386.iso /var/iso
# chmod 644 /var/iso/vyatta-livecd-virt_VC6.5R1_i386.iso

Vyattaの仮想マシンへのインストールは、仮想マシンの新規作成とインストールを同時に実行するvirt-installコマンドを使用する。virt-installコマンドでは、作成する仮想マシンに割り当てるメモリ容量や仮想CPU数、割り当てるディスクの容量などを事前に決めておく必要がある。Vyattaの実行に必要な基本的なハードウェア要件についてはVyattaのWebサイト内に記載されているが、簡単にまとめると表2のようになっている。

表2 Vyattaの実行に必要な基本的なハードウェア要件
構成例 メモリ ストレージ CPUコア数
NIC×1~4、最大100ルーティングルール、基本的なファイアウォール 512MB 2GB 1コア
NIC×2~6、最大10000ルーティングルール、ファイアウォールおよびNAT 1GB 2GB以上 1~2コア
NIC×6~10、インターネット規模のルーティング、ファイアウォールおよびNAT、VPN、IPS 2GB 2GB以上 2~4コア
10以上のNIC、複数のBGPピアを使用するルーティング、複雑なファイアウォールおよびNAT、VPN、IPS 4GB 4GB以上 4~8コア

今回は最小構成であるメモリ512MB、ストレージ2GB、CPU1コアという構成で仮想マシンを作成することとする。このようなスペックで仮想マシンを作成して指定したISOイメージから仮想マシンをブートするには、次のようにvirt-installコマンドを実行する。

# virt-install \
> --name=Vyatta01 \
> --disk path=/var/lib/libvirt/images/vyatta65.dsk,size=2 \
> --vcpus=1 \
> --ram=512 \
> --cdrom=/var/iso/vyatta-livecd-virt_VC6.5R1_i386.iso \
> --network bridge=br0 \
> --os-type=linux \
> --os-variant=debiansqueeze

ここで指定しているオプションの意味とその値については表3のとおりだ。

表3 virt-installコマンドで指定したオプションとその値
オプション名 説明 指定した値
--name 作成する仮想マシンの名称 Vyatta01
--disk 使用する仮想ストレージの作成先およびその容量(GB単位)の指定 path=/var/lib/libvirt/images/vyatta65.dsk,size=2
--vcpus 割り当てる仮想CPU数 1
--ram 割り当てるメモリ 512
--cdrom ブートに使用するISOイメージ /var/iso/vyatta-livecd-virt_VC6.5R1_i386.iso
--network 仮想NICの接続方式 bridge=br0
--os-type ゲストOSの種別 linux
--os-variant ゲストOSのバージョン debiansqueeze

なお、--diskオプションではpathオプションで作成するディスクイメージのパスを指定し、さらにsizeオプションでそのサイズをGB単位で指定する。また、--networkオプションで「bridge=br0」と指定することでブリッジ接続を使用した仮想NICが作成され、その仮想NICがbr0ブリッジデバイスに接続されるようになる。そのほか、今回使用しているVyatta 6.5はDebian GNU/Linux 6.0(Squeeze)をベースにしているため、--os-variantには「debiansqueeze」を指定している。

virt-installコマンドによる仮想マシンの作成とCD-ROMからのブートに成功すると、次のように作成された仮想マシンのコンソールに接続された状態となり、ブート時のメッセージが表示されたあとログインプロンプトが表示される。

Connected to domain Vyatta01
Escape character is ^]

Booting from DVD/CD...

ISOLINUX 4.02 debian-20101014 ETCD Copyright (C) 1994-2010 H. Peter Anvin et al
ISOLINUX 4.02 debian-20101014 Copyright (C) 1994-2010 H. Peter Anvin et al
P
Prreessss <F1>control and F then 1 for help, or ENTER to boot:

Welcome to Vyatta - vyatta ttyS0

vyatta login:

ログインプロンプトが表示されたら、ユーザー名「vyatta」、パスワード「vyatta」でVyattaのシステムにログインし、installコマンドでインストールを行う。

なお、Vyattaのインストール方法としては「system」および「image」の2種類が提供されている。前者は一般的なLinuxと同様、ハードディスクにファイルシステムを作成して必要なファイルをインストールするものだ。いっぽう後者はVyattaの構成ファイルをディスクイメージの状態でHDD内にインストールし、unionfsを使ってそのディスクイメージを/(ルート)にマウントするという構成になる。unionfsはリードオンリーのディレクトリを別の書き込み可能なディレクトリにマウントすることで、リードオンリーのディレクトリ中に含まれるファイルやディレクトリを仮想的に変更可能なように見せる機構だ。imageインストールを利用した場合、複数のディスクイメージをHDD内にインストールして複数環境を同居させられる点や、初期状態に簡単に戻せる点などがメリットとなる。

どちらの場合もインストール作業やVyattaの使い方に違いは無いが、今回はストレージを容易に差し替えられる仮想マシン上にVyattaをインストールということで、systemインストールを利用することにする。systemインストールを実行するには、Vyattaへのログインを行った後に以下のように「system」オプション付きでinstallコマンドを実行する。するとインストーラが起動し、以下のように対話的にインストールの際の設定が尋ねられる。その際に[]内で表示されているのがデフォルトの設定値で、何も入力せずにEnterキーを押すとその値が使用される。

$ install system
Welcome to the Vyatta install program. This script
will walk you through the process of installing the
Vyatta image to a local hard drive.

Would you like to continue? (Yes/No) [Yes]:
Probing drives: OK
Looking for pre-existing RAID groups...none found.
The Vyatta image will require a minimum 1000MB root.
Would you like me to try to partition a drive automatically
or would you rather partition it manually with parted? If
you have already setup your partitions, you may skip this step.

Partition (Auto/Union/Parted/Skip) [Auto]:

I found the following drives on your system:
vda 2147MB

通常はすべてデフォルトの設定値で問題無いが、ディスクの初期化を確認するところだけはデフォルトが「No」になっているので気を付けたい。

Install the image on? [vda]:

This will destroy all data on /dev/vda.
Continue? (Yes/No) [No]: Yes

How big of a root partition should I create? (1000MB - 2147MB) [2147]MB:

Creating a new disklabel on vda
parted /dev/vda mklabel msdos
Creating filesystem on /dev/vda1: OK
Mounting /dev/vda1
Copying system files to /dev/vda1:
97% [=================================================> ]
OK
I found the following configuration files
/opt/vyatta/etc/config/config.boot
Which one should I copy to vda? [/opt/vyatta/etc/config/config.boot]:

また、インストール後に使用できるデフォルトのユーザーとしては「vyatta」が用意される。途中でこのユーザー用に設定するパスワードが尋ねられるので、適切なものを入力しておこう。

Enter password for administrator account
Enter password for user 'vyatta':
Retype password for user 'vyatta':
I need to install the GRUB boot loader.
I found the following drives on your system:
vda 2147MB

Which drive should GRUB modify the boot partition on? [vda]:

Setting up grub: OK
Done!
$

インストールが完了すると再度プロンプトが表示されるので、poweroffコマンドを実行してシャットダウンを行おう。

$ poweroff

以上でインストール作業は完了だ。

Vyattaの起動と停止

仮想マシン上にインストールしたVyatta環境の起動と停止、再起動についても説明しておこう。仮想マシンを起動させるには、virsh startコマンドを使用する。

virsh start <仮想マシン名>

たとえば「Vyatta01」という名前で作成した仮想マシンを起動するには、以下のようにする。

# virsh start Vyatta01

起動した仮想マシンのコンソールにアクセスするには、まずvirsh listコマンドで仮想マシンのIDを調べる。

# virsh list
Id Name State
----------------------------------------------------
4 Vyatta01 running

この場合、Vyatta01という仮想マシンには4というIDが割り当てられている。続いてこのIDを指定してvirsh consoleコマンドを実行することで、仮想マシンのコンソールにアクセスできる。

# virsh console 4
Connected to domain Vyatta01
Escape character is ^]

Welcome to Vyatta - vyatta ttyS0

vyatta login:

なお、コンソールから抜けるにはCtrl+]を入力すれば良い。

Vyattaでは、Linuxのshutdownコマンドやrebootコマンドを使ってシャットダウンや再起動を行えるほか、独自の「poweroff」や「reboot」といったコマンドでこれらの操作を行える。たとえば再起動を行うには、以下のようにrebootコマンドを実行すれば良い。

$ reboot

NICの追加

virt-installコマンドで作成された仮想マシンでは、デフォルトでは1つの仮想NICが搭載されている。しかし、仮想マシンをルーターとして利用するには複数のNICが必要だ。そこで、仮想マシンの設定ファイルを編集してNICを追加する作業を行っておく。仮想マシンのハードウェア構成や設定を変更するには、仮想マシンを停止させた状態でvirsh editコマンドを実行する。virsh editコマンドの引数には、設定を変更したい仮想マシンの名前を指定する。

# virsh edit <仮想マシン名>

たとえばVyatta01という仮想マシンの設定を変更するには、以下のようにする。

# virsh edit Vyatta01

virsh editコマンドを実行するとテキストエディタ(デフォルトではvi)が起動し、そこで設定ファイルの編集を行っていく。この設定ファイルにはXML形式で仮想マシンの名前やメモリ容量、仮想CPU数といったハードウェア構成や仮想ディスクの設定、仮想NICの設定などが記述されている。仮想NICの設定は、以下の「interface」要素として記述されている。

<interface type='bridge'>
<mac address='52:54:00:d8:dd:e9'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

仮想NICを追加するには、このinterface要素の次に以下のような新たにinterface要素を追加すれば良い。

<interface type='bridge'>
<mac address='52:54:00:d8:dd:f0'/>
<source bridge='br1'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>

なお、太字の個所は環境に応じて適切なものに変更しておく必要がある。mac要素のaddress属性には仮想NICに割り当てるMACアドレスを、address要素のslot属性には仮想PCIスロットIDを指定する。設定ファイル内ではほかにもaddress要素を使って接続する仮想PCIスロットを指定しているものがあるので、重複しないよう値を設定しておく。また、3つ以上の仮想NICを利用したい場合は同様にして必要な数だけinterface要素を追加すれば良い。

設定ファイルの修正・保存を行ってエディタを終了すると、自動的に変更した設定が保存される。続いて仮想マシンを起動し、正しく追加した仮想NICが認識されているかどうかを確認しておこう。Vyatta上で接続されているNICを確認するには、以下のようにshow interfacesコマンドを実行すれば良い。

$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth0 - u/u
eth1 - u/u
lo 127.0.0.1/8 u/u
::1/128

ここでは「Interface」欄にeth0およびeth1の2つが表示されており、2つの仮想NICが認識されていることが分かる。

Vyattaの設定

Vyattaのコンソールはハードウェアルーターのコンソール画面を意識したものとなっており、それらと似たようなコマンドライン体系を持っている。また、Tabキーでの補完機能も用意されている。たとえば、プロンプトで何も表示されていない状態でTabキーを押すと、次のようにコマンド一覧が表示される。

$
Possible completions:
add Add an object to a service
clear Clear system information
clone Clone an object
configure Enter configure mode
connect Establish a connection
copy Copy an object
delete Delete an object
disconnect Take down a connection
force Force an operation
format Format a device
generate Generate an object
install Install a new system
monitor Monitor system information
ping Send IPv4 Internet Control Message Protocol (ICMP) echo request
poweroff Poweroff the system
reboot Reboot the system
release Release specified variable
rename Rename an object
renew Renew specified variable
reset Reset a service
restart Restart a service
set Set operational options
show Show system information
telnet Telnet to a node
traceroute Track network path to node
update Update data for a service

Vyattaのコンソールでは、各種情報の表示や管理コマンドを実行できるOperational mode(運用モード)と、各種設定を行うためのConfiguration mode(設定モード)の2つを適宜切り替えて操作を行うことになる。ログイン直後は運用モードになっているが、設定モードに切り替えるにはconfigureコマンドを実行する。

$ configure
[edit]
#

設定モードではプロンプトが「#」になり、またプロンプトの前に「[edit]」という文字列が表示され、実行できるコマンドも異なるものとなる。たとえば設定モードでTabキーを押して利用できるコマンド一覧を表示させると以下のようになる。

#
Possible completions:
confirm Confirm prior commit-confirm
comment Add comment to this configuration element
commit Commit the current set of changes
commit-confirm
Commit the current set of changes with 'confirm' required
compare Compare configuration revisions
copy Copy a configuration element
delete Delete a configuration element
discard Discard uncommitted changes
edit Edit a sub-element
exit Exit from this configuration level
load Load configuration from a file and replace running configuration
loadkey Load user SSH key from a file
merge Load configuration from a file and merge running configuration
rename Rename a configuration element
rollback Rollback to a prior config revision (requires reboot)
run Run an operational-mode command
save Save configuration to a file
set Set the value of a parameter or create a new element
show Show the configuration (default values may be suppressed)

設定モードから運用モードに戻るには、exitコマンドを実行すれば良い。

# exit
exit
vyatta@vyatta:~$

NICの設定

ルーターの設定において、まず最低限必要なのがNICの設定だ。設定モードでは、ネットワークインターフェイス関連の設定をshow interfacesコマンドで確認できる。

# show interfaces
interfaces {
ethernet eth0 {
hw-id 52:54:00:d8:dd:e9
}
ethernet eth1 {
hw-id 52:54:00:d8:dd:f0
}
loopback lo {
}
}

ここではNICの認識はされているものの、そのIPアドレスについてはまだ設定されていないことが分かる。NICにIPアドレスなどを設定するには、設定モードでset interfacesコマンドを使用する。たとえばeth0に203.0.113.100/24というIPアドレスを指定するには、次のようにする。

# set interfaces ethernet eth0 address 203.0.113.100/24
[edit]
# set system gateway-address 203.0.113.128
[edit]
# set system name-server 203.0.113.2
[edit]
# set system name-server 203.0.113.3
[edit]

実行例中で太字の部分は環境に応じて変更して欲しいが、まず最初の「set interfaces ethernet eth0 address」コマンドでは、eth0に割り当てるIPアドレスを指定している。続く「set system gateway-address」行ではデフォルトゲートウェイアドレスを、 「set system name-server」行では使用するネームサーバーを指定している。これらのコマンドを、使用するそれぞれのNICに対して実行しておく。

設定が完了したら、最後にcommitコマンドを実行して変更を反映される。また、saveコマンドを実行して変更した設定をファイルに保存しておく。これにより、再起動後もこの設定がロードされるようになる。

vyatta@vyatta# commit
[edit]
vyatta@vyatta# save
Saving configuration to '/config/config.boot'...
Done

NATの設定

Vyattaには標準でNATの機能が備えられており、簡単な設定でNATを実現できる。たとえば今回の例では以下のようにset nat sourceコマンドで設定を行えば良い。

set nat source rules <ルール番号> address <NAT元のアドレス>
set nat source rules <ルール番号> translation addresss masquerade

ここでルール番号には適当な数値を、NAT元のアドレスはNATの対象とするIPアドレスを指定する。たとえば192.168.100.0/24というネットワークに所属するマシンからのIPパケットに対しNATを行うには、次のようにする。

# set nat source rule 50 source address 192.168.100.0/24
[edit]
# set nat source rule 50 translation address masquerade
[edit]
# commit
[edit]
# save
Saving configuration to '/config/config.boot'...
Done
[edit]

NAT設定を確認するには、show natコマンドを実行すれば良い。

# show nat
source {
rule 50 {
outbound-interface eth0
source {
address 192.168.100.0/24
}
translation {
address masquerade
}
}
}

これだけで、ローカルネットワーク内のマシンからインターネットへのNATを介した接続が可能になる。

静的NATを行う

インターネットからローカルネットワーク内のマシンで稼働させているサービスへの接続を行いたい場合、ルーターで静的なNATを設定するのが一般的だ。たとえばルーターのIPアドレスが203.0.113.100で、サービスを稼働させているマシンのIPアドレスが192.168.100.21、稼働させているサービスのポート番号が80番だった場合、203.0.113.100の80番ポート宛のパケットを192.168.100.21の80番ポートに転送することで、インターネットからの接続が可能になる。このような設定は、以下のようにset nat destinationコマンドで行える。

# set nat destination rule 60 inbound-interface eth0
[edit]
# set nat destination rule 60 destination address 203.0.113.100
[edit]
# set nat destination rule 60 destination port 80
[edit]
# set nat destination rule 60 protocol tcp
[edit]
# set nat destination rule 60 translation address 192.168.100.21
[edit]
# set nat destination rule 60 translation port 80
[edit]

なお、実行例中太字の部分は環境に応じて適宜変更してほしい。行った設定はshow natコマンドで確認できる。

# show nat
+destination {
+ rule 60 {
+ destination {
+ address 133.242.98.142
+ port 80
+ }
+ inbound-interface eth0
+ protocol tcp
+ translation {
+ address 192.168.100.21
+ port 80
+ }
+ }
+}
source {
rule 50 {
outbound-interface eth0
source {
address 192.168.100.0/24
}
translation {
address masquerade
}
}
}

ここで問題がなければcommitコマンドで設定を反映させ、saveコマンドで保存しておく。

# commit
[edit]
# save
Saving configuration to '/config/config.boot'...
Done
[edit]

ハードウェアルーターが持つ一通りの機能を備えるVyatta、Debian GNU/Linuxのパッケージも利用可能

今回はVyattaの基本的な使い方のみを説明したが、Vyattaにはこのほかファイアウォール(パケットフィルタ)やVPNなどの機能も用意されている。また、VyattaはDebian GNU/Linuxをベースとしており、apt-getコマンドを使って任意のソフトウェアパッケージをインストールして利用することも可能だ。そのため、さまざまな応用例が期待できる。複数台の専用サーバーを利用している場合だけでなく、仮想化ソフトウェアを使ってサーバー上で複数台の仮想マシンを運用している場合などにも活用できるだろう。

なお、Vyattaは商用サポート付きのVyatta Subscription Editionも用意されている。もしサポートが必要であれば、こちらの利用も検討すると良いだろう。

おしらせ

banner_vps