富士ソフトの佐藤です。
前回ご紹介したPrivate Service Connect(PSC)エンドポイントは、公開サービスに接続するための機能でしたが、公開サービス側のサーバーからは、VPCピアリングやNetwork Connectivity Centerで接続していないVPCへは接続できません。
今回は、Private Serivce Connectインターフェースを利用して、公開サービス側から他のVPCへ接続する方法について紹介します。
- Private Service Connect と 3 種類のタイプについて
- どのようなときに Private Service Connect インターフェースを使うのか
- 設計時のポイント
- PSCインターフェース設定手順
- 動作確認
- まとめ
Private Service Connect と 3 種類のタイプについて
Google Cloud ネットワーキング機能の一つで、外部IPを持たない仮想マシンやオンプレミスのクライアントが、 VPC ネットワーク内からプライベートIPを経由して、次のタイプのマネージド サービスへのアクセスをサポートしています。
- Cloud Storage や BigQuery などの Google API
- Google の公開サービス(Apigee や GKE コントロール プレーンなど)
- サードパーティの公開サービス
- 組織内で開発した公開サービス
Private Service Connect(以下、PSC)には、以下の 3 つのタイプがあります。
1.Endpoint
PSC エンドポイントは、コンシューマー VPC ネットワーク内のクライアントが、アクセスできる内部 IP アドレスです。エンドポイントは、接続したいサービスがあるプロジェクトのサービス アタッチメントまたは Google API のバンドルを参照する転送ルールをデプロイすることで作成されます。
以下は、組織内で開発した公開サービスにアクセスする例です。
以下は、Cloud Storage や BigQuery などの Google API にアクセスする例です。
2.Backend
コンシューマーロードバランサ経由で バックエンドへトラフィックを送信し、公開サービスまたは Google API にアクセスできます。PSC バックエンドは、プロデューサー サービス アタッチメントまたはサポートされている Google API を参照する、PSC ネットワーク エンドポイント グループ(NEG)を使用してデプロイされます。
マネージド サービスの前面にロードバランサを配置すると、同じ接続先を通じて移行元と移行先のサービスを同時に提供でき、移行プロセスを簡素化することができます。また、エンドポイントを介した場合よりもコンシューマーの可視性が高まり制御しやすくなります。
どのようなときに Private Service Connect インターフェースを使うのか
設計時のポイント
PSCインターフェース設定手順
今回は、3 種類ある PSC タイプの中から、PSCインターフェースを使用した 公開サービスへのアクセス手順について紹介します。
提供側のプロジェクトでネットワークアタッチメントを作成
1.JITHUBプロジェクトで、 [ネットワークサービス]-[Private Service Connect ]-[ネットワークアタッチメント]を選択し、[+ネットワークアタッチメントを作成]を選択する。
2. ネットワーク アタッチメントの作成で、以下の情報を入力し、「ネットワーク アタッチメントの作成」を選択する。なお、ネットワークアタッチメントは、リージョンごとに作成する必要があるので、大阪リージョンにもネットワークがある場合は、PSC用のサブネットを作成し、同様の設定を行ってください。
名前:attatch-tokyo01
ネットワーク:mainvpc
リージョン:asia-northeast1(東京)
サブネットワーク:subnet-psc
接続の設定:すべてのプロジェクトの接続を自動的に受け入れる
3.作成したネットワークアタッチメントの「attatch-tokyo01」を選択し、ネットワーク アタッチメントの接続情報を控えておきます。
ネットワークアタッチメント:projects/jithub-414902/regions/asia-northeast1/networkAttachments/attatch-tokyo01
利用側のCompute Engineを作成しPSCインターフェースを設定する。
1.SpokeBプロジェクトで、 [Compute Engine]-[VMインスタンス]を選択し、[+インスタンスを作成]を選択する。
2.「VMの基本」で、エンドポイントを接続の画面で、以下の情報を入力する。
名前:instance-win01
リージョン:asia-northeast1(東京)
3.「マシンの構成」で、マシンタイプを「e2-standard-2」に変更する。
4.「OSとストレージ」で、イメージを「Windows Server 2022 Datacenter」に変更する。
5.「ネットワーキング」で、1つ目のネットワークインターフェースの情報を入力し、「完了」を選択後、「ネットワーク インターフェースを追加」をクリックする。
ネットワーク:vpc-b
サブネットワーク:subnet-b01 IPv4(10.168.10.0/24)
外部 IPv4 アドレス:なし
6.2つ目のネットワークインターフェースの情報を入力し、「完了」を選択後、「作成」をクリックしインスタンスを作成する。
インターフェース タイプ:Private Serivce Connect
ネットワーク アタッチメントのURL:projects/jithub-414902/regions/asia-northeast1/networkAttachments/attatch-tokyo01
IP スタックタイプ:IPv4(シングル スタック)
7.作成したインスタンスに2つのNICがあることを確認する。
インスタンスのルート情報確認とスタティックルートの設定
1.インスタンス名の「instance-win01」をクリックし、「WINDOWS パスワードを設定」からアカウントの作成を行う。
2.Google Consoleの操作をしている端末でコマンドプロンプトを開き、IAP接続のためのトンネル設定を行う。
C:\>gcloud compute start-iap-tunnel instance-win01 3389 --local-host-port=localhost:0 --zone=asia-northeast1-c
Picking local unused port [58146].
WARNING:
To increase the performance of the tunnel, consider installing NumPy. For instructions,
please see https://cloud.google.com/iap/docs/using-tcp-forwarding#increasing_the_tcp_upload_bandwidth
Testing if tunnel connection works.
Listening on port [58146].
3.リモートデスクトップアプリを開き、コンピュータ名に、「localhost:58146」と入力し接続する。
4.IPアドレスとルート情報を確認し、デフォルトルートが10.168.10.13となっていることを確認する。
C:\>ipconfig Windows IP Configuration Ethernet adapter Ethernet: Connection-specific DNS Suffix . : asia-northeast1-c.c.spokeb-430504.internal. Link-local IPv6 Address . . . . . : fe80::1745:2100:ee54:8873%5 IPv4 Address. . . . . . . . . . . : 10.168.10.13 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 10.168.10.1 Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : asia-northeast1-c.c.spokeb-430504.internal. Link-local IPv6 Address . . . . . : fe80::fa8:8240:edb6:f402%4 IPv4 Address. . . . . . . . . . . : 10.24.6.6 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : C:\> C:\>route print =========================================================================== Interface List 5...42 01 0a a8 0a 0d ......Google VirtIO Ethernet Adapter 4...42 01 0a 18 06 06 ......Google VirtIO Ethernet Adapter #2 1...........................Software Loopback Interface 1 =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 10.168.10.1 10.168.10.13 5 10.24.6.0 255.255.255.0 10.24.6.1 10.24.6.6 6 10.24.6.1 255.255.255.255 On-link 10.24.6.6 6 10.24.6.6 255.255.255.255 On-link 10.24.6.6 261 10.168.10.0 255.255.255.0 10.168.10.1 10.168.10.13 6 10.168.10.1 255.255.255.255 On-link 10.168.10.13 6 10.168.10.13 255.255.255.255 On-link 10.168.10.13 261 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 169.254.169.254 255.255.255.255 On-link 10.168.10.13 6 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 224.0.0.0 240.0.0.0 On-link 10.24.6.6 261 224.0.0.0 240.0.0.0 On-link 10.168.10.13 261 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 255.255.255.255 255.255.255.255 On-link 10.24.6.6 261 255.255.255.255 255.255.255.255 On-link 10.168.10.13 261 =========================================================================== Persistent Routes: Network Address Netmask Gateway Address Metric 169.254.169.254 255.255.255.255 On-link 1 ===========================================================================
5.このままでは、オンプレ環境へ接続できないため、以下のスティックルートを設定し、ルート情報が反映されていることを確認する。
html | > |
C:\>route add 192.168.0.0 mask 255.255.0.0 10.24.6.1 -p
OK!
C:\>
C:\>
C:\>route print
===========================================================================
Interface List
5...42 01 0a a8 0a 0d ......Google VirtIO Ethernet Adapter
4...42 01 0a 18 06 06 ......Google VirtIO Ethernet Adapter #2
1...........................Software Loopback Interface 1
===========================================================================
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.168.10.1 10.168.10.13 5
10.24.6.0 255.255.255.0 10.24.6.1 10.24.6.6 6
10.24.6.1 255.255.255.255 On-link 10.24.6.6 6
10.24.6.6 255.255.255.255 On-link 10.24.6.6 261
10.168.10.0 255.255.255.0 10.168.10.1 10.168.10.13 6
10.168.10.1 255.255.255.255 On-link 10.168.10.13 6
10.168.10.13 255.255.255.255 On-link 10.168.10.13 261
127.0.0.0 255.0.0.0 On-link 127.0.0.1 331
127.0.0.1 255.255.255.255 On-link 127.0.0.1 331
127.255.255.255 255.255.255.255 On-link 127.0.0.1 331
169.254.169.254 255.255.255.255 On-link 10.168.10.13 6
192.168.0.0 255.255.0.0 10.24.6.1 10.24.6.6 6
224.0.0.0 240.0.0.0 On-link 127.0.0.1 331
224.0.0.0 240.0.0.0 On-link 10.24.6.6 261
224.0.0.0 240.0.0.0 On-link 10.168.10.13 261
255.255.255.255 255.255.255.255 On-link 127.0.0.1 331
255.255.255.255 255.255.255.255 On-link 10.24.6.6 261
255.255.255.255 255.255.255.255 On-link 10.168.10.13 261
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
169.254.169.254 255.255.255.255 On-link 1
192.168.0.0 255.255.0.0 10.24.6.1 1
===========================================================================
|
動作確認
オンプレ環境にある仮想マシン(192.168.10.91)へICMP、およびHTTP接続できることを確認する。
C:\>ipconfig Windows IP Configuration Ethernet adapter Ethernet: Connection-specific DNS Suffix . : asia-northeast1-c.c.spokeb-430504.internal. Link-local IPv6 Address . . . . . : fe80::1745:2100:ee54:8873%5 IPv4 Address. . . . . . . . . . . : 10.168.10.13 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 10.168.10.1 Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : asia-northeast1-c.c.spokeb-430504.internal. Link-local IPv6 Address . . . . . : fe80::fa8:8240:edb6:f402%4 IPv4 Address. . . . . . . . . . . : 10.24.6.6 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : C:\>ping 192.168.10.91 Pinging 192.168.10.91 with 32 bytes of data: Reply from 192.168.10.91: bytes=32 time=53ms TTL=61 Reply from 192.168.10.91: bytes=32 time=51ms TTL=61 Reply from 192.168.10.91: bytes=32 time=40ms TTL=61 Reply from 192.168.10.91: bytes=32 time=52ms TTL=61 Ping statistics for 192.168.10.91: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 40ms, Maximum = 53ms, Average = 49ms C:\>
まとめ
本記事では、Private Service Connectインターフェースを使用して、どのVPCにも接続していないプロジェクトからオンプレミス環境へ接続する方法について解説しました。本機能を利用することで、プロジェクトで自由なサブネット設計を行いながら、既存の社内ネットワークに接続できるようになります。
このようにプロジェクト開発者に自身のプロジェクトのネットワーク管理を任せることができ、管理者側の運用負担を軽減することが可能になりますので、今後プロジェクトを払い出す際には、PSCを利用した接続の検討をしてみてはいかがでしょうか。