本文へジャンプします。

ニフティクラウドとAmazon Web ServicesのVPN接続検証

こんにちは、ニフティクラウドのテクニカルアカウントエンジニアです。

マルチクラウドという言葉がありますが、ニフティクラウドの商談の中でも、「他社のクラウドから移行したい」、「他社クラウドの一部の機能も使いたい」と言った要望を受けることがあります。

今回は、そういったケースに利用できそうな「ニフティクラウドと他社とのVPN通信」について検証したいと思います。


今回は、AWSさんを例に構築してみます。

構築の目的はニフティクラウド-AWS間でVPNコネクションを張り、相互のプライベートLANに対して通信ができるようにすることです。

構成については、ニフティクラウド側はプライベートLAN⇔VPNゲートウェイの構成を作成し、AWS側はVPC⇔VyOSの構成を作成後、VPNゲートウェイとVyOSでVPNコネクションを張ります。

構成については詳しくは以下の構成概要図を確認ください。

構成概要図

1

構築手順目次

  1. VPCの作成
  2. VyOSインスタンスの作成
  3. AWSのネットワーク設定
  4. VPNゲートウェイの作成
  5. ファイアウォールの設定
  6. VyOSの設定
  7. ローカルサーバー間通信の確認

構築手順詳細

以下では、上記構築手順について各手順の詳細を示しています。

1. VPCの作成

AWSのプライベートLANにあたる、VPCをまず作成します。

  1. VPCメニューのVPCダッシュボードから「VPCウィザードの起動」をクリックします。
    2
  2. 「1個のパブリックネットを持つVPC」を選択し、「選択」をクリックします。
    3
  3. 「IP CIDRブロック」に10.0.0.0/16を、「パブリックサブネット」に10.0.0.0/24を、「サブネット名」にパブリックサブネット(任意の物で可)を入力し、「VPCの作成」をクリックします。
    4
  4. VPCメニューのサブネットから「サブネットの作成」をクリックします。
    5
  5. 「ネームタグ」にPVsubnet(任意の物で可)を、「VPC」に作成した10.0.0.0/16のVPCを、「CIDRブロック」に10.0.1.0/24を入力し、「作成」をクリックします。
    6

2. VyOSインスタンスの作成

作成したVPC上にAWS側のVPNGWとなるVyOSを作成します。

  1. EC2メニューのインスタンスから「インスタンスの作成」をクリックします。
    7
  2. 「コミュニティAMI」からVyOS 1.1.0(仮想化方式HVM)を探し、「選択」をクリックします。
    8
  3. 使用するインスタンスタイプを選択し、「次の手順:インスタンスの詳細の設定」をクリックします。
    9
  4. 「ネットワーク」に作成したVPCを、「サブネット」に作成したパブリックサブネットを入力します。
  5. 「デバイスの追加」をクリック後、「eth0」の「プライマリIP」に10.0.0.10を入力し、「eth1」の「サブネット」に作成したPVsubunetを選択後、さらに「プライマリIP」に10.0.1.10を入力し、「次の手順:ストレージの追加」をクリックします。
    10
    11
  6. 追加するストレージを設定後、「次の手順:インスタンスのタグ付け」をクリックします。
    12
  7. インスタンスのタグ付け設定後、「次の手順:セキュリティグループの設定」をクリックします。(特に必要がなければ未設定で問題なし)
    13
  8. この時点では、VPNに使用するグローバルIPアドレスが不明なため、ひとまず必要になるSSH接続許可を設定し、「確認と作成」をクリックします。(IPは適当な物に変更すること)
    14
  9. 設定を確認後、「作成」をクリックします。
    15
  10. 「新しいキーペアの作成」を選択後、任意のキーペア名を入力し、「キーペアのダウンロード」から鍵を取得後に、「インスタンスの作成」をクリックします。(すでに作成済みの鍵を使用する場合は「既存のキーペアを使用」を選択)
    16

3. AWSのネットワーク設定

