2.3.7.5. ファイアウォールルールの作成
デフォルトでは、Google Compute Engine はインスタンス間の接続をすべてブロックし、インスタンスからインターネットへの接続をすべてブロックします。httpd などのサービスのポートを開くには、ファイアウォールルールを手動で作成する必要があります。すべてのプロジェクトには、デフォルトの 3 つのファイアウォールがあります。
- 任意のインスタンスへの SSH アクセスを可能にするファイアウォール。
- 同じネットワーク内のインスタンス間のすべての通信を許可するファイアウォール。
- 任意のソースからネットワーク上の任意のインスタンスへの ICMP トラフィックを許可するファイアウォール。
たとえば、インスタンスへの HTTP 要求を許可するには、以下の gcutil
コマンドを使用して新しいファイアウォールを作成します。
$ gcloud compute firewall-rules create http-allow --allow tcp:80
上記のコマンドを実行すると、以下が可能になります。
-
ポート 80 の tcp トラフィックを許可する
http-allow
という名前の新しいファイアウォールを作成しました。 - プロジェクトのデフォルトネットワークにファイアウォールを割り当てました。
- ネットワーク内外のすべてのソース(インターネット経由を含む)がサーバーへの要求を行うことを許可。ファイアウォールに許可されたソースを指定していないため、すべてのソースはデフォルトのネットワークに割り当てられたインスタンスへの要求を行うことができます。
- このファイアウォールルールをネットワーク上のすべてのインスタンスに適用します。ファイアウォールにターゲットを指定していないため、ファイアウォールはネットワーク内のすべてのインスタンスにこのルールを適用します。
ファイアウォールに関する情報を確認するには、次のコマンドを実行します。
$ gcloud compute firewall-rules list NAME NETWORK SRC_RANGES RULES SRC_TAGS TARGET_TAGS default-allow-icmp default 0.0.0.0/0 icmp default-allow-internal default 10.240.0.0/16 tcp:1-65535,udp:1-65535,icmp default-allow-rdp default 0.0.0.0/0 tcp:3389 default-allow-ssh default 0.0.0.0/0 tcp:22 http-allow default 0.0.0.0/0 tcp:80
適切な addfirewall
フラグを使用して、ソースとターゲットを特定の呼び出し元およびインスタンスに制限することができます。サポートされるフラグの完全な一覧を表示するには、gcutil help addfirewall
コマンドを実行するか、https://cloud.google.com/sdk/gcloud/reference/compute/firewall-rules/ を参照してください。
ファイアウォールは、インスタンスへの受信トラフィックのみを調整します。送信パケットをブロックできません。インスタンスで接続を確立すると、トラフィックはその接続上の両方で許可されます。インスタンスが送信パケットを送信できないようにするには、iptables 等の別のテクノロジーを使用します。
デフォルトでは、GCE は 10 分間非アクティブになると、インスタンスへの TCP 接続を切断します。これを防ぐには、https://developers.google.com/compute/docs/troubleshooting#communicatewithinternetの説明に従って TCP キープアライブを設定します。