とにかく手順がややこしいし、一回設定するといじらないので次回やるときにはほぼ忘れてるやつ。毎回思い出すのも面倒なので手順書化した。
全体の概要
どういうものかは 公式ページ を見るとして。要するにIPSec VPN。AWSで言うところの AWS Site-to-Site VPN 。
で、GCP版はHAに対応しているらしい。
上の図の中の①、②・・・と振ってある数字は作るべきもの、管理するべきものを一覧するために通し番号をふっている。以下の手順でもこの数字で作るべきもの、管理すべきものを指し示している。ただし以下の文中ではフォントが対応していないので(1), (2)...としている。実際に作るときにも番号を確認しながらどこまで作ったのか、どんな値をセットしたのかをメモしながら進めると迷わずに済むと思う。
手順
ベースとなる環境の作成
- プロジェクト(1), (2)を作成する
- VPC(3), (4)を作成する
- 初回の場合はCompute Engine APIが有効になっていないことがあるので有効化する。有効化すると
default
というVPCができる。それを使ってもいいが、使用しないサブネットが大量にできて見通しが悪いので、今回はカスタム設定で作成した- 名前: 任意の名前(今回の例では、
vpc-peer1
,vpc-peer2
) - VPC ネットワーク ULA の内部 IPv6 範囲: 無効(デフォルト値)
- サブネット
- カスタムモードで作成
-
vpc-peer1
にはsubnet-peer1
(上図の(3),192.168.10.0/24
),vpc-peer2
にはsubnet-peer2
(上図の(4),172.16.0.0/24
)をそれぞれ作成。
-
- カスタムモードで作成
- ファイアウォールルール: デフォルトのまま
- 動的ルーティングモード: リージョン(デフォルト値。
subnet-peer1
とsubnet-peer2
が異なるリージョンになる場合にはグローバルに変更する) - 最大伝送単位(MTU): 1460(デフォルト値)
- 名前: 任意の名前(今回の例では、
- 初回の場合はCompute Engine APIが有効になっていないことがあるので有効化する。有効化すると
Cloud Routerを作る
- Cloud Router(5), (6)をつくる
- 名前: 今回の例では、上図の(5)を
router-peer1
、上図の(6)をrouter-peer2
- ネットワーク:
- 上図の(5)
router-peer1
には(3)vpc-peer1
、上図の(6)router-peer1
には(4)vpc-peer1
- 上図の(5)
- リージョン: (3), (4)のサブネットがあるリージョンを指定
- Google ASN: それぞれにユニークなAS番号を割り当てる。RFP6996準拠のプライベートAS番号である64512〜65534のなかで割り当てる。この例では上図の(5)
router-peer1
に64512
、上図の(6)router-peer2
に64513
を割り当てた - BGPピアキープアライブの間隔: 空白(デフォルト。20秒となる)
- アドバタイズされたルート
- 名前: 今回の例では、上図の(5)を
VPNゲートウェイの作成
-
(7)には以下のように値をセットする
作成したら「VPNトンネルの追加」の作業を行わず、もう1つブラウザのタブを開き、(2)-プロジェクトpeer2
の(4)-vpc-peer2
の中に、同じくVPNゲートウェイ(8)を作る。(7)と同様に以下のような値をセットする
- (8)には以下のように値をセットする
VPNトンネルの作成
ここまでで以下のような状態になっている。VPNゲートウェイが作成され、グローバルIPアドレスがVPNゲートウェイごとに2つ割り当てられている(図中の(9), (10), (11), (12))
それぞれのVPNゲートウェイの中に、VPNトンネルを作成する。まずは(7)-vpn-peer1
の中に、(13), (16)を作成する
- 以下のように値をセットする
続けてトンネル(13), (16)の設定を作成する
- 以下のように値をセットする
[作成して続行]をクリックする。作成が完了したら、もう1つのブラウザタブに移動し、(8)-vpn-peer2
の中に、(14), (17)を作成する
- 以下のように値をセットする
続けてトンネル(14), (17)の設定を作成する
- 以下のように値をセットする
[作成して続行]をクリックする。
BGPの設定
次に作成したトンネルの中に、BGPセッションを設定する
まず(13)-tunnel1-peer1
の中に(19)を作成する。
画面上のtunnel1-peer1
行の "BGPセッションを構成" をクリックする
- 以下のように値をセットする
[保存して次へ] をクリック
同様に(16)-tunnel2-peer1
の中に(21)を作成する。
画面上のtunnel2-peer1
行の "BGPセッションを構成" をクリックする
- 以下のように値をセットする
[保存して次へ] をクリック
2つのBGPセッションが設定されていることを確認して、[BGP構成を保存]をクリック
確認画面の[OK]を押して閉じると、以下のような画面が表示される。
上記の(23),(24),(25),(26)は以降の手順で使用するためメモしておく
続けてもう1つのタブの方に移動して、同様にBGPセッションを作成する
(14)-tunnel1-peer2
の中に(20)を作成する。
画面上のtunnel1-peer2
行の "BGPセッションを構成" をクリックする
- 以下のように値をセットする
- 名前:
bgp-tunnel1-peer2
- ピアASN: 対向となるASN。この場合は(5)の
64512
を指定する - アドバタイズされたルートの優先度: 空欄(デフォルト値)
- マルチプロトコルBGP
- Allocate BGP IPv4 address: 手動を選択
- Cloud RouterのBGP IPv4アドレス: (24)の値をセット(先程メモしたときの表記と逆転していることに注意)
- BGPピアIPv4アドレス: (23)の値をセット(先程メモしたときの表記と逆転していることに注意)
- BGPピア: 有効を選択
- MD5認証: 無効を選択
- Allocate BGP IPv4 address: 手動を選択
- アドバタイズされたルート、Bidirectional Forwarding Detection(BFD): 変更しない
- 名前:
[保存を押して次へ]をクリック
同様に(17)-tunnel2-peer2
の中に(22)を作成する。
画面上のtunnel2-peer2
行の "BGPセッションを構成" をクリックする
- 以下のように値をセットする
- 名前:
bgp-tunnel2-peer2
- ピアASN: 対向となるASN。この場合は(5)の
64512
を指定する - アドバタイズされたルートの優先度: 空欄(デフォルト値)
- マルチプロトコルBGP
- Allocate BGP IPv4 address: 手動を選択
- Cloud RouterのBGP IPv4アドレス: (26)の値をセット(先程メモしたときの表記と逆転していることに注意)
- BGPピアIPv4アドレス: (25)の値をセット(先程メモしたときの表記と逆転していることに注意)
- BGPピア: 有効を選択
- MD5認証: 無効を選択
- Allocate BGP IPv4 address: 手動を選択
- アドバタイズされたルート、Bidirectional Forwarding Detection(BFD): 変更しない
- 名前:
[保存を押して次へ]をクリック
2つのBGPセッションが設定されていることを確認して、[BGP構成を保存]をクリック
Firewallルールの設定
(3)-vpc-peer1
, (4)-vpc-peer2
のファイアウォールルールを設定し、両方のサブネットが疎通するようにする
おわりです
おつかれさまでした!
慣れれば割とすんなりできるようになるかも。オンプレとの接続もなんとなくできるようになるかもです。