作成したVyOSインスタンスのネットワーク設定を行います。

  1. EC2メニューのElastic IPから「新しいアドレスの割り当て」をクリックします。
    17
  2. VPCを選択後、「関連付ける」をクリックします。
    18
  3. 作成されたElastic IPを選択後、「アクション」タブから「アドレスの関連付け」をクリックします。
    19
  4. 「インスタンス」に作成したVyosのIDを、「プライベートIPアドレス」に10.0.0.10を選択し、「関連付ける」をクリックします。
    20
  5. EC2メニューの「ネットワークインターフェイス」から、作成したVyOSのeth0(eth1)を選択後、「アクション」タブから「送信元/送信先の変更チェック」をクリックします。
    21
  6. 「送信元/送信先チェック」を「無効」に変更し、「保存」をクリックします。
    • eth0の設定変更後にeth1も同じ設定を行ってください。

    22

4. VPNゲートウェイの作成

ニフティクラウド上にプライベートLANを作成します。

  1. ネットワークタブから「プライベートLAN作成」をクリックします。
    23
  2. 「プライベートLAN名」に「PVLAN(任意の名前で可)」を、「ゾーン」に使用するゾーンを、「CIDR」に172.16.0.0/16を入力し、「確認へ」をクリック後、プライベートLANを作成します。
    24
  3. ネットワークタブから「VPNゲートウェイの作成」をクリック後、「VPNゲートウェイ名」に「VPNGW(任意の名前で可)」を、「タイプ」には本手順構成は1対1なので「small」を、「プライベート側ネットワーク」に作成したプライベートLANを選択後、「ファイアウォール設定へ」をクリックします。
    25
  4. 「VPNGW」のIPアドレスがまだ決定していないため、「ファイアウォール」には一旦適用しないを選択し、「確認へ」をクリック後、VPNゲートウェイを作成します。
    26
  5. カスタマーGWタブから「カスタマーゲートウェイ作成」をクリックします。
    27
  6. 「カスタマーゲートウェイ名」に「CMGW(任意の名前で可)」を、「対向機種IPアドレス」にAWSで関連付けたElastic IPアドレスを、「対向機種LAN側IPアドレス帯」にAWSのLAN側ネットワークアドレス10.0.1.0/24を、「対向機種LAN側IPアドレス」にVyOSLAN側IPアドレス10.0.1.10を入力後、「作成する」をクリックします。
    • 「対向機種LAN側IPアドレス」はYAMAHAシリーズのみ設定が必要と記載がありますが、今回は必要でした。

    28

  7. 作成した「VPNGW」をクリックし、プルダウンから「VPNコネクション作成」をクリックします。
    29
  8. 「カスタマーゲートウェイ」に「CMGW」を、「接続方式」に「IPsec」を、「暗号化アルゴリズム」に「AES128」を、「認証アルゴリズム」に「SHA1」を、「事前共有鍵」に「niftyAWSVPN(任意の物で可)」を入力後、「トンネル設定へ」をクリックします。
    30
  9. そのまま「確認へ」をクリックし、VPNコネクションを作成します。
    31
  10. この後の設定で必要となる、「VPNGW」のグローバルIPアドレスを「VPNGW」のネットワークタブで確認します。
    また、ローカルIPアドレスはネットワークアドレスから自動的に「172.16.0.1」が付与されます。
    32

5. ファイアウォールの設定

使用するIPアドレスが出揃ったので、ニフティクラウド・AWSそれぞれのVPNゲートウェイ・VyOSおよびローカルサーバーのファイアウォールにインバウンドの許可設定を追加します。
設定については以下の表を参考にしてください。

  • その他、VPNコネクション以外の設定については必要な物を追加してください。
ベンダー 許可IPアドレス 備考
ニフティクラウド yyy.yyy.yyy.yyy AWS VyOS
172.16.0.0/16 ニフティクラウド LAN側ネットワーク
10.0.1.0/24 AWS LAN側ネットワーク
(VPNコネクション後にLAN側IPで接続される)
AWS xxx.xxx.xxx.xxx ニフティクラウド VPNゲートウェイ
10.0.1.0/24 AWS LAN側ネットワーク
172.16.0.0/16 ニフティクラウド LAN側ネットワーク
(VPNコネクション後にLAN側IPで接続される)

6. VyOSの設定

