GCPサイト間VPNの構築(6.gcloud CLI によるVPN接続の作成)

GCPサイト間VPNの構築(6.gcloud CLI によるVPN接続の作成)

【前回】GCPサイト間VPNの構築(5.ステータス確認・疎通確認)
【次回】GCPサイト間VPNの構築(7.Cloud Deployment Manager)

目次

ネットワーク構成

下記のネットワーク構成で、オンプレ環境に見立てたCML上のLAN(172.16.0.0/24)とGCP上のサブネット(10.0.0.0/24)が直接通信できるようにします。※Server(172.16.0.1)とVMインスタンス(10.0.0.100)で、Pingによる疎通確認ができるようにしていきます。

ネットワーク構成

GCPコンソール画面上でのGUIによるVPN構築については、下記を参照してください。

gcloud CLI(gcloudコマンド)のインストール方法については、下記を参照してください。

gcloud CLI(gcloudコマンド)によるVPN接続の構築

GCPのVPN接続には、「高可用性(HA) VPN」と「Classic VPN」があります。ここでは、「高可用性(HA) VPN」でVPNを構築します。※Googleとしても、「Classic VPN」には一部非推奨な構成・機能があるため、「高可用性(HA) VPN」への移行を推奨しています。

Cloud HA VPN ゲートウェイの作成

GCP側のゲートウェイとなる「Cloud HA VPNゲートウェイ」を作成します。

gcloud compute vpn-gateways create cvpngw-gcp-vpn-test-002 \
    --region=asia-northeast1 --network=vpc-gcp-vpn-test-001
Terminal[~]: gcloud compute vpn-gateways create cvpngw-gcp-vpn-test-002 \
             --region=asia-northeast1 --network=vpc-gcp-vpn-test-001

Creating VPN Gateway...done.
NAME                     INTERFACE0       INTERFACE1       NETWORK               REGION
cvpngw-gcp-vpn-test-002  XXX.XXX.XXX.XXX  XXX.XXX.XXX.XXX  vpc-gcp-vpn-test-001  asia-northeast1

2つのインターフェースが作成され、それぞれにグローバルIPアドレスが振られます。

ピアVPNゲートウェイの作成

ローカルネットワーク側(オンプレ環境等)のゲートウェイとなる「ピアVPNゲートウェイ」を作成します。インターフェース0のIPアドレスには、ローカルネットワーク側のグローバルIPアドレスを入力します。

gcloud compute external-vpn-gateways create pvpngw-gcp-vpn-test-002 \
    --interfaces=0=XXX.XXX.XXX.XXX
Terminal[~]: gcloud compute external-vpn-gateways create pvpngw-gcp-vpn-test-002 \
             --interfaces=0=XXX.XXX.XXX.XXX

Creating external VPN gateway...done.
NAME                     REDUNDANCY_TYPE
pvpngw-gcp-vpn-test-002  SINGLE_IP_INTERNALLY_REDUNDANT

自宅等のインターネット環境の場合、利用しているグローバルIPアドレスは、以下のCMANのページで確認できます。

グローバルIPアドレスの確認

Cloud Router の作成

GCP側の終端ルーターとなる「Cloud Router」を作成します。

gcloud compute routers create crouter-gcp-vpn-test-002 \
    --region=asia-northeast1 --network=vpc-gcp-vpn-test-001 \
    --asn=65000
Terminal[~]: gcloud compute routers create crouter-gcp-vpn-test-002 \
             --region=asia-northeast1 --network=vpc-gcp-vpn-test-001 \
             --asn=65000

Creating router [crouter-gcp-vpn-test-002]...done.
NAME                      REGION           NETWORK
crouter-gcp-vpn-test-002  asia-northeast1  vpc-gcp-vpn-test-001

VPNトンネルの作成

VPNトンネルを作成します。

gcloud compute vpn-tunnels create vpn-tunnel-gcp-vpn-test-002 \
    --region=asia-northeast1 \
    --vpn-gateway=cvpngw-gcp-vpn-test-002 \
    --peer-external-gateway=pvpngw-gcp-vpn-test-002 --peer-external-gateway-interface=0 \
    --router=crouter-gcp-vpn-test-002 --interface=0 \
    --ike-version=2 \
    --shared-secret=********************************
Terminal[~]: gcloud compute vpn-tunnels create vpn-tunnel-gcp-vpn-test-002 \
             --region=asia-northeast1 \
             --vpn-gateway=cvpngw-gcp-vpn-test-002 \
             --peer-external-gateway=pvpngw-gcp-vpn-test-002 --peer-external-gateway-interface=0 \
             --router=crouter-gcp-vpn-test-002 --interface=0 \
             --ike-version=2 \
             --shared-secret=********************************

Creating VPN tunnel...done.
NAME                         REGION           GATEWAY                  VPN_INTERFACE  PEER_ADDRESS
vpn-tunnel-gcp-vpn-test-002  asia-northeast1  cvpngw-gcp-vpn-test-002  0              XXX.XXX.XXX.XXX

“*******”は、任意の事前共有キーを指定します。ここで指定した事前共有キーは、ローカルネットワーク側のルーターの設定で使用します。

Cloud Router へのインターフェース追加

Cloud RouterにBGPセッション用のインターフェースを追加します。

gcloud compute routers add-interface crouter-gcp-vpn-test-002 \
    --region=asia-northeast1 \
    --interface-name if-bgp-gcp-vpn-test-002 \
    --vpn-tunnel vpn-tunnel-gcp-vpn-test-002 \
    --ip-address 169.254.0.5 --mask-length 30
