追記
構成と設定を見直したところ、疎通できました。
近日中に記事にします。(願望)
概要
異なるリージョン(東京とソウル)をVPNで接続したかったが、失敗した。(理由もわかっていない)
詳しい方、分かる方、いらっしゃったらぜひ教えてください。
構成図
やりたかったこと(ゴール)
- 東京リージョンの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にする
参考にしたサイト
- http://qiita.com/t11a/items/9d732ae647ed878e4625
- http://dev.classmethod.jp/event/soracom-door/
- http://dev.classmethod.jp/server-side/network/vyos-aws/
上記のサイトは、自分がやりたかったことをほぼ同じ構成で実現している。細かい部分で違いはあるが(ネットワークアドレスが違う、デフォルトの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を学んで、出直してきます。