入門!Cloud VPN で社内環境と VPN 接続する方法

記事タイトルとURLをコピーする

こんにちは、G-genの渡邉 @norry です。

昨今クラウドネイティブというワードを当たり前のように耳にするようになりました。 自分はクラウドの利点を徹底的に活用する!というような意味合いで捉えいています、システムを構築・運用する際にまずクラウドをベースにして使い倒していく感じでしょうか。

弊社はフルリモートで働くベンチャー企業である事もあり、社内にオンプレミスのサーバーを保有しておらず、VPN環境も利用していません。

とはいえ、日本の多くの企業では社内にサーバーがあり、これからクラウドへ移行し、まずはオンプレミスとクラウドのハイブリッドでの運用や、インターネット側には公開せず社内システムを利用したいと言う事もあると思います。

本番環境なら専用線サービスであるCloud Interconnect を利用して閉域網で接続する事をおすすめしますが、予算の関係や気軽に開始したい方々へ向けて社内 LAN から Google Cloud (旧GCP ) で簡単に VPN接続する手順をご案内いたします。

Cloud VPN とは

Cloud VPN とは IPsec VPN 接続を使用して、オンプレミス ネットワーク と VPC ネットワークをプライベートに接続するサービスです。

詳細は以下の記事で解説していますので、ご参照ください。

blog.g-gen.co.jp

アーキテクチャ

構成図

今回はシンプルな下図のような構成で構築します。

構成図
オンプレミス側で利用したルーターは RTX1210 になります。(少し古い機種ですがベースの部分は現行モデルとほぼ変わらないはず。。。)

Cloud VPN のタイプ

公式ドキュメントの引用になりますが

Google Cloud には、HA VPN と Classic VPN の 2 種類の Cloud VPN ゲートウェイがあります。ただし、Classic VPN の特定の機能が 2022 年 3 月 31 日に非推奨となります。

とありますので今回は HA VPN 構成で設定していきます。

HA (High Availability) VPN とは

単一リージョン内の IPsec VPN 接続を使用して、オンプレミス ネットワークを VPC ネットワークに安全に接続できる、高可用性(High Availability)Cloud VPN ソリューションです。

オンプレミス ネットワークとしていますが、実際には IPsec VPN 接続可能な AWS や Microsoft Azure とも接続出来ます。

HA VPN は2 つのインターフェースに1つずつ、2 つの外部 IP アドレスを自動的に選択し、99.99% のサービス可用性の SLA を提供します。

アクティブインターフェイスを1つ、外部アドレス1つでも実は通信可能ですがその場合 SLA は99.99% となりません。

VPN 接続で理解しておくべき用語

Cloud VPN で HA VPN 構成を組む場合に良く出てくる言葉を下記にまとめておきます、さらっと確認しておいていただいた方が全体の理解が深まるかと思います。

用語 簡単な解説
1 AS 番号 (Autonomous System number) ISP など大きなネットワークに割り当てられる一意の識別番号
2 BGP (Border Gateway Protocol) AS を他のAS に広告したりルーティングしたりするためのプロトコル
3 Cloud VPN ゲートウェイ(IP) Google Cloud の外側 (WAN) IP アドレス
4 ピア VPN ゲートウェイ(IP) オンプレミスの 外側 (WAN) IP アドレス
5 Cloud Router の BGP IP IPsec VPN でトンネルを張る時の Google Cloud 側 BGP 用 IP アドレス
6 BGP ピア IP IPsec VPN でトンネルを張る時のオンプレミス側の BGP用 IP アドレス

Google Cloud 側の設定

VPC の設定

まずは VPC (Virtual Private Cloud) を設定します。VPCって何? という方は以下を参照ください。

blog.g-gen.co.jp

管理コンソール > VPCネットワーク > VPC ネットワークの作成 から以下のように作成しました。

VPC サブネット作成

また、合わせて組織ポリシーで以下の設定を実施しておく事をおすすめします。

