Compute Engine VM で IP 転送が有効

ルーターやネットワーク機器として使わない VM では IP 転送を無効にし、必要な例外を管理してください。

説明

can_ip_forward を有効にすると、VM は自分のアドレスと異なる宛先のパケットを受信したり、異なる送信元アドレスでパケットを送信したりできます。ルーターや NAT 機器では必要な場合がありますが、通常のアプリケーション VM には不要な機能です。この設定だけで OS のルーティングが有効になるわけではなく、ゲスト設定、経路、ファイアウォールも関係します。

想定される影響

  • 転送機能と実際の通信経路を持つ VM が侵害されると、他のネットワークにトラフィックを中継するために悪用されるおそれがあります。
  • 誤った経路やフィルタリングにより、意図しないネットワークアクセスや通信障害が発生する可能性があります。

対処方法

  1. VM がルーターやセキュリティ機器として動作する必要があるか確認し、不要なら can_ip_forward を無効にしてください。
  2. 必要な例外では、OS の転送、経路、ファイアウォール権限を併せて制限し、意図した通信経路を確認してください。
  3. google.cloud 1.14.0 の gcp_compute_instance は、既存 VM のこの属性を更新しません。対応する Compute Engine の変更手順を使い、実際の設定と接続を確認してください。

例

新規 VM の転送設定を比較する抜粋です。実際のプロジェクト、ネットワーク、アドレス、認証情報、ブートディスクを用意し、起動スクリプトの保存先と内容を確認してください。

変更前

yaml
- name: create a instance
  google.cloud.gcp_compute_instance:
    name: test-object
    machine_type: n1-standard-1
    metadata:
      startup-script-url: gs://graphite-playground/bootstrap.sh
      cost-center: "12345"
    labels:
      environment: production
    network_interfaces:
      - network: "{{ network }}"
        access_configs:
          - name: External NAT
            nat_ip: "{{ address }}"
            type: ONE_TO_ONE_NAT
    zone: us-central1-a
    project: "{{ project_id }}"
    auth_kind: serviceaccount
    service_account_file: "/tmp/auth.pem"
    state: present
    can_ip_forward: yes

IP 転送を許可しています。実際のパケット転送には、適切なゲスト OS と経路の設定も必要です。

変更後

yaml
- name: create a instance
  google.cloud.gcp_compute_instance:
    name: test-object
    machine_type: n1-standard-1
    metadata:
      startup-script-url: gs://graphite-playground/bootstrap.sh
      cost-center: "12345"
    labels:
      environment: production
    network_interfaces:
      - network: "{{ network }}"
        access_configs:
          - name: External NAT
            nat_ip: "{{ address }}"
            type: ONE_TO_ONE_NAT
    zone: us-central1-a
    project: "{{ project_id }}"
    auth_kind: serviceaccount
    service_account_file: /tmp/auth.pem
    state: present
    can_ip_forward: no

新規 VM の IP 転送を無効にします。外部 IP の削除やアプリケーションレベルのプロキシ動作の阻止は行わないため、それらの制御は別途確認してください。

参考資料