0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GCPのCloud VPNで2つのVPCをつなぐ

Last updated at Posted at 2023-02-26

とにかく手順がややこしいし、一回設定するといじらないので次回やるときにはほぼ忘れてるやつ。毎回思い出すのも面倒なので手順書化した。

全体の概要

どういうものかは 公式ページ を見るとして。要するにIPSec VPN。AWSで言うところの AWS Site-to-Site VPN

で、GCP版はHAに対応しているらしい。

全体的な構造はこんな感じになっている。
Screenshot from 2023-02-26 20-06-43.png

上の図の中の①、②・・・と振ってある数字は作るべきもの、管理するべきものを一覧するために通し番号をふっている。以下の手順でもこの数字で作るべきもの、管理すべきものを指し示している。ただし以下の文中ではフォントが対応していないので(1), (2)...としている。実際に作るときにも番号を確認しながらどこまで作ったのか、どんな値をセットしたのかをメモしながら進めると迷わずに済むと思う。

手順

ベースとなる環境の作成

  • プロジェクト(1), (2)を作成する
    • ポリシーで以下の項目が許可されていることを確認
      • constraints/compute.restrictVpnPeerIPs
      • 20230226-01.jpg
    • プロジェクトのオーナー権限があること
  • 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-peer1subnet-peer2が異なるリージョンになる場合にはグローバルに変更する)
      • 最大伝送単位(MTU): 1460(デフォルト値)

Cloud Routerを作る

  • Cloud Router(5), (6)をつくる
    • 名前: 今回の例では、上図の(5)をrouter-peer1、上図の(6)をrouter-peer2
    • ネットワーク:
      • 上図の(5)router-peer1には(3)vpc-peer1、上図の(6)router-peer1には(4)vpc-peer1
    • リージョン: (3), (4)のサブネットがあるリージョンを指定
    • Google ASN: それぞれにユニークなAS番号を割り当てる。RFP6996準拠のプライベートAS番号である64512〜65534のなかで割り当てる。この例では上図の(5)router-peer164512、上図の(6)router-peer264513を割り当てた
    • BGPピアキープアライブの間隔: 空白(デフォルト。20秒となる)
    • アドバタイズされたルート
      • ルート: Cloud Router に表示されるすべてのサブネットにアドバタイズ(デフォルト)を選択
        20230226-02.jpg

VPNゲートウェイの作成

ここまでで以下のような状態になっている
Screenshot from 2023-02-26 23-11-04.png

  • (3)のVPCの中にVPNゲートウェイ(7)を作る。「高可用性(HA)VPN」を選択する
    20230226-03.jpg

  • (7)には以下のように値をセットする

    • VPNゲートウェイの名前: (7)の場合はvpn-peer1, (8)の場合はvpn-peer2
    • ネットワーク: (3)の名前。(7)-vpn-peer1の場合はvpc-peer1になる
    • リージョン: VPNゲートウェイを作成するリージョン。ここでは作成したサブネットと同じリージョンにする。(7)の場合は(3)のサブネットsubnet-peer1のある、東京リージョンにする
    • VPN トンネルの内部 IP スタックタイプ
      • IPv4(シングルスタック)を選択
        20230226-04.jpg

作成したら「VPNトンネルの追加」の作業を行わず、もう1つブラウザのタブを開き、(2)-プロジェクトpeer2の(4)-vpc-peer2の中に、同じくVPNゲートウェイ(8)を作る。(7)と同様に以下のような値をセットする

  • (8)には以下のように値をセットする
    • VPNゲートウェイの名前: (8)の場合はvpn-peer2
    • ネットワーク: (4)の名前。(8)-vpn-peer1の場合はvpc-peer2になる
    • リージョン: VPNゲートウェイを作成するリージョン。ここでは作成したサブネットと同じリージョンにする。(8)の場合は(4)のサブネットsubnet-peer2のある、東京リージョンにする
    • VPN トンネルの内部 IP スタックタイプ
      • IPv4(シングルスタック)を選択
        20230226-05.jpg

VPNトンネルの作成

ここまでで以下のような状態になっている。VPNゲートウェイが作成され、グローバルIPアドレスがVPNゲートウェイごとに2つ割り当てられている(図中の(9), (10), (11), (12))
Screenshot from 2023-02-26 23-27-58.png

それぞれのVPNゲートウェイの中に、VPNトンネルを作成する。まずは(7)-vpn-peer1の中に、(13), (16)を作成する

  • 以下のように値をセットする
    • ピア VPN ゲートウェイ: Google Cloudを選択
    • プロジェクト: 対向となるプロジェクトを指定する。この場合は(2)-peer2を指定する
    • VPNゲートウェイの名前: 対向となるVPNゲートウェイを指定する。この場合は(8)-vpn-peer2を指定する
    • 高可用性: VPNトンネルのペアを作成するを選択
    • Cloud Router: 自分のVPC内のCloud Routerを指定する。この場合は(5)-router-peer1
      20230226-06.jpg

続けてトンネル(13), (16)の設定を作成する

  • 以下のように値をセットする
    • 1つめのトンネル(13)
      • 名前: tunnel1-peer1
      • IKEバージョン: IKEv2(デフォルト値)
      • IKE事前共有キー: [生成してコピー]を押して自動生成し、メモしておく。これが(15)-事前共有キー(1)になる。
    • 2つめのトンネル(16)
      • 名前: tunnel2-peer1
      • IKEバージョン: IKEv2(デフォルト値)
      • IKE事前共有キー: [生成してコピー]を押して自動生成し、メモしておく。これが(18)-事前共有キー(2)になる。
        20230226-07.jpg

