Slide 1

Slide 1 text

第4回 雲勉LT【オンライン︓初⼼者向け】 (GCP)限定公開の Google アクセスと Cloud NAT の実装

Slide 2

Slide 2 text

⾃⼰紹介 2 • 野崎 ⾼弘(のざき たかひろ) • アイレット株式会社 クラウドインテグレーション事業部 プロジェクト企画推進セクション インフラ技術 • インフラ構築・保守やSOCセキュリティアナリストをやってました • 現在は技術検証やドキュメント作業が主 • 趣味︓資格取得、⽝の散歩、ドラクエ、巨⼈ファン、ドラマ • 好きな⾷べ物︓カレー、ハンバーグ、チーズ、パクチー、⽣クリーム系スイーツ • GCPは現在3冠、AWSは8冠 3

Slide 3

Slide 3 text

外部IPアドレスを付与しない⽅がいい理由 3 • 基本的にVMインスタンスに外部IPを付与するのは稀 • 標準VMインスタンスで使⽤されている静的 IP アドレスとエフェメラル IP アドレス(インスタンス起動 時に発⾏される外部IPアドレス)- 0.004 ドル/時間 • とはいえインターネットに出られないと困るケースも多い • 外部からの通信を直接受ける必要はないが、外部への通信が必要となる処理(例えば、メーカーから提供 されるソフトウェアパッチを取得、外部のソースリポジトリからソースコードをクローニング)を、外部 IPアドレスを持たないVMから実施したい 本LTの対象者︓GCPのことはなんとなく知っているが、VPCネットワークをそれほど触ったことがない初⼼ 者 本LTは、初⼼者がGCPネットワークを把握するのにちょうどいい題材

Slide 4

Slide 4 text

そこで 4 外部 IP アドレスを設定していない VM インスタンスに対して、限定公開の Google アクセスと Cloud NAT を実装します。その後、Google API およびサービスのパブリック IP アドレスへのアクセスと、その 他のインターネット接続を検証します。 外部 IP アドレスを設定していない VM インスタンスは、外部ネットワークから隔離されています。Cloud NAT を使⽤すると、これらのインスタンスがインターネットにアクセスして、更新、パッチ適⽤などが可 能になります。

Slide 5

Slide 5 text