VPNコネクションに必要な設定を行います。
基本的な設定は「VPNコネクション:IPsec VPN(L3VPN)で接続する拠点側VPN装置の設定(VyOS)」を参照しています。

  1. teratermでVyOSのElastic IPアドレスを入力後、VyOSインスタンス作成時に同時に作成したキーペアをSSH鍵に指定し、SSH接続をします。
    ユーザー名およびパスフレーズはVyOSの初期設定で両方とも、「vyos」となっています。
    33
  2. IKEの暗号・ハッシュアルゴリズム設定
    • IKEグループ名「IKE1」は任意の名前で問題ありませんが、その場合は後の手順でも一致したIKEグループ名を使用してください。
    $ configure
    # set vpn ipsec ike-group IKE1 dead-peer-detection action restart
    # set vpn ipsec ike-group IKE1 dead-peer-detection interval 15
    # set vpn ipsec ike-group IKE1 dead-peer-detection timeout 90
    # set vpn ipsec ike-group IKE1 proposal 1 encryption aes128
    # set vpn ipsec ike-group IKE1 proposal 1 hash sha1
    # set vpn ipsec ike-group IKE1 proposal 1 dh-group 2
    # set vpn ipsec ike-group IKE1 lifetime 28800
    
  3. ESPの暗号・ハッシュアルゴリズム設定
    • ESPグループ名「ESP1」は任意の名前で問題ありませんが、その場合は後の手順でも一致したESPグループ名を使用してください。
    # set vpn ipsec esp-group ESP1 proposal 1 encryption aes128
    # set vpn ipsec esp-group ESP1 proposal 1 hash sha1
    # set vpn ipsec esp-group ESP1 lifetime 3600
    
  4. IPsec用のインターフェースとしてWAN側のeth0を指定
    # set vpn ipsec ipsec-interfaces interface eth0
  5. ニフティクラウドに作成したVPNゲートウェイのIPアドレスおよび事前共有鍵を設定
    # edit vpn ipsec site-to-site peer xxx.xxx.xxx.xxx
    # set authentication mode pre-shared-secret
    # set authentication pre-shared-secret niftyAWSVPN
  6. ニフティクラウドへのVPNに作成したIKE1・ESP1グループを使用
    # set ike-group IKE1
    # set default-esp-group ESP1
  7. VyOSのWAN側IPアドレス設定
    今回の構築ではAWSのVPCを利用しているので、WAN側IPアドレスはElastic IPの「yyy.yyy.yyy.yyy」ではなく、実際にVyOSに付与している「10.0.0.10」のIPアドレスを設定します。
    また、先ほど掲載した参照ページでは「set local-ip」と記載されていますが、AWS AMIのVyOS1.1では「set local-address」コマンドとなります。

    # set local-address 10.0.0.10
  8. ニフティクラウド・AWSそれぞれのトンネリングするネットワークを設定
    作成したVPCの/16をまるごと使用することも可能ですが、今回はサブネットとして/24で切るかたちでトンネリング設定を構築します。
    remote側はニフティクラウドのプライベートLANアドレスを指定します。

    # set tunnel 1 local prefix 10.0.1.0/24
    # set tunnel 1 remote prefix 172.16.0.0/16
  9. VyOSのeth1にLAN側IPアドレスを設定
    VyOS作成時にeth1に「10.0.1.10/24」を指定しているものの、AWS上だと確保されただけのようで、実際にはVyOS上からだとeth1のIPアドレスは未設定状態となるため、追加で設定をします。

    # top
    # set interfaces ethernet eth1 address 10.0.1.10/24
  10. idおよびremote-idの設定
    本構成では以下のようにidおよびremote-idをVyOS側で指定しないとVPN接続が不可でした。
    idにはVyOSのLAN側IPアドレスを、remote-idにはニフティクラウドVPNゲートウェイのWAN側IPアドレスを設定します。

    • 動的IPを利用している場合、IKEのIDとしては、ローカル側IPを指定する必要があります。
    # set vpn ipsec site-to-site peer xxx.xxx.xxx.xxx authentication id 10.0.1.10
    # set vpn ipsec site-to-site peer xxx.xxx.xxx.xxx authentication remote-id xxx.xxx.xxx.xxx
    # set authentication pre-shared-secret niftyAWSVPN
  11. 設定の保存
    # commit
    # save
  12. VPNステータスの確認
    IKE/IPsecの両方がupでsessionが張れている状態となり、疎通確認にニフティクラウドVPNゲートウェイのLAN側IPアドレスにpingを打ちます。

    # run show vpn ike sa
    # set interfaces ethernet eth1 address 10.0.1.10/24
    Peer ID / IP                            Local ID / IP
    ------------                            -------------
    xxx.xxx.xxx.xxx                         10.0.0.10
    
        State  Encrypt  Hash    D-H Grp  NAT-T  A-Time  L-Time
        -----  -------  ----    -------  -----  ------  ------
        up     aes128   sha1    2        no     1345    28800
    
    # run show vpn ipsec sa
    Peer ID / IP                            Local ID / IP
    ------------                            -------------
    xxx.xxx.xxx.xxx                         10.0.0.10
    
        Tunnel  State  Bytes Out/In   Encrypt  Hash    NAT-T  A-Time  L-Time  Proto
        ------  -----  -------------  -------  ----    -----  ------  ------  -----
        1       up     420.0/420.0    aes128   sha1    no     1617    3600    all
    
    # run ping 172.16.0.1
    PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
    64 bytes from 172.16.0.1: icmp_req=1 ttl=64 time=87.9 ms
    64 bytes from 172.16.0.1: icmp_req=2 ttl=64 time=87.8 ms
    64 bytes from 172.16.0.1: icmp_req=3 ttl=64 time=87.7 ms
    64 bytes from 172.16.0.1: icmp_req=4 ttl=64 time=87.7 ms

