LoginSignup
11
11

More than 5 years have passed since last update.

VRRPによるVyattaの冗長構成 on SoftLayer

Posted at

本エントリは2枚目 SoftLayer Advent Calendar 2014の23日目向けに書きました!

昨日はついに東京DCがオープンしました!
同時に「第5回東京SoftLayer勉強会」も開催され、SoftLayerの波が日本に上陸しています!
世界的ですもんね 乗るしかない、このビッグウェ(以下略)

勉強会でのLTは非常にレベルが高く、その翌日にこんなエントリで何か申し訳ない気分になっています。

やりたいこと

私「VyattaをVirtualServerにしてFirewallとして使えますよ。」
お客様「それ冗長化できない?」
私「え!?」
お客様「そのVyattaとかいうのを冗長化できない?」
私「やってみます……」

以前お客様と上記のようなやりとりがありましたので、Vyattaの冗長化をSoftLayerで検証してみます。

冗長化して内部のサーバがインターネット側にNAT(PAT)されて通信できる、というところをゴールにします。

構成

kousei.png
Vyatta入りのVirtualServerを2台作ってVRRPを組みます、通信確認用のサーバはPrivate Networkのみに足を出します。

Vyatta

タイプ:VirtualServer,Vyatta
OS:Vyatta Community Edition for VSI6.6.0
スペック:1CPU/1GBmemory

×2台

任意のサーバ(通信確認用)

タイプ:VirtualServer
OS:CentOS6.0-64 LAMP for VSI
スペック:1CPU/1GBmemory

×1台

VRRP用のIPアドレスの用意について

PrivateとPublicそれぞれにVRRP用のIPアドレスが必要なので、IPアドレスの追加購入が必要……のはずですが、下記のようなことをやったら追加購入せずに出来ちゃいましたが……(いいのだろうか…)。
検証じゃなくて、使用する環境の場合はちゃんとオーダーした方がいいと思います!

PublicIP … 通信確認用のサーバで不使用のPublicIPを、VRRP用の仮想アドレスに使用
PravateIP … PrivateNetworkのIPセグメントの中の使用されていないであろうIPを勝手に使用

VRRP設定

VRRPの設定は非常に簡単ですが、インターフェースモードに入って設定する必要があります。
今回の場合public側、private側の両方のインターフェースでそれぞれ設定を行います。
※実アドレスの設定はインターフェース側の設定であらかじめ行っておきます。

edit interfaces ethernet [インターフェース番号/例 eth0]
set vrrp vrrp-group [VRRPグループ番号/例 100 /※両機で合わせる必要があります]
set vrrp vrrp-group [VRRPグループ番号] virtual-address [仮想アドレス]
set vrrp vrrp-group 100 priority 150 ※priority値が高い方がPrimaryになります

editとsetの違いに注意!
あとcommitとsaveを忘れないで!

設定後コンフィグ

1号機の設定

VRRP設定
前述の通りの設定を、publicとprivateの両インターフェースに行った状態。

# show vrrp interfaces 
 ethernet eth0 {
     address [private側の実IPアドレス]
     duplex auto
     hw-id [MACアドレス]
     speed auto
     vrrp {
         vrrp-group 200 {
             priority 150
             virtual-address [private側仮想アドレス]
         }
     }
 }
 ethernet eth1 {
     address [public側の実IPアドレス]
     duplex auto
     hw-id [MACアドレス]
     speed auto
     vrrp {
         vrrp-group 100 {
             priority 150
             virtual-address [public側仮想アドレス]
         }
     }
 }

NAT設定
内部の機器がインターネットに抜けるときに、public側のインターフェースアドレスに変換させるようにします。

# show nat
 source {
     rule 1 {
         outbound-interface eth1
         source {
             address 0.0.0.0/0
         }
         translation {
             address masquerade
         }
     }
 }

2号機の設定

VRRP設定

# show vrrp interfaces 
 ethernet eth0 {
     address [private側の実IPアドレス]
     duplex auto
     hw-id [MACアドレス]
     speed auto
     vrrp {
         vrrp-group 200 {
             priority 100
             virtual-address [private側仮想アドレス]
         }
     }
 }
 ethernet eth1 {
     address [public側の実IPアドレス]
     duplex auto
     hw-id [MACアドレス]
     speed auto
     vrrp {
         vrrp-group 100 {
             priority 100
             virtual-address [public側仮想アドレス]
         }
     }
 }

NAT設定

# show nat
 source {
     rule 1 {
         outbound-interface eth1
         source {
             address 0.0.0.0/0
         }
         translation {
             address masquerade
         }
     }
 }

テスト用サーバの設定

DGWを、VRRPのプライベート側の仮想アドレスに向けます。

通信テスト

前提

Vyatta1号機(Primary機) Publicアドレス:173.xx.xx.10
Vyatta2号機(Secondary機) Publicアドレス:173.xx.xx.12
テスト用サーバアドレス Pravateアドレス:10.xx.xx.174

正常系(1号機Active)

テスト用サーバからインターネットの任意の場所に通信した後、ログを確認します。

VRRPログ

1号機
VRRPの状態は"MASTER"になっており、テスト用サーバのアドレスをNATしていることがわかります。

$ show vrrp
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              200    MASTER  no         no     6m30s       <none>
eth1              100    MASTER  no         no     6m30s       <none>

$ sho nat source  translations
Pre-NAT              Post-NAT             Prot  Timeout
10.xx.xx.174         173.xx.xx.10         tcp   114

2号機
VRRPの状態は"BACKUP"です。

$ show vrrp
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              200    BACKUP  no         no     4m29s       <none>
eth1              100    BACKUP  no         no     4m29s       <none>

テスト用サーバログ

アドレス確認用サイトにアクセスすると、1号機側のpublicアドレスでアクセスしていることがわかります。

# curl inet-ip.info
173.xx.xx.10

異常系(2号機Active)

1号機をダウンさせた後、テスト用サーバからインターネットの任意の場所に通信した後、ログを確認します。

VRRPログ

2号機
VRRPの状態は"MASTER"になっており、テスト用サーバのアドレスをNATしていることがわかります。

$ show vrrp 
                                 RFC        Addr   Last        Sync
Interface         Group  State   Compliant  Owner  Transition  Group
---------         -----  -----   ---------  -----  ----------  -----
eth0              200    MASTER  no         no     1m19s       <none>
eth1              100    MASTER  no         no     1m19s       <none>

$ show nat source translations 
Pre-NAT              Post-NAT             Prot  Timeout 
10.xx.xx.174         173.xx.xx.12         tcp   106     

テスト用サーバログ

アドレス確認用サイトにアクセスすると、2号機側のpublicアドレスでアクセスしていることがわかります。

# curl inet-ip.info
173.xx.xx.12

最後に

SoftLayerは他のクラウドサービスに比べてネットワークレイヤが圧倒的に自由です。
今回はこじんまりとした内容でしたが、グローバルなプライベートネットワークが使い放題!であることを考えると、色々な用途が考えられてワクワクしてきますね。

11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11