限定公開の Google アクセスとは︖ 5 Private Google Access とも⾔い、Google Cloud の API (ドメイン名が *.googleapis.com)に対して、 外部IP(パブリックIP)を持たないVMやオンプレミスのクライアントから、インターネットを介さず、Google の内部プライベートネットワークを通してアクセスできるようにする仕組み ⇨AWSで⾔うところのVPCエンドポイント (https://qiita.com/suzuyui/items/b69be2a50df9cbedf402 より)

Slide 6

Slide 6 text

Private Service Connect との違いは︖ 6 • インターネットに接していないノードを Google API へアクセスできるようにする仕組み • VPC 内に IP アドレスを持つエンドポイ ントを作成し、このエンドポイント経由 で Google API にアクセスする • エンドポイントには任意の IP アドレス を割り当てることができ、通常のプライ ベートIPアドレスも使える • Private Service Connect エンドポイントの作成は若⼲⼿間 • 限定公開の Google アクセスだと、199.36.153.4/30 や 199.36.153.8/30 といったIPアドレスを使う 必要があるため、Cloud Interconnect や Cloud VPN 経由でオンプレミス環境から利⽤する際などに、 ルーティングが複雑化する • 限定公開の Google アクセス機能は無料︕

Slide 7

Slide 7 text

全体像 7 限定公開の Google アクセスを使⽤して、 Cloud Storageからファイルをダウンロードし、 NAT ゲートウェイを使⽤して、インターネットに接 続してパッケージをダウンロードします。

Slide 8

Slide 8 text

⼿順の流れ 8 1. Cloud Storage バケットから画像をダウンロードできないことを確認 2. 限定公開の Google アクセスを有効化 3. 再度1.を実⾏し、今度はうまくいくことを確認 4. インターネットへアクセスできないことを確認 5. Cloud NAT を実装 6. 再度4.を実⾏し、今度はうまくいくことを確認 7. Cloud NATログを⾒て、アクセスを確認 8. 今度は外部IPを付与してインターネットへアクセス 9. Cloud NATログを⾒て、今度は該当ログがないことを確認

Slide 9

Slide 9 text

事前準備 9 • VPCネットワークとそのファイアウォールルールを作成 • 外部 IP アドレスが設定されていない VM インスタンスを⽤意 • サブネットで限定公開の Google アクセスを無効のままにする(デフォルト) • Cloud Storage バケットを作成して、サンプル画像を保存しておく

Slide 10

Slide 10 text

ファイアウォール ルール忘れないように 10 次のように指定し、残りの設定はデフォルトのまま IAP 接続で使⽤される、特定の IP アドレスセット(35.235.240.0/20)を CIDR 範囲に制限 IAP TCP 転送では、SSH、RDP、その他のトラフィックを VM インスタンスに転送できる暗号化トンネルを 確⽴する プロパティ 値 名前 privatenet-allow-ssh ネットワーク privatenet ターゲット ネットワーク上のすべてのインスタンス ソースフィルタ IPv4 範囲 送信元 IPv4 範囲 35.235.240.0/20 プロトコルとポート 指定したプロトコルとポート(tcp:22)

Slide 11

Slide 11 text

デモ 11 ここからデモも交えて実際の動きを⾒ながら説明します。

Slide 12

Slide 12 text

作業の流れ 12 1. 外部 IP アドレスを設定していない VM インスタンス(vm-internal)において、pingを実⾏して外部接続をテスト ping -c 2 www.google.com vm-internal には外部 IP アドレスが付与されていないので、これは動作しないことを確認 2. Cloud Storageの画像が vm-internal にコピーできるかどうか、次のコマンドを実⾏ Gsutil cp gs://Nozaki_bucket/*.png . 限定公開の Google アクセスが無効になっているため、これは動作しないことを確認 (vm-internal がトラフィックを送信できるのは 、VPC ネットワーク内に限られます) 3. 限定公開の Google アクセスを有効にする 限定公開の Google アクセスは、サブネットレベルで設定します。有効にすると、サブネット内でプライベート IP ア ドレスしか持たないインスタンスが、デフォルトルート(0.0.0.0/0)を通じて Google API およびサービスにトラ フィックを送信できるようになります。

Slide 13

Slide 13 text

作業の流れ 13 4. 再度2.を試して、今度は無事に画像をダウンロードできることを確認 5. apt-get を実⾏して、vm-internal のパッケージインデックスを同期してみる sudo apt-get update 現在、vm-internal がアクセスできるのは Google API およびサービスだけであるため、これは 動作しな いことを確認 6. Cloud NAT ゲートウェイを構成する Cloud NATを設定するには、Cloud Routerも必要になります。どちらもリージョンごとに作成するリー ジョンリソースで、対象とするサブネットやIPアドレス範囲を細かく指定することが可能です。 この際、ロギングを有効にするため、[⾼度な構成] → [Stackdriver ロギング] で [変換とエラー] を選択

Slide 14

Slide 14 text

作業の流れ 14 7. 再度5.を試して、今度は無事にインターネットに接続してアップデートできることを確認 vm-internal で NAT ゲートウェイが使⽤されるため、これは正常に動作するはずです。 8. NATログの確認 nat-config をクリックして [ログ] タブをクリック。次に、Cloud Logging へのリンクをクリックしま す。[オペレーションロギング] の新しいタブが開きます。 [ログエクスプローラ] をクリック。内部 VM への接続後に⽣成された 2 つの新しいログが表⽰されます。 (dest_ip にある 199.232.98.132 は、debian.map.fastly.net) Cloud NAT のログは次のシーケンスに対して⽣成されます。 • NAT を使⽤するネットワーク接続が作成 • NAT に使⽤可能なポートがないことが原因でパケットが破棄

Slide 15

Slide 15 text

作業の流れ 15 9. 外部 IP アドレスを設定して再度試す 今度は外部 IP アドレスを設定していない vm-internal に、外部IPエフェメラルアドレスを設定します。 再度5.を試すと、当然外部IPアドレスをそのまま使⽤して、無事にインターネットに接続してアップデート できることを確認 10. 再びNATログを確認 再度8.を実施してCloud NAT ログを⾒に⾏き、該当ログがないことを確認します。Cloud NATは、選択し たGoogle APIとサービスの外部IPアドレスに送信されたトラフィックに対してNATを実⾏しないためです。

Slide 16

Slide 16 text

確認 16 外部 IP アドレスが設定されていないインスタンス vm-internal を作成し、限定公開の Google アクセスの 有効化と NAT ゲートウェイの構成を⾏って、vm-internal が Google API およびサービス、ならびにその他 のパブリック IP アドレスに接続できることを確認できました。

Slide 17

Slide 17 text

おまけ(とある Professional Cloud Network Engineer 試験の練習問題1) 17 問題1 Cloud Storage に保存される結果を⽣成するために、Compute Engine で実⾏されているアプリケーション があります。どのアプリケーション インスタンスにも外部 IP アドレスがない場合に、これを達成するため に使⽤できる 2 つの⽅法はどれですか? ア. すべてのサブネットでプライベート Google アクセスを有効にする。 イ. VPC でプライベート サービス アクセスを有効にする。 ウ. VPC でプライベート Google アクセスを有効にする。 エ. Cloud NAT を作成し、NAT ゲートウェイ経由でアプリケーショントラフィックをルーティングする。 皆さんならもう答え、お分かりですね︖

Slide 18

Slide 18 text

おまけ(とある Professional Cloud Network Engineer 試験の練習問題)2 18 問題2 インスタンスからインターネットへの接続ができたことを⽰すために、Cloud NAT のログを設定するよう求 められました。 Cloud NAT が Cloud Logging に送信する 2 種類のログは次のうちどれですか︖ ア. NATログ イ. エラーログ ウ. 接続ログ エ. 変換ログ これもNATの設定のところでやりましたね

Slide 19

Slide 19 text

No content