説明
can_ip_forward を有効にすると、VM は自分のアドレスと異なる宛先のパケットを受信したり、異なる送信元アドレスでパケットを送信したりできます。ルーターや NAT 機器では必要な場合がありますが、通常のアプリケーション VM には不要な機能です。この設定だけで OS のルーティングが有効になるわけではなく、ゲスト設定、経路、ファイアウォールも関係します。
想定される影響
- 転送機能と実際の通信経路を持つ VM が侵害されると、他のネットワークにトラフィックを中継するために悪用されるおそれがあります。
- 誤った経路やフィルタリングにより、意図しないネットワークアクセスや通信障害が発生する可能性があります。
対処方法
- VM がルーターやセキュリティ機器として動作する必要があるか確認し、不要なら
can_ip_forwardを無効にしてください。 - 必要な例外では、OS の転送、経路、ファイアウォール権限を併せて制限し、意図した通信経路を確認してください。
google.cloud1.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 の削除やアプリケーションレベルのプロキシ動作の阻止は行わないため、それらの制御は別途確認してください。