GCPとVPN接続する

GCPの$300クレジット(1年)があるのでAWSだけでなくGCPも触ってみる。

例によって自宅とVPN張って見る。構成はこんな感じ。

概略構成

前提条件

  • GCPのアカウント設定済み
  • (VPC作成後)インスタンスは作成済み
  • 家側のNAT等の転送ルールは設定済み
  • 今回はポリシーベースVPNとするので GRE over IPSec (訂正:GRE使いません)

流れ

1. VPC作成
2. サブネット作成
3. FW設定
4. インスタンス作成(ここでは省略)
5. VPN設定(GCP & Cisco)

Google Cloud Consoleにログインして, VPCネットワークを作成する。

1. VPC作成

「VPCネットワーク」から「VPCネットワーク」を選択

「VPCネットワークを作成」を選択

2.  サブネット作成

必要事項記入して「作成」

この後, 作成したサブネット上にインスタンスを作成する。(手順は省略)

3. FW設定

サブネットに対する通信許可設定を入れる。
VPCから作成したVPC「vpc01」を選択
ファイアウォールルールを選択し, ルールの追加をクリック
※画像は既に作成済み
ルールを記入していく
ここでは自宅の環境からサブネット全体に対して全て通信許可としている
完了

4. VPN作成

「VPCネットワーク」から「VPN」選択

「VPN接続を作成」をクリック

必要事項を記入する。IPアドレスはプルダウンをクリックして新規作成する。

名前を適当につけて「予約」

するとGlobal IP Addressが割当たる

内容確認して「完了」をクリック

GCP側はこれで準備完了

5. Ciscoルータの設定

GCPでサポートしている暗号化セットはここに記載されている。
Supported IKE Ciphers

関連Config抜粋

!
crypto ikev2 proposal GCP_proposal
encryption aes-cbc-256 aes-cbc-192 aes-cbc-128
integrity sha256
group 16
!
crypto ikev2 policy GCP_policy
proposal GCP_proposal
!
crypto ikev2 keyring GCP_Key
peer GCP
address <GCPのIPアドレス>
pre-shared-key <設定した共有キー>
!
!
!
crypto ikev2 profile IKEv2_Profile
match identity remote address <GCPのIPアドレス> 255.255.255.255
identity local address <家のGlobal IP>
authentication remote pre-share
authentication local pre-share
keyring local GCP_Key
lifetime 3600
!

crypto ipsec transform-set TS esp-aes 256 esp-sha256-hmac
mode tunnel
!
crypto ipsec profile GCP_Profile
set transform-set TS
set pfs group16
set ikev2-profile IKEv2_Profile
!
!
crypto map GCP_map 5 ipsec-isakmp
set peer <GCPのIPアドレス>
set transform-set TS
set pfs group16
set ikev2-profile IKEv2_Profile
match address GCP_ACL
!
!
interface Vlan100
description to 192.168.1.0/24
ip address 192.168.1.2 255.255.255.0
crypto map GCP_map
!
ip access-list extended GCP_ACL
permit ip 192.168.0.0 0.0.255.255 10.10.10.0 0.0.0.255
!
!

通信確認

Ping確認

#ping 10.10.10.10 source 192.168.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.10, timeout is 2 seconds:
Packet sent with a source address of 192.168.1.2
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 160/162/164 ms

IP-Secステータス

#show crypto session
Crypto session current status

Interface: Vlan100
Profile: IKEv2_Profile
Session status: UP-ACTIVE
Peer: 35.231.219.234 port 4500
Session ID: 2208
IKEv2 SA: local 192.168.1.2/4500 remote <GCPのIPアドレス>/4500 Active
IPSEC FLOW: permit ip 192.168.0.0/255.255.0.0 10.10.10.0/255.255.255.0
Active SAs: 2, origin: crypto map

以上。
次はルートベースのVPN設定を試す。

ちなみに, MTUサイズを確認してみるとトンネルのオーバーヘッド含めて1422だった。

$ ping 10.10.10.10  -s 1394 -M do
PING 10.10.10.10 (10.10.10.10) 1394(1422) bytes of data.
1402 bytes from 10.10.10.10: icmp_seq=1 ttl=63 time=162 ms
1402 bytes from 10.10.10.10: icmp_seq=2 ttl=63 time=161 ms
1402 bytes from 10.10.10.10: icmp_seq=3 ttl=63 time=160 ms
^C
--- 10.10.10.10 ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 3001ms
rtt min/avg/max/mdev = 160.511/161.357/162.479/0.947 ms
$ ping 10.10.10.10 -s 1395 -M do
PING 10.10.10.10 (10.10.10.10) 1395(1423) bytes of data.
ping: sendmsg: Message too long
ping: sendmsg: Message too long
ping: sendmsg: Message too long
^C
--- 10.10.10.10 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2004ms