7. ローカルサーバー間通信の確認

VPNコネクションを張った後に、それぞれのLAN側に設置したローカルサーバーで相互に通信が可能なことを確認します。

  • 構成概要図内のローカルサーバー同士の通信
  • 本手順ではLinuxサーバー間で確認
  1. サーバーの作成
    LAN側ネットワークに属するインターフェースを所持するサーバーをそれぞれで作成し、IPアドレス設定します。
    今回はニフティクラウド側は「172.16.0.20」を、AWS側は「10.0.1.20」を設定しました。

    • AWSのインスタンス作成についてはVyOSインスタンス作成手順を参考にしていただき、ニフティクラウドのサーバー作成手順についてはサーバーの作成を参考にしてください。
  2. ルーティングの追加
    今回はOS側でルーティングの追加をし、接続の確認をします。

    1. ニフティクラウドローカルサーバー
      AWSのLAN側ネットワーク「10.0.1.0/24」接続時は、VPNゲートウェイのLAN側IPアドレス「172.16.0.1」をゲートウェイとします。

      # route add -net 10.0.1.0/24 gw 172.16.0.1
    2. AWSローカルサーバー
      ニフティクラウドのLAN側ネットワーク「172.16.0.0/16」接続時は、VyOSのLAN側IPアドレス「10.0.1.10」をゲートウェイとします。

      # route add -net 172.16.0.0/16 gw 10.0.1.10
  3. ssh確認
    sshでログインし、接続確認をします。

    1. ニフティクラウドローカルサーバー
      AWSローカルサーバーにawsユーザーを作成し、sshログインを行います。

      # ssh aws@10.0.1.20
      aws@10.0.1.20's password:
      Last login: Wed Nov 11 06:51:23 2015 from ip-172-16-0-20.ap-southeast-1.compute.internal
      
          __| __|_ )
          _| (   /  Amazon Linux AMI
          ___|\___|___|
      
      https://aws.amazon.com/amazon-linux-ami/2015.09-release-notes/
      [aws@ip-10-0-1-20 ~]$
    2. AWSローカルサーバー
      ニフティクラウドローカルサーバーにniftyユーザーを作成し、sshログインを行います。

      # ssh nifty@172.16.0.20
      nifty@172.16.0.20's password:
      Last login: Wed Nov 11 15:53:15 2015 from 10.0.1.20
      [nifty@awsvpn001 ~]$

検証結果まとめ

本検証の通り、ニフティクラウド/AWS間でVPNコネクションを張り、相互のプライベートLANに対して通信ができることが確認できました。

この検証によりマルチベンダーでのクラウド構築などが可能になるのではと考えられます。
各クラウドベンダーメリットデメリットを理解して上手く使うと、いい所取りをしたシステム構築が可能になるかもしれないですね。

  • 本手順については検証結果の1つであり、利用される際は事前にそれぞれの環境で十分に検証を行っていただくようお願いします。
ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。