虛擬私有雲防火牆規則記錄範例

虛擬私有雲 (VPC) 防火牆規則套用至流量時,會產生記錄項目。雖然封包流程可能會產生多個記錄項目,但虛擬私有雲防火牆規則最多只會針對來自虛擬機器 (VM) 執行個體的每個連線產生一個記錄項目。以下範例說明 VPC 防火牆規則記錄在不同情境下的運作方式。

拒絕輸出的範例

這個範例顯示輸出拒絕虛擬私有雲防火牆規則的記錄,該規則會封鎖相同虛擬私有雲網路中兩個 VM 執行個體之間的流量。

在本範例中,流量會在 example-proj 專案的 example-net 虛擬私有雲網路中,於 VM 執行個體之間流動。

  • 兩個 VM 執行個體的詳情如下:

    • us-west1-a 區域中的 VM1,其 IP 位址 10.10.0.99west-subnet (us-west1 地區)。
    • us-east1-b 區域中的 VM2,其 IP 位址 10.20.0.99east-subnet (us-east1 地區)。
  • 規則 A:拒絕輸出防火牆規則的目標是網路中的所有執行個體,目的地是 10.20.0.99 (VM2),適用於 TCP 通訊埠 80。 這項規則已啟用記錄功能。

  • 規則 B:允許輸入防火牆規則的目標是網路中的所有執行個體,來源是 10.10.0.99 (VM1),適用於 TCP 通訊埠 80。 這項規則也已啟用記錄功能。

如要建立 VPC 防火牆規則,請使用下列 gcloud 指令:

  • 規則 A:TCP 通訊埠 80 的拒絕輸出規則,適用於所有執行個體,目的地 10.20.0.99

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • 規則 B:TCP 通訊埠 80 的允許輸入規則,適用於所有執行個體,來源 10.10.0.99

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
輸出拒絕規則會封鎖從 VM1 到 VM2 的連線。
輸出拒絕規則會封鎖從 VM1 到 VM2 的連線 (按一下即可放大)。

假設 VM1 嘗試透過 TCP 通訊埠 80 連線至 VM2,則會發生下列情況:

  • 當 VM1 嘗試連線至 10.20.0.99 (VM2) 時,系統會以 VM1 的角度產生規則 A 的記錄項目。
  • 由於規則 A 會封鎖流量,在連線作業未涉及規則 B 的情況下,系統就不會以 VM2 的角度產生規則 B 的記錄項目。

VM1 會回報下列虛擬私有雲防火牆規則記錄:

欄位
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition 禁止所有人使用
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = DENY
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location 沒有資訊。只有在目的地位於虛擬私有雲網路之外時,才會使用這個欄位。

同時允許輸出和輸入的範例

這個範例顯示輸出允許虛擬私有雲防火牆規則和輸入允許虛擬私有雲防火牆規則的記錄,這兩項規則共同允許相同虛擬私有雲網路中兩個 VM 執行個體之間的流量。

在本範例中,流量會在 example-proj 專案的 example-net 虛擬私有雲網路中,於 VM 執行個體之間流動。

  • 兩個 VM 執行個體的詳情如下:

    • us-west1-a 區域中的 VM1,其 IP 位址 10.10.0.99west-subnet (us-west1 地區)。
    • us-east1-b 區域中的 VM2,其 IP 位址 10.20.0.99east-subnet (us-east1 地區)。
  • 規則 A:允許輸出防火牆規則的目標是網路中的所有執行個體,目的地是 10.20.0.99 (VM2),適用於 TCP 通訊埠 80。 這項規則已啟用記錄功能。

  • 規則 B:允許輸入防火牆規則的目標是網路中的所有執行個體,來源是 10.10.0.99 (VM1),適用於 TCP 通訊埠 80。 這項規則也已啟用記錄功能。

如要建立 VPC 防火牆規則,請使用下列 gcloud 指令:

  • 規則 A:TCP 通訊埠 80 允許輸出規則,適用於所有執行個體,目的地 10.20.0.99 (VM2):

    gcloud compute firewall-rules create rule-a \
        --network example-net \
        --action allow \
        --direction EGRESS \
        --rules tcp:80 \
        --destination-ranges 10.20.0.99/32 \
        --priority 10 \
        --enable-logging
    
  • 規則 B:TCP 通訊埠 80 的允許輸入規則,適用於所有執行個體,來源 10.10.0.99 (VM1):

    gcloud compute firewall-rules create rule-b \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 10.10.0.99/32 \
        --priority 10 \
        --enable-logging
    
