<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>防火牆規則 - 東東 GCP 教學 - GCP 實戰講師</title>
	<atom:link href="https://dongdonggcp.com/tag/%E9%98%B2%E7%81%AB%E7%89%86%E8%A6%8F%E5%89%87/feed/" rel="self" type="application/rss+xml" />
	<link>https://dongdonggcp.com</link>
	<description>助你考取證照，轉職成功</description>
	<lastBuildDate>Tue, 28 Oct 2025 09:22:36 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://dongdonggcp.com/wp-content/uploads/2025/04/cropped-340838097_121391010914395_5443948698124160121_n-32x32.jpg</url>
	<title>防火牆規則 - 東東 GCP 教學 - GCP 實戰講師</title>
	<link>https://dongdonggcp.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">243235092</site>	<item>
		<title>通訊協定轉送 (Protocol Forwarding) 是什麼？何時會用到？</title>
		<link>https://dongdonggcp.com/2025/10/28/what-is-protocol-forwarding-and-its-usage/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-is-protocol-forwarding-and-its-usage</link>
					<comments>https://dongdonggcp.com/2025/10/28/what-is-protocol-forwarding-and-its-usage/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 28 Oct 2025 09:22:34 +0000</pubDate>
				<category><![CDATA[Load Balancer]]></category>
		<category><![CDATA[ALB]]></category>
		<category><![CDATA[Firewall Rules]]></category>
		<category><![CDATA[Protocol Forwarding]]></category>
		<category><![CDATA[TCP Proxy LB]]></category>
		<category><![CDATA[負載平衡]]></category>
		<category><![CDATA[通訊協定轉送]]></category>
		<category><![CDATA[防火牆規則]]></category>
		<guid isPermaLink="false">https://dongdonggcp.com/?p=11462</guid>

					<description><![CDATA[<p>通訊協定轉送 (Protocol For [&#8230;]</p>
<p>The post <a href="https://dongdonggcp.com/2025/10/28/what-is-protocol-forwarding-and-its-usage/">通訊協定轉送 (Protocol Forwarding) 是什麼？何時會用到？</a> first appeared on <a href="https://dongdonggcp.com">東東 GCP 教學 - GCP 實戰講師</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">通訊協定轉送 (Protocol Forwarding) </h2>



<p>假設你有一個 VM,你想要讓外面的人可以直接連到這個 VM 的某個 port (通訊埠), 但你又希望有一些網路層的設定或保護。</p>



<p>這時候你就可以用「通訊協定轉送」這個功能。它的作用就是把外部進來的網路流量,按照你設定的規則,轉送到指定的 VM 上面。</p>



<h2 class="wp-block-heading">目標執行個體 (Target Instance)</h2>



<p>當你設定通訊協定轉送的時候, 你需要告訴 GCP「我要把流量轉送到哪裡去」。這個「哪裡」就是你指定的一個 VM 執行個體, 而這個被指定的 VM 在這個情境下就被稱為「目標執行個體」。簡單說, 目標執行個體就是「流量最終要送達的那台 VM」。</p>



<p>假設你有一台 VM 上面跑著一個遊戲伺服器, 這個遊戲使用特殊的網路協定, 不是常見的 HTTP 或 HTTPS。你想要讓玩家可以從網路上連進來,但又想要有一些流量控制。</p>



<p>這時候你就可以設定「通訊協定轉送」,把外部進來的遊戲協定流量轉送到你的 VM 上。在這個設定中,你的這台遊戲伺服器 VM 就是「目標執行個體」。</p>



<figure class="wp-block-image aligncenter size-large"><img fetchpriority="high" decoding="async" width="1024" height="433" src="https://dongdonggcp.com/wp-content/uploads/2025/10/GCP-Protocol-Forwarding-1024x433.png" alt="" class="wp-image-11463" srcset="https://dongdonggcp.com/wp-content/uploads/2025/10/GCP-Protocol-Forwarding-1024x433.png 1024w, https://dongdonggcp.com/wp-content/uploads/2025/10/GCP-Protocol-Forwarding-300x127.png 300w, https://dongdonggcp.com/wp-content/uploads/2025/10/GCP-Protocol-Forwarding-768x325.png 768w, https://dongdonggcp.com/wp-content/uploads/2025/10/GCP-Protocol-Forwarding-1536x649.png 1536w, https://dongdonggcp.com/wp-content/uploads/2025/10/GCP-Protocol-Forwarding-2048x865.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">外部通訊協定轉送<br><a href="https://docs.cloud.google.com/load-balancing/docs/protocol-forwarding?hl=zh-tw" target="_blank" rel="noopener" title="">https://docs.cloud.google.com/load-balancing/docs/protocol-forwarding?hl=zh-tw</a></figcaption></figure>



<h3 class="wp-block-heading">到底通訊協定轉送長什麼樣子？</h3>



<p>「通訊協定轉送」不是一台 VM,它是一個「網路規則」或「轉送設定」。這個轉送設定會指向一台 VM (也就是目標執行個體), 流量是從外部先到這個轉送規則,然後再被轉送到你指定的 VM 上。</p>



<p>用更簡單的比喻:通訊協定轉送就像是一個「郵局轉信服務」。你告訴 GCP「寄到地址 A 的信,都轉寄到地址 B」,這裡地址 B 就是你的 VM(目標執行個體),而這個轉信規則本身就是「通訊協定轉送」。整個過程只有一台 VM,不是兩台。</p>



<p>另一個常見的情況是企業的 VPN 服務。</p>



<p>VPN 通常會用 ESP(一種加密協定)或特定的 TCP/UDP port,這些都不是標準的網頁流量。如果你想在 GCP 上建立 VPN Server,就必須透過 Protocol Forwarding 來接收這些特殊協定的連線。</p>



<p>此外,像是資料庫的直接連線、串流媒體伺服器、或者物聯網裝置的通訊,只要不是走 HTTP/HTTPS,基本上都可能需要用到這個功能。</p>



<h2 class="wp-block-heading"><strong>與其他方案的差異</strong></h2>



<h3 class="wp-block-heading">難道 TCP Proxy LB 或 Network LB 做不到嗎?它們不是針對 「不是 HTTP/HTTPS 的流量」嗎?</h3>



<h4 class="wp-block-heading"><strong>Load Balancer 的本質功能</strong></h4>



<p>首先要理解,TCP Proxy Load Balancer 和 Network Load Balancer 的核心目的是「負載平衡」。什麼意思呢?就是當你有多台伺服器在背後提供相同的服務時,Load Balancer 會把進來的流量「分散」到這些伺服器上,避免某台伺服器累死、其他伺服器卻閒著。這就像是一個餐廳有多個櫃台,門口的帶位人員會引導客人到比較空的櫃台去排隊。</p>



<p>這些 Load Balancer 雖然可以處理 TCP、UDP 等協定,但它們會「介入」流量的處理。TCP Proxy Load Balancer 會終止(terminate)連線,也就是說,客戶端先連到 Load Balancer,然後 Load Balancer 再重新建立一條新的連線到後端伺服器。Network Load Balancer 雖然是 passthrough 模式,但它仍然會進行流量的檢查和分配,並且需要配置 backend service 和 health check 等複雜的設定。</p>



<h4 class="wp-block-heading"><strong>Protocol Forwarding 的簡單直接</strong></h4>



<p>相比之下,Protocol Forwarding 就單純多了。它不做負載平衡,不需要 backend service,也不會終止或檢查你的連線內容。它就像是一個「純粹的轉接頭」,把特定 IP 和 port 收到的流量,直接原封不動地送到指定的目標。這個目標可以是單一台 VM instance,也可以是一組 target pool(但 target pool 的分配邏輯比 Load Balancer 簡單很多)。</p>



<p>這種設計在某些情況下反而是優勢。比如說,你只有一台伺服器,根本不需要負載平衡的功能,只是想要一個固定的外部 IP 位址來接收特定協定的流量。這時候用 Load Balancer 就太複雜了,還要設定一堆用不到的功能。或者,你的應用程式本身對連線非常敏感,不希望中間有任何「代理」介入,Protocol Forwarding 的直接轉送特性就很重要。</p>



<h4 class="wp-block-heading"><strong>實際場景的選擇</strong></h4>



<p>再舉個具體例子:假設你要架設一個 IPsec VPN Server。VPN 連線通常使用 ESP(IP Protocol 50)或特定的 UDP port,而且連線的狀態非常重要。如果用 TCP Proxy Load Balancer,它會終止連線並重建,這可能會破壞 VPN 協定的運作。如果用 Network Load Balancer,雖然可以運作,但你需要設定 health check、backend service 等,而且如果你只有一台 VPN Server,這些設定都是多餘的。</p>



<p>這時候 Protocol Forwarding 就很適合,你只需要建立一個 Forwarding Rule,指定「所有到這個 IP 的 ESP 協定流量都轉送到我的 VPN Server」,就完成了。設定簡單,流量處理也最直接。當然,如果你後來需要多台 VPN Server 並做負載平衡,那時候再改用 Network Load Balancer 也不遲。</p>



<h4 class="wp-block-heading"><strong>總結差異</strong></h4>



<p>所以簡單來說,TCP Proxy Load Balancer 和 Network Load Balancer 確實可以處理非 HTTP/HTTPS 流量,但它們是為了「多台伺服器的負載分配」而設計的,功能複雜、設定繁瑣。Protocol Forwarding 則是為了「單純的流量轉送」,當你不需要負載平衡,只想要一個乾淨、直接的流量入口時,它就是最佳選擇。這就是為什麼 GCP 會同時提供這些不同的方案,讓使用者根據實際需求來選擇最適合的工具。</p>



<p>你可能會想,為什麼不直接讓伺服器對外開放就好?</p>



<p>確實可以這樣做,但 Protocol Forwarding 提供了一層額外的管理和保護。</p>



<p>透過 Forwarding Rule(轉送規則),你可以統一管理哪些 IP 位址和 port 可以接收流量,而不需要在每台伺服器上個別設定防火牆規則。這樣的架構讓你的網路設計更有彈性,也更容易維護。</p>



<h3 class="wp-block-heading">為什麼保護 Protocol Forwarding 有保護的功能？</h3>



<p>Forwarding Rule 本身並不是用來「阻擋」流量的,它比較像是「開通一條路」。當你建立一個 Forwarding Rule,你是在說「我要讓這個 External IP 的這個 port(或協定)可以接收流量,並且把這些流量轉送到指定的目標」。但這不代表「沒有設定 Forwarding Rule 的 port 就會被擋下來」,因為 Forwarding Rule 根本不管其他 port 的事。</p>



<p>舉個例子來說明:假設你有一台 VM,它的內部 IP 是 10.0.0.5。你申請了一個 External IP 是 34.80.0.100,然後建立一個 Forwarding Rule,把 34.80.0.100:8080 的流量轉送到 10.0.0.5:8080。這時候,外面的人可以透過 34.80.0.100:8080 連到你的 VM。但如果有人試圖連 34.80.0.100:3306(假設你沒設定這個 port 的 Forwarding Rule),會發生什麼事呢?</p>



<h3 class="wp-block-heading"><strong>防火牆規則才是真正的守門員</strong></h3>



<p>答案是:這個連線會失敗,但不是因為 Forwarding Rule 擋住它,而是因為根本就「沒有路可以通」。</p>



<p>Forwarding Rule 只負責「有設定的 port」,沒設定的 port 就不會被轉送,流量會直接被丟棄或回應連線失敗。從這個角度來看,Forwarding Rule 確實有「只開放特定 port」的效果,但它的本質是「開通」而不是「防禦」。</p>



<p>真正的防火牆功能還是要靠 <a href="https://docs.cloud.google.com/firewall/docs/firewalls?hl=zh-tw" target="_blank" rel="noopener" title="">Firewall Rules</a> 來做。Firewall Rules 才是那個會主動「檢查」並「決定要不要放行」的機制。</p>



<p>即使你設定了 Forwarding Rule 把流量轉到 VM,如果 VM 的 Firewall Rules 沒有允許那個 port,流量還是會被擋下來。</p>



<p>所以完整的流程是:</p>



<p>External IP 的流量 → Forwarding Rule 決定要不要轉送 → Firewall Rules 決定要不要放行 → 最後才到達 VM。</p>



<h3 class="wp-block-heading"><strong>兩者的互補關係</strong></h3>



<p>所以正確的理解應該是:Forwarding Rule 是「入口管理」,它決定哪些流量可以進入你的 GCP 架構;Firewall Rules 是「存取控制」,它決定流量能不能到達特定的資源。</p>



<p>兩者是互補的,不是替代的關係。Forwarding Rule 確實讓你不用在每台伺服器上都開放對外 port,但你還是需要 Firewall Rules 來做更細緻的安全控制。這樣的設計讓你的網路架構既有彈性,又有足夠的安全保護。</p>



<p>以下整理一張完整的功能比較表,讓你能清楚看出這四種方案的差異。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">GCP 流量轉送方案功能比較表</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>功能項目</th><th>Application Load Balancer (ALB)</th><th>TCP Proxy Load Balancer</th><th>Network Load Balancer</th><th>Protocol Forwarding</th></tr></thead><tbody><tr><td><strong>支援協定</strong></td><td>HTTP、HTTPS、HTTP/2</td><td>TCP (任意 port)</td><td>TCP、UDP、ESP、ICMP、GRE 等所有 IP 協定</td><td>TCP、UDP、ESP、ICMP、GRE 等所有 IP 協定</td></tr><tr><td><strong>OSI 層級</strong></td><td>Layer 7 (應用層)</td><td>Layer 4 (傳輸層)</td><td>Layer 4 (傳輸層)</td><td>Layer 3/4 (網路/傳輸層)</td></tr><tr><td><strong>負載平衡功能</strong></td><td>有,可依據 URL、Header 等內容分配</td><td>有,依據連線分配</td><td>有,依據連線或封包分配</td><td>無(或僅有基本的 target pool 分配)</td></tr><tr><td><strong>連線處理方式</strong></td><td>Terminate(終止並重建連線)</td><td>Terminate(終止並重建連線)</td><td>Passthrough(直接轉送)</td><td>Passthrough(直接轉送)</td></tr><tr><td><strong>保留客戶端 IP</strong></td><td>否(需從 X-Forwarded-For Header 取得)</td><td>否(需從 PROXY Protocol 取得)</td><td>是(客戶端 IP 完整保留)</td><td>是(客戶端 IP 完整保留)</td></tr><tr><td><strong>跨區域負載平衡</strong></td><td>支援(Global Load Balancer)</td><td>支援(Global Load Balancer)</td><td>僅 Regional(區域內)</td><td>僅 Regional(區域內)</td></tr><tr><td><strong>SSL/TLS 終止</strong></td><td>支援</td><td>支援</td><td>不支援</td><td>不支援</td></tr><tr><td><strong>Health Check</strong></td><td>必須設定</td><td>必須設定</td><td>必須設定(使用 Load Balancer 時)</td><td>選擇性(使用 target pool 時)</td></tr><tr><td><strong>Backend Service</strong></td><td>需要</td><td>需要</td><td>需要</td><td>不需要</td></tr><tr><td><strong>主要使用場景</strong></td><td>網站、Web 應用程式、API 服務</td><td>需要全球分布的 TCP 服務(如遊戲、資料庫代理)</td><td>高效能、低延遲的區域性服務</td><td>單一伺服器、特殊協定、簡單轉送需求</td></tr><tr><td><strong>設定複雜度</strong></td><td>高</td><td>中高</td><td>中</td><td>低</td></tr><tr><td><strong>效能延遲</strong></td><td>較高(需解析內容)</td><td>中等(需終止連線)</td><td>低(直接轉送)</td><td>極低(最簡單的轉送)</td></tr><tr><td><strong>適合伺服器數量</strong></td><td>多台(需負載平衡)</td><td>多台(需負載平衡)</td><td>多台(需負載平衡)</td><td>單台或少數幾台</td></tr><tr><td><strong>IP 位址類型</strong></td><td>支援 External IP</td><td>支援 External IP</td><td>支援 External/Internal IP</td><td>支援 External/Internal IP</td></tr><tr><td><strong>Session Affinity</strong></td><td>支援(Cookie-based)</td><td>支援(Client IP-based)</td><td>支援(Client IP、5-tuple)</td><td>有限支援(僅 target pool)</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><strong>表格重點說明</strong></h3>



<p>這張表格從上到下,逐漸從「功能豐富但複雜」走向「功能簡單但直接」。<a href="https://www.dongdonggcp.com/2024/09/25/how-to-config-gcp-load-balancer/" target="_blank" rel="noopener" title="">Application Load Balancer </a>功能最完整,可以看懂 HTTP 內容並根據網址或 Header 來分配流量,但也最複雜。TCP Proxy Load Balancer 則退一步,不看內容,只處理 TCP 連線,但仍保有全球負載平衡的能力。</p>



<p>Network Load Balancer 更進一步簡化,它是 passthrough 模式,不會終止連線,所以效能最好,但只能在單一區域內運作。最後的 Protocol Forwarding 則是最純粹的,它幾乎不做任何處理,就是把流量轉過去而已,所以設定最簡單,適合那些「我只想要一個入口」的需求。</p>



<p>選擇哪一種方案,關鍵在於你的需求:如果需要根據內容智慧分配流量,選 ALB;如果需要全球分布的 TCP 服務,選 TCP Proxy LB;如果需要高效能且保留原始 IP,選 Network LB;如果只是簡單轉送不需要複雜功能,選 Protocol Forwarding。這樣的設計讓你可以根據實際情況,選擇最符合成本效益的方案。</p>



<p>詳細介紹可以參考<a href="https://docs.cloud.google.com/load-balancing/docs/protocol-forwarding?hl=zh-tw" target="_blank" rel="noopener" title="">通訊協定轉送總覽，</a>設定方法可以參考<a href="https://docs.cloud.google.com/load-balancing/docs/set-up-protocol-forwarding?hl=zh-tw" target="_blank" rel="noopener" title="">設定通訊協定轉送</a>。</p>



<p>關於更多 GCP 負載平衡的概念和實作教學，都在東東的 <a href="https://dongdonggcp.com/gcp-architect-class/" target="_blank" rel="noopener" title="">GCP 線上課程《雲端架構師養成班》</a>，有需要可以進來看喔！</p><p>The post <a href="https://dongdonggcp.com/2025/10/28/what-is-protocol-forwarding-and-its-usage/">通訊協定轉送 (Protocol Forwarding) 是什麼？何時會用到？</a> first appeared on <a href="https://dongdonggcp.com">東東 GCP 教學 - GCP 實戰講師</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://dongdonggcp.com/2025/10/28/what-is-protocol-forwarding-and-its-usage/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">11462</post-id>	</item>
	</channel>
</rss>
