概要
GCPのVPCは物理ネットワークを仮想化したネットワークであり、異なる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 |
Firewallの用意
それぞれのVPCに
- icmp
- ssh
を許可するFirewallを設定します。
VMの用意
疎通確認のためにそれぞれのVPCにVMインスタンスを用意します。
現状だと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の作成
vpn-network-1用のgateway
gatewayの設定をします。
vpn-network-1
→vpn-network-2
のトンネルの設定をします。
主な設定は以下です。
項目 | 値 |
---|---|
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
になっています。
vpn-network-2用のgateway
同様に作成します。
vpn-network-2
→vpn-network-1
のトンネルの設定をします。
主な設定は以下です。
項目 | 値 |
---|---|
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
に変わります。
動作確認
server-1
→server-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-2
→server-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を用いての疎通ができるようになりました。