輸出允許和輸入允許規則可允許從 VM1 連線至 VM2。 輸出允許和輸入允許規則允許從 VM1 連線至 VM2 (按一下即可放大)。

假設 VM1 嘗試透過 TCP 通訊埠 80 連線至 VM2,則會發生下列情況:

  • VM1 連線至 10.20.0.99 (VM2) 時,系統會以 VM1 的角度產生規則 A 的記錄項目。
  • VM2 允許來自 10.10.0.99 (VM1) 的連入連線時,系統會以 VM2 的角度產生規則 B 的記錄項目。

VM1 會回報下列虛擬私有雲防火牆規則記錄:

欄位
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition ALLOWED
rule_details reference = "network:example-net/firewall:rule-a"
priority = 10
action = ALLOW
destination_range = 10.20.0.99/32
ip_port_info = tcp:80
direction = egress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_location 沒有資訊。只有在目的地位於虛擬私有雲網路之外時,才會使用這個欄位。

VM2 會回報下列虛擬私有雲防火牆規則記錄:

欄位
connection src_ip=10.10.0.99
src_port=[EPHEMERAL_PORT]
dest_ip=10.20.0.99
dest_port=80
protocol=6
disposition ALLOWED
rule_details reference = "network:example-net/firewall:rule-b"
priority = 10
action = ALLOW
source_range = 10.10.0.99/32
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM2
region=us-east1
zone=us-east1-b
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=east-subnet
remote_instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
remote_vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location 沒有資訊。只有在目的地位於虛擬私有雲網路之外時,才會使用這個欄位。

網際網路輸入範例

這個範例顯示允許輸入的防火牆規則記錄,該規則允許網際網路流量傳送至 VM 執行個體。此外,這項功能也會顯示具狀態防火牆行為如何影響輸出拒絕規則。

在本範例中,流量會從外部資源流向 example-net 虛擬私有雲網路內的 VM 執行個體。該網路屬於 example-proj 專案。

  • 網際網路系統的 IP 位址為 203.0.113.114
  • us-west1-a 區域中的 VM1,其 IP 位址 10.10.0.99west-subnet (us-west1 地區)。
  • 規則 C:允許輸入防火牆規則的目標是網路中的所有執行個體,來源可能是任何 IP 位址 (0.0.0.0/0),並且適用於 TCP 通訊埠 80。 這項規則已啟用記錄功能。
  • 規則 D:拒絕輸出防火牆規則的目標是網路中的所有執行個體,目的地可能是任何 IP 位址 (0.0.0.0/0),並且適用於所有通訊協定。這項規則已啟用記錄功能。

如要建立 VPC 防火牆規則,請使用下列 gcloud 指令:

  • 規則 C:TCP 通訊埠 80 的允許輸入規則,適用於所有執行個體,任何來源:

    gcloud compute firewall-rules create rule-c \
        --network example-net \
        --action allow \
        --direction INGRESS \
        --rules tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
  • 規則 D:所有通訊協定拒絕輸出規則,適用於所有執行個體,任何目的地:

    gcloud compute firewall-rules create rule-d \
        --network example-net \
        --action deny \
        --direction EGRESS \
        --rules all \
        --destination-ranges 0.0.0.0/0 \
        --priority 10 \
        --enable-logging
    
輸入允許規則允許從網際網路連線至 VM1。
網際網路到 VM 的連線 (按一下可放大)。

假設 IP 位址為 203.0.113.114 的系統嘗試連線至 TCP 通訊埠 80 上的 VM1,則會發生下列情況:

  • VM1 接收來自 203.0.113.114 的流量時,會產生規則 C 的記錄項目。
  • 儘管有規則 D,但Google Cloud 防火牆規則有狀態,因此系統會允許 VM1 回覆傳入要求。只要系統允許傳入要求,任何輸出規則都無法封鎖已建立的回應。
  • 由於規則 D 不會套用,系統就不會考慮這項規則,因此不會產生規則 D 的記錄項目。

VM1 會回報下列虛擬私有雲防火牆規則記錄:

欄位
connection src_ip=203.0.113.114
src_port=[EPHEMERAL_PORT]
dest_ip=10.10.0.99
dest_port=80
protocol=6
disposition ALLOWED
rule_details reference = "network:my-vpc/firewall:rule-c"
priority = 10
action = ALLOW
source_range = 0.0.0.0/0
ip_port_info = tcp:80
direction = ingress
instance project_id="example-proj"
instance_name=VM1
region=us-west1
zone=us-west1-a
vpc project_id="example-proj"
vpc_name=example-net
subnetwork_name=west-subnet
remote_location 洲別
國家/地區
區域
城市

後續步驟