高機能なLinuxベースのソフトウェアルーター「Vyatta」を使う
専用サーバーサービスを使って複数のサーバーを利用している場合や、サーバー上に仮想マシンを複数稼働させてネットワークを構築しているといった場合、仮想的なルーターを利用できると便利なことが多い。本記事では仮想マシン上にインストールして利用できるLinuxベースのソフトウェアルーター「Vyatta」を使い、専用サーバーのネットワーク上にルーターを設置する方法を紹介する。
目次
Linuxベースのソフトウェアルーター「Vyatta」を使う
ネットワーク環境を構築する場合、インターネットに直接接続されている必要の無いマシンについてはローカルネットワークを作成してそこに接続するのが一般的だ。これにより、マシンへの不適切なアクセスを防ぐことができ、セキュリティを向上させることができる。たとえば「さくらの専用サーバ」ではローカル接続機能が提供されており、複数台のサーバーをローカルネットワークで接続することが可能だ。これを利用することで、ローカルネットワークだけに接続され、インターネットとは直接通信を行えないサーバーを用意することができる。このような構成の場合、ローカルネットワークだけに接続されたマシンはインターネットに接続されたマシンをルーターとして使用し、このマシンを経由することでインターネットに接続できる(図1)。
元々Linuxにはルーターとしての機能も搭載されており、たとえばNATを利用したい場合はiptables、DHCPサーバーを提供したい場合はdhcpdなどのソフトウェアを利用することでLinuxマシンをルーターとして利用することが可能だ。しかし、これらはそれぞれ個別のソフトウェアとして提供されるため、インストールや設定などをそれぞれ行う必要があり手間がかかってしまう。そこで最近注目されているのが、ルーターとして必要なソフトウェアやその統一的な設定ツールを含むLinuxディストリビューション「Vyatta」だ。VyattaはDebian GNU/Linuxをベースに独自の管理インターフェイスやソフトウェアの組み込みといったカスタマイズを行ったもので、ルーターとして必要な設定を統一的に管理することができる。VyattaはLinuxベースということで、仮想環境上に容易にインストールできるのも特徴だ。そのため、仮想マシンを複数運用している環境で仮想ルーターとして利用する例も増えている。
本記事では、このVyattaを仮想マシン上にインストールし、ルーターとして利用する方法について紹介していく。
今回作成するネットワーク構成
今回作成するネットワーク構成では、1台のサーバーのみがインターネットに直接接続される。このサーバー上でKVMを利用して稼働させている仮想マシンにVyattaをインストールし、ルーターとして利用する(図2)。
また、Vyattaをインストールした仮想マシンはブリッジ接続を使用してWAN側のネットワークとローカルネットワークの両方にアクセスできるように設定しておく。これにより、Vyattaをルーターとして利用できるようになる。
なお、仮想マシンのホストとするLinuxディストリビューションにはRed Hat Enterprise Linux(RHEL)互換のCentOS 6.3を使用している。また、仮想化ソフトウェアにはRHEL(およびその互換OS)が標準でサポートしているKVMを使用している。
仮想化ソフトウェアやネットワークの事前準備
今回は仮想マシン上にVyattaをインストールしていくので、まず事前に仮想化関連のパッケージをインストールしておく必要がある。必要なパッケージは表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のようになっている。
構成例 | メモリ | ストレージ | 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のとおりだ。
オプション名 | 説明 | 指定した値 |
---|---|---|
--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も用意されている。もしサポートが必要であれば、こちらの利用も検討すると良いだろう。