LoginSignup
1
1

More than 5 years have passed since last update.

異なるリージョン同士をVPNつなごうとしたけど、できなかった話

Last updated at Posted at 2017-02-11

追記

構成と設定を見直したところ、疎通できました。

近日中に記事にします。(願望)


概要

異なるリージョン(東京とソウル)をVPNで接続したかったが、失敗した。(理由もわかっていない)

詳しい方、分かる方、いらっしゃったらぜひ教えてください。

構成図

WG4PUQ8PwpjtRAPT-8B8DF.png

やりたかったこと(ゴール)

  • 東京リージョンのEC2インスタンス(10.0.0.128/28)からソウルリージョンのEC2インスタンス(10.0.1.192/28)にPINGが通る

結果(失敗)

  • 東京リージョンEC2インスタンスを"t1"、ソウルリージョンEC2インスタンスを"s1"とすると、疎通確認の結果は以下の通り

    • t1 -> vyos : PING疎通成功
    • vyos -> s1 : PING疎通成功
    • t1 -> s1 : PING疎通失敗
      • s1のパケットキャプチャの結果より、パケットがs1に届いていない
    • vyos -> t1 : PING疎通失敗
      • t1のパケットキャプチャの結果より、パケットは届いているが、応答(t1->vyos)がvyosに届いていない
  • 問題は2点?

    • vyosがルーティングをしていない
    • t1 -> vyos(vyos -> t1の戻りの経路)で何かが起こっている
      • t1上のパケットキャプチャの結果では、PINGの応答は、"10.0.0.xxx(t1のローカルIPアドレス) -> 169.xxx.xxx.xxx"となっていた。(マスクしているのは忘れたから)

構成を簡単に説明

  • 東京リージョンとソウルリージョンそれぞれにVPCを作成
  • 仮想プライベートゲートウェイは東京リージョンに置き、カスタマーゲートウェイはソウルリージョンに置く。カスタマーゲートウェイは、EC2でたてたvyosにする

参考にしたサイト

上記のサイトは、自分がやりたかったことをほぼ同じ構成で実現している。細かい部分で違いはあるが(ネットワークアドレスが違う、デフォルトのVPCを使用している、vyosのバージョンが違うなど)、それが原因とは思いづらい…。

やったこと

実際に作業した順番で書いていく(順番の記憶違いはあるかも)
BGPのAS番号はすべての箇所で65000にしています。(どこで設定しているか忘れたのでここに書いた)

東京リージョン

  • VPCを作成
  • 上記VPC内にサブネットを作成。構成図の通り2つのサブネットを作成し、アベイラビリティゾーンは分けている。
  • インターネットゲートウェイを作成し、VPCにアタッチ
  • 仮想プライベートゲートウェイを作成し、VPCにアタッチ
  • ルートテーブルを設定
    • サブネットを関連付ける
    • ルートを設定
      • 送信先:0.0.0.0/0、ターゲット:インターネットゲートウェイ
      • 送信先:10.0.1.0/24、ターゲット:仮想プライベートゲートウェイ(もしかしたら設定していないかも。vyosからアドバタイズされたものが載っていたかも)
  • 作成したVPC内に疎通確認用のEC2インスタンスを1台たてる(Amazon Linux)
    • セキュリティグループはすべてのトラフィックを許可

ソウルリージョン

  • VPCを作成
  • 上記VPC内にサブネットを作成。構成図の通り2つのサブネットを作成し、アベイラビリティゾーンは分ける。
  • インターネットゲートウェイを作成し、VPCにアタッチ
  • ルートテーブルを設定
    • サブネットを関連付ける
    • ルートを設定
      • 送信先:0.0.0.0/0、ターゲット:インターネットゲートウェイ
  • 作成したVPC内にEC2インスタンスを2つ作成。1つはvyos用、もう1つはPing疎通確認用。サブネットはそれぞれ別のものを指定する。(つまりアベイラビリティゾーンも別)
  • vyosの構築内容
    • AMIは、コミュニティAMIから"VyOS(HVM)1.1.7"を選択
    • EIPを付与
    • セキュリティグループはすべてのトラフィックを許可
    • 「送信元と宛先のチェック」は無効に設定
  • Ping疎通確認用インスタンスの構築内容
    • AMIは、Amazon Linuxを選択.
    • セキュリティグループはすべてのトラフィックを許可

東京リージョン

  • ソウルリージョンで付与したEIPのグローバルIPアドレスをもとに、カスタマーゲートウェイを作成
  • このカスタマーゲートウェイと先ほど作成した仮想プライベートゲートウェイから、「VPC接続」を作成、ルーティングは動的
  • vyatta用のコンフィグをダウンロード

ソウルリージョン

  • ダウンロードしたコンフィグをもとにvyosを設定
    • 変更した箇所は下記の2点.(クラスメソッドさんの記事を丸パクリ。http://dev.classmethod.jp/event/soracom-door/)
    • "10.0.1.0/24"の箇所は、試行錯誤の中で"10.0.1.128/28"、"0.0.0.0/0"も試したが、すべて疎通は上手く行かなかった
(変更前)
set vpn ipsec site-to-site peer ***** local-address [VyOSのEIP]
set protocols bgp 65000 network 0.0.0.0/0

(変更後)
set vpn ipsec site-to-site peer ***** local-address [VyOSのプライベートIP]
set protocols bgp 65000 network 10.0.1.0/24
  • ルートの設定で、10.0.0.0/24 宛のターゲットは、vyosに付与したEIPを指定

確認作業

  • マネジメントコンソールのVPC設定画面(東京リージョン)で、「VPN接続」の1つのトンネルがUPしていることを確認
  • 東京リージョンのVPCのルーティングの設定で、ソウルリージョン宛は仮想プライベートゲートウェイになっていることを確認
  • ソウルリージョンのVPCのルーティングの設定で、東京リージョン宛はvyosのEIPになっていることを確認

失敗した原因究明として、他に試せそうなこと

  • リージョンを変える。東京<->シンガポールとか
  • vyosのバージョンを変える
    • 昔、特定のバージョンのvyattaにて、今回と同様の構成でルーティングに失敗する不具合があったらしい
    • ソウルリージョンには1.1.7のバージョンしかなかったので、リージョンごと変える必要がある
  • 片方のリージョンで172.x.x.xのデフォルトのVPCを使ってみる
  • アベイラビリティゾーンをなるべく分けずにやってみる
  • ルーティングやNWの構成を見直す?

最後に…

  • VPNやIPsec、VPCを学んで、出直してきます。
1
1
4

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
1
1