Carpe Diem

備忘録

Cloud VPN (Classic VPN) を使ってみる

概要

GCPVPCは物理ネットワークを仮想化したネットワークであり、異なるVPC同士は直接疎通することはできません。
通常であればExternal IP経由もしくはLBなどを用いてアクセスしますが、内部IPで疎通したい場合はVPNを構築する必要があります。

検証

事前準備

VPCの用意

VPC リージョン Subnet
vpn-network-1 us-central1 10.5.4.0/24
vpn-network-2 europe-west1 10.1.3.0/24

f:id:quoll00:20210725110253p:plain

Firewallの用意

それぞれのVPC

を許可するFirewallを設定します。

f:id:quoll00:20210725110538p:plain

VMの用意

疎通確認のためにそれぞれのVPCVMインスタンスを用意します。

f:id:quoll00:20210725110908p:plain

現状だとExternal IPに対しては先程のFirewallによってpingが打てますが、

server-1:~$ ping -c 3 35.187.39.221
PING 35.187.39.221 (35.187.39.221) 56(84) bytes of data.
64 bytes from 35.187.39.221: icmp_seq=1 ttl=53 time=101 ms
64 bytes from 35.187.39.221: icmp_seq=2 ttl=53 time=100 ms
64 bytes from 35.187.39.221: icmp_seq=3 ttl=53 time=100 ms

Internal IPはそもそも接続できないのでコケます。

server-1:~$ ping -c 3 10.1.3.2
PING 10.1.3.2 (10.1.3.2) 56(84) bytes of data.
--- 10.1.3.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2051ms

server-2 → server-1も同様です。

server-2:~$ ping -c 3 10.5.4.2
PING 10.5.4.2 (10.5.4.2) 56(84) bytes of data.
--- 10.5.4.2 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2026ms

VPN環境の構築

静的IPの予約

VPN gatewayのための静的IPを予約します。

f:id:quoll00:20210725112615p:plain

VPN gatewayの作成

vpn-network-1用のgateway

f:id:quoll00:20210725111659p:plain

gatewayの設定をします。

f:id:quoll00:20210725112740p:plain

vpn-network-1vpn-network-2のトンネルの設定をします。

f:id:quoll00:20210725113448p:plain

主な設定は以下です。

項目
Name vpn-1-tunnel-1-to-vpn-2
Remote peer IP address 34.140.112.116
(先程vpn2 gateway用に作った静的IP)
IKE pre-shared key
(共有シークレット)
uHOG9rVrdXLrcVR5IP/js5qltCjDE24P
(自動生成)
Routing options Route-based
Remote network IP ranges 10.1.3.0/24
vpn-network-2のサブネット)

現時点ではピアとなるVPN gatewayが無いのでトンネルの状態はNo incoming packetsになっています。

f:id:quoll00:20210725114403p:plain

vpn-network-2用のgateway

同様に作成します。

f:id:quoll00:20210725114605p:plain

vpn-network-2vpn-network-1のトンネルの設定をします。

f:id:quoll00:20210725114756p:plain

主な設定は以下です。

項目
Name vpn-2-tunnel-2-to-vpn-1
Remote peer IP address 34.133.28.21
(先程vpn1 gateway用に作った静的IP)
IKE pre-shared key
(共有シークレット)
uHOG9rVrdXLrcVR5IP/js5qltCjDE24P
(先程と同じ値)
Routing options Route-based
Remote network IP ranges 10.5.4.0/24
vpn-network-1のサブネット)

作成すると先程のvpn1 gatewayと疎通が取れトンネル状態がEstablishedに変わります。

f:id:quoll00:20210725115104p:plain

動作確認

server-1server-2を確認してみます。

server-1:~$ ping -c 3 10.1.3.2
PING 10.1.3.2 (10.1.3.2) 56(84) bytes of data.
64 bytes from 10.1.3.2: icmp_seq=1 ttl=62 time=102 ms
64 bytes from 10.1.3.2: icmp_seq=2 ttl=62 time=99.4 ms
64 bytes from 10.1.3.2: icmp_seq=3 ttl=62 time=99.5 ms

疎通できています。

次にserver-2server-1を確認してみます。

$ ping -c 3 10.5.4.2
PING 10.5.4.2 (10.5.4.2) 56(84) bytes of data.
64 bytes from 10.5.4.2: icmp_seq=1 ttl=62 time=102 ms
64 bytes from 10.5.4.2: icmp_seq=2 ttl=62 time=99.5 ms
64 bytes from 10.5.4.2: icmp_seq=3 ttl=62 time=99.5 ms

疎通できています。

注意点

SLA

Classic VPNの場合 99.9%の可用性です。

ネットワーク帯域幅

各 Cloud VPN トンネルでは、上り(内向き)と下り(外向き)のトラフィックは、合計 3 ギガビット/秒(Gbps)までサポートされます。

ref: Cloud VPN の概要  |  Google Cloud

とあるようにCloud VPNは大規模なトラフィックには向いていません。

まとめ

Cloud VPN (Classic VPN) を使うことで異なるVPC間でも内部IPを用いての疎通ができるようになりました。

参考