ポリシーID ポリシー概要 理由と説明
constraints/compute.skipDefaultNetworkCreation デフォルト ネットワークの作成をスキップ デフォルトネットワークは通常使わないため、自動作成されないよう設定する
constraints/iam.automaticIamGrantsForDefaultServiceAccounts デフォルトのサービス アカウントに対する IAM ロールの自動付与の無効化 有効にすることで VM を最初に作成する時に作成されるデフォルトの Compute Engine サービスアカウントに Owner 権限が付与されることを防ぐ

Google Cloud Engine (GCE) インスタンスの作成

管理コンソール > Compute Engine > VM インスタンス > + インスタンスを作成

設定内容は次のとおりです、今回は外部 IP を持たず、インターネット側から直接アクセス出来ない形にしています。ただし VM 側からは Cloud NAT を通じてインターネット接続が可能です。

項目 設定値
名前 windows-1
ゾーン asia-northeast2-a
マシンタイプ e2-medium
OS windows-server-2019
ネットワーク norry-vpc
サブネットワーク private
プライマリ内部 IP 10.0.1.2
外部 IP なし

ファイアウォールルールの設定

管理コンソール > VPCネットワーク > ファイアウォール > + ファイアウォールを作成

作成した VPC に対しファイアウォールの設定を行います。今回は VM に 社内 LAN (192.168.100.0/24) からの RDP と Ping を通す為の icmp を許可しました。

ファイアウォール設定

Cloud VPN を作成

VPC の作成、VMの作成、ファイアウォールの設定が完了しましたので実際に Cloud VPN の設定に入っていきます。

HA VPN では Cloud VPN ゲートウェイで IP を2つ、トンネルも2本張る構成にしています。 ASN はプライベート ASN を利用しています。 設定するパラメータは次の通りです。

項目 設定値
名前 norry-ha-vpn
ネットワーク norry-vpc
リージョン asia-northeast2
Cloud VPN ゲートウェイ(IP) ① 34.xxx.xxx.xxx
Cloud VPN ゲートウェイ(IP) ② 35.xxx.xxx.xxx
トンネル名 ① norry-inhouse-tn
トンネル名 ② norry-inhouse-tn2
ピア VPN ゲートウェイ(IP) 118.xxx.xxx.xxx
Cloud Router ASN 65001
ピアルーター ASN 65002
Cloud Router の BGP IP ① 169.254.0.1
Cloud Router の BGP IP ② 169.254.1.1
BGP ピア IP ① 169.254.0.2
BGP ピア IP ② 169.254.1.2
IKEバージョン IKEv2
共有シークレット 任意
ルーティングオプション ポリシーベース
リモートネットワークIPの範囲 192.168.100.0/24
ローカルIP範囲 10.0.1.0/24

では Google Cloud 側の設定に入っていきましょう。

管理コンソール > ハイブリッド接続 > VPN > + VPN 設定ウィザード から

高可用性 (HA) VPN を選択します。

VPN 設定ウィザード - VPN の作成

「VPN ゲートウェイの名前」「ネットワーク」「リージョン」を選択し、作成して実行

ピア VPN ゲートウェイはオンプレミスまたは非 Google Cloud を選択し、「新しい VPN ゲートウェイを作成する」

「名前」とインターフェース 1 つのインターフェース を選択し、RTX1210 のグローバル IP を設定します。グローバル IP を複数お持ちの場合はインターフェースを増やす事が可能です。

次に新しくルーターを作成します

「名前」と「ASN」を設定し作成します。

続いて IKE まわりの設定をします。「名前」「 IKE バージョン」「 IKE 事前共有キー」を入力。

BGP セッションの作成、「名前」「ピア ASN」「Cloud Router の BGP IP」「BGP ピア IP」を入力。BGP IP はリンクローカルアドレスを使用しました。

1つ目のトンネル作成まで終わりましたので 「 VPN トンネル作成」で 2 本目のトンネルを作成してください。

社内オンプレミスルーター (RTX1210) の設定