Terminal[~]: gcloud compute routers add-interface crouter-gcp-vpn-test-002 \
             --region=asia-northeast1 \
             --interface-name if-bgp-gcp-vpn-test-002 \
             --vpn-tunnel vpn-tunnel-gcp-vpn-test-002 \
             --ip-address 169.254.0.5 --mask-length 30

Updated [https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1/routers/crouter-gcp-vpn-test-002].

Cloud Router へのBGPピア追加

Cloud RouterにBGPピアを追加します。

gcloud compute routers add-bgp-peer crouter-gcp-vpn-test-002 \
    --region=asia-northeast1 \
    --peer-name bgp-gcp-vpn-test-002 \
    --peer-asn 65001 \
    --interface if-bgp-gcp-vpn-test-002 \
    --peer-ip-address 169.254.0.6
Terminal[~]: gcloud compute routers add-bgp-peer crouter-gcp-vpn-test-002 \
             --peer-name bgp-gcp-vpn-test-002 \
             --peer-asn 65001 \
             --interface if-bgp-gcp-vpn-test-002 \
             --peer-ip-address 169.254.0.6 \
             --region=asia-northeast1

Creating peer [bgp-gcp-vpn-test-002] in router [crouter-gcp-vpn-test-002]...done.

BGPピア側のルーター設定

BGPピアとなるCiscoルーターの設定については、下記を参照しください。

GCP側のステータス確認

VPNトンネル・BGPセッションの確認

下記のコマンドを実行し、VPNトンネルとBGPセッションのステータスを確認します。

gcloud compute vpn-tunnels describe vpn-tunnel-gcp-vpn-test-002
Terminal[~]: gcloud compute vpn-tunnels describe vpn-tunnel-gcp-vpn-test-002
creationTimestamp: '2022-05-05T18:47:48.603-07:00'
description: ''
detailedStatus: Tunnel is up and running.
id: 'XXXXXXXXXXXXXXXXXXX'
ikeVersion: 2
kind: compute#vpnTunnel
localTrafficSelector:
- 0.0.0.0/0
name: vpn-tunnel-gcp-vpn-test-002
peerExternalGateway: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/global/externalVpnGateways/pvpngw-gcp-vpn-test-002
peerExternalGatewayInterface: 0
peerIp: XXX.XXX.XXX.XXX
region: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1
remoteTrafficSelector:
- 0.0.0.0/0
router: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1/routers/crouter-gcp-vpn-test-002
selfLink: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1/vpnTunnels/vpn-tunnel-gcp-vpn-test-002
sharedSecret: '*************'
sharedSecretHash: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
status: ESTABLISHED
vpnGateway: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1/vpnGateways/cvpngw-gcp-vpn-test-002
vpnGatewayInterface: 0

detailedStatus: Tunnel is up and running.
→ VPNトンネルがアップしていることが確認できます。

status: ESTABLISHED
→ BGPセッションが確立されていることが確認できます。

受信ルートの確認

下記のコマンドを実行し、BGPでルートを受信していることを確認します。

gcloud compute routers get-status crouter-gcp-vpn-test-002
Terminal[~]: gcloud compute routers get-status crouter-gcp-vpn-test-002
kind: compute#routerStatusResponse
result:
  bestRoutes:
  - asPaths:
    - asLists:
      - 65001
      pathSegmentType: AS_SEQUENCE
    creationTimestamp: '2022-05-06T02:35:48.733-07:00'
    destRange: 172.16.0.0/24
    kind: compute#route
    network: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/global/networks/vpc-gcp-vpn-test-001
    nextHopIp: 169.254.0.6
    nextHopVpnTunnel: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1/vpnTunnels/vpn-tunnel-gcp-vpn-test-002
    priority: 0
    routeType: BGP
  bestRoutesForRouter:
  - asPaths:
    - asLists:
      - 65001
      pathSegmentType: AS_SEQUENCE
    creationTimestamp: '2022-05-06T02:35:45.959-07:00'
    destRange: 172.16.0.0/24
    kind: compute#route
    network: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/global/networks/vpc-gcp-vpn-test-001
    nextHopIp: 169.254.0.6
    priority: 0
    routeStatus: ACTIVE
    routeType: BGP
  bgpPeerStatus:
  - advertisedRoutes:
    - destRange: 10.0.0.0/24
      kind: compute#route
      network: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/global/networks/vpc-gcp-vpn-test-001
      nextHopIp: 169.254.0.5
      nextHopVpnTunnel: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1/vpnTunnels/vpn-tunnel-gcp-vpn-test-002
      priority: 100
      routeType: BGP
    ipAddress: 169.254.0.5
    linkedVpnTunnel: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/regions/asia-northeast1/vpnTunnels/vpn-tunnel-gcp-vpn-test-002
    name: bgp-gcp-vpn-test-002
    numLearnedRoutes: 1
    peerIpAddress: 169.254.0.6
    state: Established
    status: UP
    uptime: 42 minutes, 44 seconds
    uptimeSeconds: '2564'
  network: https://www.googleapis.com/compute/v1/projects/gcp-test-project-001-XXXXXX/global/networks/vpc-gcp-vpn-test-001

destRange: 172.16.0.0/24
nextHopIp: 169.254.0.6
→ 172.16.0.0/24のルートをBGPで受信していることが確認できます。

以上で、GCPサイト間VPNの構築(6.gcloud CLI によるVPN接続の作成)の説明は完了です!

【前回】GCPサイト間VPNの構築(5.ステータス確認・疎通確認)
【次回】GCPサイト間VPNの構築(7.Cloud Deployment Manager)

  • URLをコピーしました!
  • URLをコピーしました!
目次