VPN 経由の Cloud SQL プライベート IP:誰もエクスポートしないルート
Cloud SQL のプライベート IP は VPN 接続ネットワークから機能しますが、クライアント接頭辞とサービス範囲の両方が二つのルート境界を越える場合に限られます。
多くのチームは、Cloud SQL のプライベート IP は VPC の内部からしか機能しないと考えています。その信念が生き残るのは、失敗がデータベースの問題に見えるからです。Google は Cloud VPN や Cloud Interconnect で接続したネットワークからのアクセスを文書化しています。それらのネットワークに必要なのは特別なデータベース機能ではなく、中途半端に放置しやすい二つのルート交換です。トンネルは上がり、コンピュートインスタンスは応答し、データベース接続はタイムアウトします。これは人を間違ったコンソールへ送る典型的な組み合わせです。
誤解:プライベート IP は VPC に対してプライベートという意味
プライベート サービス アクセスは、あなたのネットワークと Google が所有するプロデューサー ネットワークの間の VPC ピアリングです。サービスに割り当てられた範囲はプロデューサー側にあり、インスタンスのアドレスはその中にあります。このピアリングがあるため、プロジェクト内のデータベースは、あなたの明示的なサブネットに含まれていなくても、VPC が経路を持つアドレス上に置けます。
ピアリングである以上、ピアリングの振る舞いも持ちます。カスタムルートが自動的に越えない部分もその一つです。
誤解:動くトンネルはデータベースのルートも運ぶ
二つの範囲がこの旅を生き延びなければなりません。一つ目はクライアント接頭辞です。オンプレミスのネットワークは具体的な接頭辞で Cloud Router に知られている必要があります。既定ルートでは、プロデューサー ネットワークが戻り道に必要とするインポートを供給できないからです。二つ目は割り当てられたサービス範囲で、外部側がこれを学習しないと、データベース宛てのパケットに行き先がありません。これは異なる境界で維持される別々のルートであり、片方を直すともう片方は壊れたままです。
Google 側では、該当するピアリング接続で Export custom routes を有効にし、割り当てられたサービス範囲をトンネル用の Cloud Router の広告ルートに追加することを意味します。
すでにある広告は残してください。サービス範囲の追加で、同じ BGP セッションが他のトラフィック用に運んでいる VPC ルートを外してはいけません。広告セットを丸ごと差し替えるのは、一つ目の障害の後ろに隠れた二つ目の障害です。外部機器の有効なルートも確認してください。VPN ゲートウェイや別のサブネットに届くことは、転送できることしか証明しません。
誤解:Cloud SQL Auth Proxy がネットワークを解決する
The Auth Proxy は、アプリケーションとインスタンスの間にサポートされた認証と暗号化された転送を提供します。ルートは作りません。プライベート ネットワークへの経路がないホストで起動したプロキシは、直接接続とまったく同じように失敗し、そのログは理由についてあまり役に立ちません。プロキシを接続のあるホストへ移すと、経路のどの区間が機能すべきかが変わり、それは回避策ではなく実際の設計判断です。
それがしないのは、切断されたノート PC をプライベート専用インスタンスに到達させることです。
誤解:Private Service Connect も同じ規則に従う
Private Service Connect は自分のサブネット内のエンドポイントと、自分で制御する DNS の取り決めを使うため、そこへのルートは自分が所有するアドレスへの通常のルートです。ピアリングのエクスポート設定はその設計には適用されず、ピアリングの変更を PSC の展開にコピーしても、到達性は増えずリスクだけが増えます。
どちらもプライベート アドレスを与えますが、似ているのはそこまでです。
正しい順序で経路をテストする
外部クライアントから、まずデータベースの TCP エンドポイントをテストします。TCP ハンドシェイクが完了すれば、ルーティング、ファイアウォール、リスナーがすべて揃っています。次のテストは許可された認証済みの操作です。その時点での認証拒否は実は良い知らせで、データベースのリスナーが応答したことを証明します。ICMP のタイムアウトはデータベース アクセスについてほとんど何も語りません。多くの経路が TCP を問題なく転送しながら ICMP を捨てるからです。
クライアント範囲が RFC 1918 の外にある場合は、設計がサポートされていないと結論づける前に、追加のルート エクスポートとネットワーク承認の要件を確認してください。
接続とともに四つの対象を記録します。外部接頭辞、割り当てられたサービス範囲、関係するピアリング接続、広告を行うルーターです。この四つがプライベート経路の全体を説明し、Cloud SQL は常にプロキシが必要か、VPN ではまったく届かないという俗説を置き換えます。