Azure認證帳號購買 解決 Azure 新加坡伺服器入站規則防火牆不生效
第一章:問題表面,看似是防火牆不生效
很多人第一次遇到「Azure 新加坡伺服器入站規則防火牆不生效」時,直覺會去改規則:端口換了、協定選對了、來源範圍也填了,甚至把規則複製貼上多建幾條,結果依然同樣。你會開始懷疑自己是不是在某個設定點踩了坑,或者是 Azure 在新加坡區域「特別」不接受規則。
但現實通常更務實:你看到的是網路連線失敗的症狀,根因卻可能藏在路徑上更前面或更後面的位置。入站規則有可能根本沒有套用到你以為的那台機器;也可能規則套用了,但優先順序被其他規則覆蓋;或者你測試的方式不對,例如你測的是 UDP,規則卻只放了 TCP;又或者你以為的「入站」其實不是你該開的那層。
所以解決這件事的關鍵不是盲目重設,而是建立一套可重複的排查順序。下面我會用一個循序漸進、好懂但不敷衍的方式帶你拆解。
第二章:先釐清「你開的是哪個防火牆」
在 Azure 中,入站防火牆通常有兩個常見角色:網路安全群組(NSG)與資源自帶的安全設定(例如 Windows 防火牆、Linux 的 iptables/ufw)。很多時候你以為只要改 NSG 就好,但其實 NSG 放行了,伺服器本身卻沒開,連線還是會失敗。
更麻煩的是,NSG 可能不只一個:子網 NSG、網卡 NSG、甚至某些情境下還有額外的安全層。你要先回答一句話:你改的入站規則到底是綁在「哪個層級」?它是否真的生效到你的 NIC?
2.1 NSG 綁定位置:子網層還是網卡層
最常見的落差在於:你在 NSG 裡新增規則,但 NSG 沒有實際綁到那台 VM 的網卡,或綁的是子網卻你的 VM 在另一個子網。你可以把它想成「你把門禁卡交給了隔壁大樓的保全」,門禁系統當然不會放你進錯的地方。
建議做法很簡單:
- 打開 VM → 網路(Network)→ 網路介面(NIC)→ 檢查是否有 NSG 綁定。
- 同時也到 VNet → 子網(Subnet)→ 檢查該子網是否有 NSG 綁定。
如果兩層都有 NSG,那入站規則的判斷要以「整體生效結果」為準,因為最後仍可能被某個規則拒絕。
2.2 規則放行了,但你開的不是那個方向或目標
NSG 介面裡的「入站(Inbound)」是針對「從來源到目標資源」的流向。若你要開的是公網進入 VM 的服務,入站規則通常沒錯;但如果你其實要的是 VM 主動連到外部,這時候你需要的是「出站(Outbound)」或至少要把兩邊都看清楚。
另外也要留意你是否在規則中把「目標」設定成錯的資源類型或子網範圍。NSG 的規則多半靠「來源/目的地 IP 與端口」來判斷,設定錯就會像鑰匙不對。
第三章:規則看似正確,仍然不生效的典型原因
入站規則「不生效」的背後,通常有幾個經典坑。你只要按順序對照,就會很快抓到問題。
3.1 優先順序:一條更早的 Deny 把它蓋掉
NSG 規則有「優先順序」。一旦有條件符合的規則先被命中,後面的規則就不會再影響結果。這是最容易讓人誤判的地方:你新增了一條 Allow,但其實前面已有一條更小優先權值的 Deny,導致最終仍是拒絕。
Azure認證帳號購買 你可以把優先順序理解成「先判斷哪條」:數值越小,優先越高。你要做的不是只看有沒有 Allow,而是看整體規則清單的相對優先順序,確認沒有更早的拒絕把流量擋掉。
3.2 來源範圍太嚴或寫錯:你連線的 IP 不在允許清單
許多使用者會把 Source 填成自己的公司網段或單一 IP,結果測試時其實連線來源換成了雲端工具、手機熱點、VPN 節點、或家用寬頻的非預期位址。你以為是「開了就能連」,但 NSG 的判斷是「來源 IP 必須符合」。
快速驗證的方法是先暫時將來源改為「任何」(例如 Internet 或 0.0.0.0/0,視介面而定),確認服務確實能通,再把來源收回到安全範圍。這能避免你在一開始就被來源條件卡住。
3.3 端口/協定不一致:TCP 開了,連的是 UDP 或反之
常見情境是你以為你在開某個服務的「端口」,但實際服務使用的是另一個協定或是另一個端口。例如 Web 用的是 TCP 80/443,但你測試工具可能走了不同策略;或某些應用對外服務端口是 A,實際綁定在 VM 上的端口是 B。
所以你需要同步確認:
- 你要放行的協定(TCP/UDP)是否正確。
- 你放行的端口是否與 VM 上服務實際監聽的端口一致。
- 如果是多執行緒或代理服務,可能還會涉及不同目的端口。
只要其中一項不一致,連線都會失敗,而你只會覺得「規則沒生效」。
3.4 目的地範圍不對:目標不是你以為的那個 IP
NSG 規則可以用「目的地」或「目標」條件。很多人把目的地填成了某個私有 IP 或子網範圍,但實際連線打到的是 VM 的公網 IP、或打到的是 Load Balancer / NAT 後再轉發,目標匹配就不會命中。
最簡潔的排查做法是:先讓目的地條件盡量不限制(例如「任何」),確定連通,再逐步收斂條件。
第四章:新加坡區域常被忽略的「測試誤差」與「連線路徑差異」
「新加坡區域」本身通常不是主要原因,Azure 的規則處理機制是統一的。但因為跨區或跨網路延遲、路由、測試來源不同,常讓人誤以為規則沒生效。
Azure認證帳號購買 4.1 測試時要確定你測到的是同一條路
你在本機用 telnet、curl、PowerShell 測試,對方若是走 VPN 或代理,來源 IP 可能已變。你在內網測試用另一個工具,目的地也可能是不同地址。
建議你把測試方式固定在同一套條件下,例如:
- 固定來源:同一個網路環境測同一台 VM。
- 固定目的:用 VM 公網 IP 測外部服務,用私有 IP 測內網服務。
- 固定協定:用 TCP 對應 TCP,UDP 對應 UDP。
當你固定路徑後,問題就會更容易暴露在正確的環節。
4.2 若你使用 Load Balancer 或 NAT,NSG 規則要看的是前後關係
不少專案在 Azure 新加坡會把流量先丟給 Load Balancer,再轉到後端 VM。這時 NSG 在哪裡生效要看你實際放流量的入口層是什麼。若 NSG 綁在後端子網/網卡上,規則仍然適用,但你的規則條件(來源 IP、目的端口)要以「LB 轉發後的觀察到的來源/目標」為準。
這也是為什麼「我覺得我開了公網入站」卻仍不通:你開的來源範圍其實不是 LB 最終呈現給 NSG 的來源。
第五章:一步到位的排查流程(建議照順序做)
下面這段我會給你一個實際能落地的流程。你可以把它當作檢查清單。每一步都帶你確認「是哪一層」在擋。
5.1 從「網路層是否判定為允許」開始
- 確認 NSG 是否真的綁在 VM 的 NIC 或子網上。
- 檢查 NSG 入站規則是否包含:你要連入的協定、端口、目標資源範圍。
- 檢查優先順序:是否有更高優先的 Deny 規則符合相同條件。
- 暫時把來源設為「任何」以排除來源不符造成的誤判。
- 暫時把目的地設為「任何」排除目標匹配錯誤。
完成後,若仍不通,再往下一層看。
5.2 在 VM 上確認服務端口真的在聽、且 OS 防火牆允許
NSG 只是網路門禁,真正接收請求還需要 OS 層放行。
你可以用最直接的方法檢查服務:
- Azure認證帳號購買 在 VM 上查看服務監聽端口(例如 Web 服務通常要確保在 80/443 監聽)。
- 檢查 OS 防火牆是否允許該端口的入站流量。
在 Windows 上,你通常要確認 Windows 防火牆規則有允許該端口;在 Linux 上,你要確認 ufw/iptables 並確認服務沒有只綁在本機回環(127.0.0.1)。如果服務只綁在 localhost,那再怎麼開 NSG 也接不到外部連線。
5.3 用「連線日誌/診斷」找出被拒的原因
當你把規則都改成寬鬆後仍不通,下一步是看實際判斷結果。Azure 提供可以檢視 NSG flow 或相關診斷的能力,你不需要猜測是哪條規則命中,只要看判斷結果。
實務上,你需要的不是所有細節,而是兩件事:
- 這筆流量最終是被 Allow 還是 Deny。
- 若 Deny,對應是哪一條規則、條件是什麼。
拿到這兩個信息,你就能立刻回到規則清單做精準修正,而不是繼續盲調。
第六章:常見案例拆解(你可能正卡在這裡)
6.1 案例一:規則新增了,但綁定的是另一個 NSG
有人把入站規則加在 A NSG,但 VM 的 NIC 綁的是 B NSG。外表看起來兩個 NSG 都存在,規則也都設了,但實際流量只會被 B 判斷。結果就是「你改了,但永遠不生效」。解法就是核對 NIC/子網綁定關係,確認你改的是正在工作的那個 NSG。
6.2 案例二:Allow 有了,卻被 Deny 規則蓋掉
有時候你加了一條 Allow 任意來源任意端口,理論上應該通。然而你忘了 NSG 前面已存在某條高優先的 Deny(例如封鎖某來源或某目的端口),最終命中拒絕。解法是重新整理規則優先順序,或調整條件讓命中邏輯正確。
6.3 案例三:端口沒錯,但服務綁錯介面
Azure認證帳號購買 這類情況在 Linux 很常見。服務可能只綁在 127.0.0.1(本機回環),外部連線打進來時會因為沒有程式在外部介面上監聽而直接失敗。你在 NSG 放行了,結果依然不通。解法是讓服務監聽 0.0.0.0 或實際網卡地址,並重啟服務。
6.4 案例四:用公網 IP 測,但後面其實是私網服務
有些架構把服務放在私網子網,不對外暴露。你用外網工具測公網 IP 當然不通。解法不是改 NSG 為「任何」,而是先確認服務真正的暴露方式:是否需要公網入口、是否有 NAT Gateway、是否有 Load Balancer、是否需要 VPN/ExpressRoute。
第七章:如何把設定「從能通」變成「可控且不再反覆」
當你終於把連線打通,下一步要做的是把設定收斂到可控,而不是維持寬鬆的「任何來源」狀態。否則你下一次碰到問題會又回到無法定位。
7.1 收斂來源,先用最小必要範圍
把來源從任何改回你確定會連線的範圍,例如公司出口 IP、特定 VPN 網段,或只允許可信的跳板機。這不只是安全,也能讓你未來排查更快:因為規則命中會更明確。
7.2 固化端口與協定,避免「測試放行」殘留
測試時你可能暫時放了所有端口或錯誤協定。請在確認連通後把端口範圍改回實際服務端口,並確保協定正確。
7.3 建立變更紀錄:你改了什麼、在哪裡改、什麼時間有效
很多人排查完就直接結案,但過兩週又要回來時,會完全記不得前面到底改了哪條規則、調了哪個優先順序。你只要做最簡單的變更紀錄,就能在下一次少走很多彎路。
Azure認證帳號購買 建議你記下:
- NSG 名稱與綁定位置(NIC/子網)。
- 新增或修改的規則編號、優先順序。
- 來源/目的地範圍、協定、端口。
- 確認連通的測試方法與結果。
第八章:最後的檢查清單(讓你不再被「不生效」拖著走)
如果你目前正卡在「Azure 新加坡伺服器入站規則防火牆不生效」,你可以用下面清單快速回看。
- 你新增/修改的 NSG 是否確實綁到 VM 的 NIC 或正確子網?
- 是否存在更高優先順序的 Deny 命中你的流量?
- 來源 IP/來源範圍是否與你實際測試的來源一致?
- 協定與端口是否完全對應(TCP/UDP、服務實際監聽端口)?
- 如果有 Load Balancer/NAT,規則條件是否考慮轉發後的來源/目的觀察結果?
- OS 層防火牆與服務監聽介面是否也允許外部連線?
- Azure認證帳號購買 是否使用診斷/流量日誌確認最終是 Allow 還是 Deny?
只要你按這套邏輯走,多數「規則不生效」都能在相當短的時間內定位到具體原因。真正讓人痛苦的不是 Azure 複雜,而是排查時沒有把問題縮小到「哪一層在拒絕」或「哪一條規則命中」。你一旦做到這一步,剩下的就只是把設定修正到正確匹配。
結語:把玄學拆成可驗證的步驟
很多排查失敗都不是因為你不夠努力,而是你在錯的方向上投入了太多情緒。入站規則是否生效,永遠可以回到一個更具體的問題:這筆流量是否命中你設定的那條規則?命中後是允許還是拒絕?允許後,VM 的服務與 OS 防火牆是否也同樣接受?
當你把排查拆成網路層、OS 層與日誌驗證三段,你就會發現「不生效」只是你尚未看見真正的命中結果。修正方向就會變得明確,設定也會更穩定。希望你下一次遇到類似問題,不用再盲目改規則,而是能快速找到原因、正確落地解決。

