さくらのVPSにVyattaを入れて、Amazon VPCにVPN接続 – kikumotoのメモ帳

第8回JAWS-UGに参加して、そこで富士ソフトの飯尾さんが話したVPCの話題、面白かったです。

ということで、年内にAWS東京リージョンに追加されるはずのVPCを試しおかなきゃ、、、、

といっても、ネットワーク装置なんて持ってないので、さくらVPSVyattaを入れて接続することを試みたのでそれをメモしておく。

さくらVPSVyattaインストール

これは、

を参考にして実施。

Amazon VPCの構築

今回は、AWS Management Consoleを使ってVPCを構築する。

以下のような流れで画面を操作する。

以上で、VPCの構築がはじまるのでしばし待つ。

構築が終わると、Customer Gateway を設定するための設定データをダウンロードできる。

  • “Download Configutaion” をクリック。
  • “Vendor” を “Generic” に変更。
  • “Yes, Download” をクリック。

ダウンロードしたファイルは後で使うので保存しておく。

VPCのSecurity Groups

VPCの構築後、そのVPC内で立ち上げるEC2 インスタンスのためのSecurity Groupsを設定する。

これも AWS Management ConsoleVPC タブで以下のように操作をする。

  • 左ペインの”Security Groups”をクリック。
  • “default”にチェック。
  • 下ペインに表示される”Inbound”タブをクリック。
  • “Create a new rule”で”SSH“を選択。
  • “Source”を”172.22.0.0/24″に変更。
  • “Add Rule”をクリック。
  • 引き続き、”Create a new rule”で”Custom ICMP rule”を選択。
    • このルールは、単にインスタンスへのPingによる疎通確認を行いたいので追加している。
  • “Type”を”Echo Request”に変更。
  • “Source”を”172.22.0.0/24″に変更。
  • “Add Rule”をクリック。
  • “Apply Rule Changes”をクリック。

これでSecurity Groupsの設定は完了。

VPC内にEC2インスタンスを起動

AWS Management ConsoleEC2タブから、”US East” Regionにインスタンスを作成する。

今回の手順。

  • “Launch Instance”をクリック
  • Basic 32-bit Amazon Linux AMI 2011.02.1 Beta“を選択。
  • “Launch Instances Into Your Virtual Private Cloud”を選択する。SubnetID はここまでの手順であれば1つしか作っていないので、そのままにして “Continue“。
  • IP Adderess”はからのままで “Continue“。
  • Tag は必要であれば適宜入力して “Continue“。
  • Key Pairsは適宜設定して “Continue“。
  • “Choose one or more of your existing Security Groups”から、先に修正した default Security Groupsを選択して”Continue“。
  • 最後に内容を確認して “Launch”。

Vyattaを構成

VyattaAmazon VPCに接続するために参考にさせてもらったのは以下のページ

まずさくらVPS側の情報としては以下を使う。

 グルーバルIPv4アドレス: 49.212.xx.xx/23 Gateway        : 49.212.22.1

なお、今回はさくらVPSサーバ内に仮想的なプライベートアドレスとして 172.22.0.101/24 も用意している。

また、先にVPCの構成時にダウロードしたファイルから使う値(ファイル毎に違うもの)は以下の通り。

ちなみに、今回使うのは IPSec Tunnel #1 の情報のみ。(Pre-Shared Key は本来秘密にしておくもの。以下のKeyはすでに破棄したVPCのKeyです)

 Pre-Shared Key           : vvFWtUb7xtBcKkYsTInb8g.6CveKDdS0 Outside IP Addresses:   - Customer Gateway:        : 49.212.xx.xx    - VPN Gateway              : 72.21.209.225                 Inside IP Addresses   - Customer Gateway         : 169.254.255.2/30   - VPN Gateway              : 169.254.255.1/30 BGP Configuration Options:   - Customer Gateway ASN     : 65000    - VPN Gateway ASN          : 7224   - Neighbor IP Address      : 169.254.255.1

