BETA

【GCP】Using Cloud NAT [翻訳]

投稿日:2018-12-22
最終更新:2018-12-22

Cloud NATの公式ドキュメントの翻訳です。

Using Cloud NAT | Cloud NAT | Google Cloud

イントロダクション

このページはCloud NATの設定方法を説明します。Cloud NATをセットアップする前にCloud NAT Overviewも読んでおきましょう。

注意: Cloud NATはNATの設定情報をグルーピングするためだけにCloud Routerを使います。Cloud NATはCloud RouterにBGP(Border Gateway Protocol)の利用や、ルーティング追加の命令は出しません。

事前準備

IAMパーミッション

roles/compute.networkAdmin ロールは下記の役割を担います。

  • Cloud Router上へのNATゲートウェイの作成
  • NAT IPの予約・割り当て
  • NATゲートウェイによるIPアドレス変換を適用すべきトラフィックが流れるNATサブネットを指定

GCPのセットアップ

  1. GCPプロジェクトを選択、または作成
  2. プロジェクトに対して課金が有効になっていることを確認
  3. Cloud SDKをインストールし、初期化する

設定例

Compute Engineでの設定例

Example Compute Engine Setup | Cloud NAT | Google Cloud

GKEでの設定例

Example GKE Setup | Cloud NAT | Google Cloud

利用シナリオとサンプルコマンド

NATの作成

1. リージョン内の全てのサブネットのIPアドレスを自動割り当てにする

自動割り当てを使用する場合、GCPはプロジェクト内のIPアドレスを自動で予約します。これらのIPアドレスはプロジェクトの静的IPアドレスの割り当て制限を受けます。

gcloud compute routers nats create nat-config \  
    --router=nat-router \  
    --auto-allocate-nat-external-ips \  
    --nat-all-subnet-ip-ranges  

2. NAT用のIPアドレスを指定する
それぞれのIPアドレスは予約された静的IPアドレスのリソース名です。

gcloud compute routers nats create nat-config \  
    --router=nat-router \  
    --nat-external-ip-pool=ip-address1,ip-address2  

3. NATを適用するサブネットの範囲を指定する
デフォルトでは、指定のVPNネットワークのリージョン内の全てのサブネットのプライマリー・セカンダリーIPレンジにNATが適用されます。また、どのプライマリー・セカンダリーのIPレンジがNATを使用できるか制限することもできます。

gcloud compute routers nats create nat-config \  
    --router=nat-router \  
    --auto-allocate-nat-external-ips \  
    --nat-custom-subnet-ip-ranges=[SUBNET_1],[SUBNET_3]  

4. VMごとのデフォルト最小ポート数を指定する
詳細はNumber of NAT ports and connectionsを参照してください。

gcloud compute routers nats create nat-config \  
    --router=nat-router \  
    --auto-allocate-nat-external-ips \  
    --min-default-ports-per-vm=128  

5. タイムアウトを指定する

gcloud compute routers nats create nat-config \  
    --router=nat-router \  
    --auto-allocate-nat-external-ips \  
    --nat-custom-subnet-ip-ranges=[SUBNET_1],[SUBNET_3] \  
    --udp-mapping-idle-timeout=60s \  
    --icmp-mapping-idle-timeout=60s \  
    --tcp-established-connection-idle-timeout=60s \  
    --tcp-transitory-connection-idle-timeout=60s  

NATを更新する

1. NATが適用されるサブネットやIPアドレスを変更する

gcloud compute routers nats update nat-config \  
    --router=nat-router \  
    --nat-external-ip-pool=ip-address2,ip-address3 \  
    --nat-custom-subnet-ip-ranges=[SUBNET_3],[SUBNET_3],[SUBNET_3]:range1  

2. NATが持つグローバルIPアドレスを変更する
このコマンドはNAT設定の他の項目には影響を与えません。

gcloud compute routers nats update nat-config \  
    --router=nat-router \  
    --nat-external-ip-pool=ip-address2,ip-address3  

3. VMごとのデフォルト最小ポート割り当て数を変更する
このコマンドはNAT設定の他の項目には影響を与えません。

gcloud compute routers nats update nat-config \  
    --router=nat-router \  
    --min-default-ports-per-vm=128  

4. 接続のタイムアウトを変更する
このコマンドはNAT設定の他の項目には影響を与えません。

gcloud compute routers nats update nat-config \  
    --router=nat-router \  
    --udp-mapping-idle-timeout=60s \  
    --icmp-mapping-idle-timeout=60s \  
    --tcp-established-connection-idle-timeout=60s \  
    --tcp-transitory-connection-idle-timeout=60s  

5. 接続のタイムアウトをデフォルト設定にリセットする
このコマンドはNAT設定の他の項目には影響を与えません。

gcloud compute routers nats update nat-config \  
    --router=nat-router \  
    --clear-udp-mapping-idle-timeout \  
    --clear-icmp-mapping-idle-timeout \  
    --clear-tcp-established-connection-idle-timeout \  
    --clear-tcp-transitory-connection-idle-timeout  

NATを削除する

Cloud RouterからNATの設定を削除します。これはルーターリソース自体は削除しません。

gcloud compute routers nats delete nat-config --router=nat-router  

nat-confignat-routerを置き換えてください。

NAT情報を表示する

gcloud compute routers nats describe nat-config --router=nat-router  

NATのIPアドレスとポートレンジを表示

gcloud compute routers get-nat-mapping-info  

NATのステータスを表示

gcloud compute routers get-status  

利用制限

Quotasを参照。

制約

レガシーなDNSサーバーのようないくつかのサーバーは、セキュリティ強化のためにUDPポートのランダム化を要求します。Cloud NATは64個、もしくはユーザーが設定した数のポートから、ランダムで1つを選択するため、Cloud NATを使う代わりにグローバルIPアドレスをそれらのサーバーに割り当てることが最も良いとされます。Cloud NATは外部からの接続は許可しないため、いずれにせよそれらのサーバーのほとんどは外部IPアドレスを求められます。

制限

  • 外部に公開されたIPアドレスを持つVMは充分なコンピュートリソースがある場合、64個のポート(TCP64個、UDP64個)、64個のICMPクエリーセッション(ping)を同時に持つ事ができます。Cloud NATにおいては、この制限数は、全てのサポートされたプロトコルでの64個のVMごとの接続総数まで減らすことができます。
  • NAT ALGs(Application Level Gateway)機能はサポートされていません。これはCloud NATはパケットデータ内ではIPを更新しないことを意味します。(FTPやSIPプロトコルなど)
  • IPアドレスの自動割り当て数には、リージョンのVPCごとに100個の制限があります。
  • アイドル接続のタイムアウトが短いものは機能しない可能性があります。NATマッピングは有効期限や設定変更により30秒ごとにチェックされます。仮に接続のタイムアウトが5秒だった場合でも、接続は、良くて15秒間、悪いと30秒間繋がらない可能性があります。
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@pannpersの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!