[作成して続行]をクリックする。作成が完了したら、もう1つのブラウザタブに移動し、(8)-vpn-peer2の中に、(14), (17)を作成する

  • 以下のように値をセットする
    • ピア VPN ゲートウェイ: Google Cloudを選択
    • プロジェクト: 対向となるプロジェクトを指定する。この場合は(1)-peer1を指定する
    • VPNゲートウェイの名前: 対向となるVPNゲートウェイを指定する。この場合は(7)-vpn-peer1を指定する
    • 高可用性: VPNトンネルのペアを作成するを選択
    • Cloud Router: 自分のVPC内のCloud Routerを指定する。この場合は(6)-router-peer2
      20230226-08.jpg

続けてトンネル(14), (17)の設定を作成する

  • 以下のように値をセットする
    • 1つめのトンネル(14)
      • 名前: tunnel1-peer2
      • IKEバージョン: IKEv2(デフォルト値)
      • IKE事前共有キー: (15)-事前共有キー(1)をメモからペーストする
    • 2つめのトンネル(17)
      • 名前: tunnel2-peer2
      • IKEバージョン: IKEv2(デフォルト値)
      • IKE事前共有キー: (18)-事前共有キー(2)をメモからペーストする
        20230226-09.jpg

[作成して続行]をクリックする。

BGPの設定

ここまでで以下のような状態になっている。
Screenshot from 2023-02-26 23-53-09.png

次に作成したトンネルの中に、BGPセッションを設定する

まず(13)-tunnel1-peer1の中に(19)を作成する。
画面上のtunnel1-peer1行の "BGPセッションを構成" をクリックする
20230226-10.jpg

  • 以下のように値をセットする
    • 名前: bgp-tunnel1-peer1
    • ピアASN: 対向となるASN。この場合は(6)の64513を指定する
    • アドバタイズされたルートの優先度: 空欄(デフォルト値)
    • マルチプロトコルBGP
      • Allocate BGP IPv4 address: 自動を選択
      • BGPピア: 有効を選択
      • MD5認証: 無効を選択
    • アドバタイズされたルート、Bidirectional Forwarding Detection(BFD): 変更しない
      20230226-11.jpg

[保存して次へ] をクリック

同様に(16)-tunnel2-peer1の中に(21)を作成する。
画面上のtunnel2-peer1行の "BGPセッションを構成" をクリックする
20230226-12.jpg

  • 以下のように値をセットする
    • 名前: bgp-tunnel2-peer1
    • ピアASN: 対向となるASN。この場合は(6)の64513を指定する
    • アドバタイズされたルートの優先度: 空欄(デフォルト値)
    • マルチプロトコルBGP
      • Allocate BGP IPv4 address: 自動を選択
      • BGPピア: 有効を選択
      • MD5認証: 無効を選択
    • アドバタイズされたルート、Bidirectional Forwarding Detection(BFD): 変更しない
      20230226-13.jpg

[保存して次へ] をクリック

2つのBGPセッションが設定されていることを確認して、[BGP構成を保存]をクリック
20230226-14.jpg

確認画面の[OK]を押して閉じると、以下のような画面が表示される。
20230226-16.jpg
上記の(23),(24),(25),(26)は以降の手順で使用するためメモしておく

続けてもう1つのタブの方に移動して、同様にBGPセッションを作成する

(14)-tunnel1-peer2の中に(20)を作成する。
画面上のtunnel1-peer2行の "BGPセッションを構成" をクリックする
20230226-15.jpg

  • 以下のように値をセットする
    • 名前: bgp-tunnel1-peer2
    • ピアASN: 対向となるASN。この場合は(5)の64512を指定する
    • アドバタイズされたルートの優先度: 空欄(デフォルト値)
    • マルチプロトコルBGP
      • Allocate BGP IPv4 address: 手動を選択
        • Cloud RouterのBGP IPv4アドレス: (24)の値をセット(先程メモしたときの表記と逆転していることに注意)
        • BGPピアIPv4アドレス: (23)の値をセット(先程メモしたときの表記と逆転していることに注意)
      • BGPピア: 有効を選択
      • MD5認証: 無効を選択
    • アドバタイズされたルート、Bidirectional Forwarding Detection(BFD): 変更しない
      20230226-17.jpg

[保存を押して次へ]をクリック

同様に(17)-tunnel2-peer2の中に(22)を作成する。
画面上のtunnel2-peer2行の "BGPセッションを構成" をクリックする
20230226-18.jpg

  • 以下のように値をセットする
    • 名前: bgp-tunnel2-peer2
    • ピアASN: 対向となるASN。この場合は(5)の64512を指定する
    • アドバタイズされたルートの優先度: 空欄(デフォルト値)
    • マルチプロトコルBGP
      • Allocate BGP IPv4 address: 手動を選択
        • Cloud RouterのBGP IPv4アドレス: (26)の値をセット(先程メモしたときの表記と逆転していることに注意)
        • BGPピアIPv4アドレス: (25)の値をセット(先程メモしたときの表記と逆転していることに注意)
      • BGPピア: 有効を選択
      • MD5認証: 無効を選択
    • アドバタイズされたルート、Bidirectional Forwarding Detection(BFD): 変更しない
      20230226-19.jpg

[保存を押して次へ]をクリック

2つのBGPセッションが設定されていることを確認して、[BGP構成を保存]をクリック
20230226-20.jpg

まとめ画面でBGPセッションが確率していればOK
20230226-21.jpg

Firewallルールの設定

(3)-vpc-peer1, (4)-vpc-peer2のファイアウォールルールを設定し、両方のサブネットが疎通するようにする

おわりです

おつかれさまでした!
慣れれば割とすんなりできるようになるかも。オンプレとの接続もなんとなくできるようになるかもです。

0
1
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?