あと、VPCネットワーク情報としては、

 10.0.0.0/16

を使う。

これらの情報をもとにすると、Vyattaに流し込む設定は以下のようになる。

interfaces {    ethernet eth0 {        address 49.212.xx.xx/23        address 172.22.0.101/24        address 169.254.255.2/32    }}protocols {    bgp 65000 {        neighbor 169.254.255.1 {            remote-as 7224            update-source 169.254.255.2        }        network 0.0.0.0/0 {        }    }    static {        route 0.0.0.0/0 {            next-hop 49.212.22.1 {            }        }    }}vpn {    ipsec {        disable-uniqreqids        esp-group ESP1 {            compression disable            lifetime 3600            mode tunnel            pfs enable            proposal 1 {                encryption aes128                hash sha1            }        }        ike-group IKE1 {            lifetime 28800            proposal 1 {                dh-group 2                encryption aes128                hash sha1            }        }        ipsec-interfaces {            interface eth0        }        site-to-site {            peer 72.21.209.225 {                authentication {                    mode pre-shared-secret                    pre-shared-secret vvFWtUb7xtBcKkYsTInb8g.6CveKDdS0                }                ike-group IKE1                local-ip 49.212.xx.xx                tunnel 1 {                    allow-nat-networks disable                    allow-public-networks disable                    esp-group ESP1                    local-subnet 169.254.255.2/32                    remote-subnet 169.254.255.1/30                }                tunnel 2 {                    allow-nat-networks disable                    allow-public-networks disable                    esp-group ESP1                    local-subnet 172.22.0.101/24                    remote-subnet 10.0.0.0/16                }            }        }    }}

これをファイルに記述して scp などで Vyattaサーバにアップし

$ configure# merge /path/to/vpc.config# commit

すればよい。

さらにパケットの転送制御をするために、以下の内容のファイルをアップする。

#!/bin/shBGP_LOCAL_IP_SUBNET=169.254.255.0BGP_LOCAL_IP_1=169.254.255.2VPN_1_IP=72.21.209.225MY_WAN_IP=49.212.xx.xxMY_LOCAL_SUBNET_IP=172.22.0.101VPC_CIDR=10.0.0.0/16ip xfrm policy update dir fwd src $BGP_LOCAL_IP_SUBNET/30 dst $BGP_LOCAL_IP_1/32 tmpl src $VPN_1_IP dst $MY_WAN_IP proto esp level required mode tunnelip xfrm policy update dir in src $BGP_LOCAL_IP_SUBNET/30 dst $BGP_LOCAL_IP_1/32 tmpl src $VPN_1_IP dst $MY_WAN_IP proto esp level required mode tunnelip xfrm policy update dir fwd src $VPC_CIDR dst $MY_LOCAL_SUBNET_IP/24 tmpl src $VPN_1_IP dst $MY_WAN_IP proto esp level required mode tunnelip xfrm policy update dir in src $VPC_CIDR dst $MY_LOCAL_SUBNET_IP/24 tmpl src $VPN_1_IP dst $MY_WAN_IP proto esp level required mode tunnel

これを Vyatta サーバ上で実行する。

以上で、うまくいっていれば

ping -I 169.254.255.2 169.254.255.1

で、VPN Gateway との疎通が確認できる。

さらに

ping -I 172.22.0.101 10.0.1.111

で(10.0.1.111 は EC2 インスタンスIP)、インスタンスとの疎通が確認できる。

ここまでくれば、あとは EC2 インスタンスsshログインできる。

sudo ssh -i /path/to/key.pem ec2-user@10.0.1.111

netstat で確認したら、172.22.0.101 からの接続があるので、IPSec VPN 接続が成功しているようだ。

長くなったけど、こんな感じでVPCを試すことができた。

最後に、、、

VPC、早く東京に来い!

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中