専用ルータと同等の機能を備えるLinuxベースのソフトウェアルーター「Vyatta」を使う 2ページ

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

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

表1 仮想環境の利用に必要なパッケージ
パッケージ名説明
qemu-kvmKVM本体
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に正しく接続されていることが分かる。