Config は Yamaha 公式ページを参照して以下の設定をしています。

IPsecトンネルの設定1

tunnel select 1
ipsec tunnel 1
ipsec sa policy 1 1 esp aes-cbc sha-hmac
ipsec ike version 1 2
ipsec ike always-on 1 on
ipsec ike encryption 1 aes-cbc
ipsec ike group 1 modp1024
ipsec ike hash 1 sha
ipsec ike keepalive log 1 on
ipsec ike keepalive use 1 on rfc4306
ipsec ike local address 1 192.168.100.1
ipsec ike local name 1 118.xxx.xxx.xxx ipv4-addr
ipsec ike nat-traversal 1 on
ipsec ike pfs 1 on
ipsec ike pre-shared-key 1 text (事前共有鍵)
ipsec ike remote address 1 34.xxx.xxx.xxx
ipsec ike remote name 1 34.xxx.xxx.xxx ipv4-addr
ip tunnel address 169.254.0.2
ip tunnel remote address 169.254.0.1
ip tunnel tcp mss limit auto
tunnel enable 1

IPsecトンネルの設定2

tunnel select 2
ipsec tunnel 2
ipsec sa policy 2 2 esp aes-cbc sha-hmac
ipsec ike version 2 2
ipsec ike always-on 2 on
ipsec ike encryption 2 aes-cbc
ipsec ike group 2 modp1024
ipsec ike hash 2 sha
ipsec ike keepalive log 2 on
ipsec ike keepalive use 2 on rfc4306
ipsec ike local address 2 192.168.100.1
ipsec ike local name 2 118.xxx.xxx.xxx ipv4-addr
ipsec ike nat-traversal 2 on
ipsec ike pfs 2 on
ipsec ike pre-shared-key 2 text (事前共有鍵)
ipsec ike remote address 2 35.xxx.xxx.xxx
ipsec ike remote name 2 35.xxx.xxx.xxx ipv4-addr
ip tunnel address 169.254.1.2
ip tunnel remote address 169.254.1.1
ip tunnel tcp mss limit auto
tunnel enable 2

IPsecトンネル 共通設定

ipsec auto refresh on

BGPの設定

bgp use on
bgp autonomous-system 65002
bgp neighbor 1 65001 169.254.0.1 local-address=169.254.0.2
bgp neighbor 2 65001 169.254.1.1 local-address=169.254.1.2
bgp import filter 1 equal 192.168.100.0/24
bgp import 65001 static filter 1 

BGPの設定 有効化

bgp configure refresh

接続確認

Ping と RDP 接続確認

以上で設定完了です、社内 PC から Ping のテストをしてみます。

norry@penguin:~$ ping 10.0.1.2
PING 10.0.1.2 (10.0.1.2) 56(84) bytes of data.
64 bytes from 10.0.1.2: icmp_seq=1 ttl=124 time=30.1 ms
64 bytes from 10.0.1.2: icmp_seq=2 ttl=124 time=29.6 ms
64 bytes from 10.0.1.2: icmp_seq=3 ttl=124 time=27.5 ms
64 bytes from 10.0.1.2: icmp_seq=4 ttl=124 time=26.6 ms
64 bytes from 10.0.1.2: icmp_seq=5 ttl=124 time=25.6 ms
64 bytes from 10.0.1.2: icmp_seq=6 ttl=124 time=29.2 ms
64 bytes from 10.0.1.2: icmp_seq=7 ttl=124 time=44.0 ms
^C
--- 10.0.1.2 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 16ms
rtt min/avg/max/mdev = 25.586/30.368/43.999/5.770 ms

RDP も接続出来ました。

渡邉 宣之 (記事一覧)

クラウドソリューション部

AI/ML、アプリケーションモダナイゼーション、データ分析基盤の構築、クラウド管理運用やネットワークなどインフラ系は何でも、Google Workspace 活用も推進中

週末フォトグラファーで、観葉植物や塊根植物にハマっていて種から育ててます。