คำตอบสั้น ๆ: สร้าง Inbound Rule เพื่อเปิดพอร์ต TCP หรือ UDP บน Windows Server ได้ทั้งผ่านหน้าจอ PowerShell และ netsh พร้อมจำกัด IP ต้นทางและตรวจว่าพอร์ตเปิดสำเร็จ
คู่มือนี้อธิบาย Firewall ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย
Windows Server เปิด Windows Defender Firewall ไว้ตั้งแต่ติดตั้ง และบล็อกการเชื่อมต่อขาเข้าทุกพอร์ตที่ไม่มีกฎอนุญาต เมื่อคุณติดตั้งโปรแกรมที่ต้องรับการเชื่อมต่อจากภายนอก เช่น เว็บแอปที่รันบนพอร์ต 8080, SQL Server ที่พอร์ต 1433 หรือโปรแกรมบัญชีที่ใช้พอร์ตเฉพาะ ต้องสร้างกฎ Inbound Rule เพื่อเปิดพอร์ตนั้นก่อน เครื่องภายนอกจึงจะเชื่อมต่อได้
บทความนี้แสดงสามวิธี คือผ่านหน้าจอ Windows Defender Firewall with Advanced Security, ผ่าน PowerShell และผ่านคำสั่ง netsh ทั้งหมดให้ผลแบบเดียวกัน เลือกวิธีที่ถนัดได้เลย
สิ่งที่ต้องเตรียม
- Windows Server 2019 หรือ 2022 และบัญชีในกลุ่ม Administrators
- ทราบหมายเลขพอร์ตและโปรโตคอล (TCP หรือ UDP) ที่โปรแกรมใช้ ดูได้จากเอกสารของโปรแกรมนั้น
- ถ้าเป็นไปได้ ทราบ IP ต้นทางที่จะเชื่อมต่อเข้ามา เพื่อจำกัดกฎให้แคบที่สุด
หมายเหตุ: ห้ามปิด Firewall ทั้งหมดเพื่อแก้ปัญหาเชื่อมต่อไม่ได้ ให้เปิดเฉพาะพอร์ตที่จำเป็นเท่านั้น และถ้ากำลังแก้กฎที่เกี่ยวกับ Remote Desktop ให้เปิดหน้าต่าง RDP เดิมค้างไว้และทดสอบด้วยการเชื่อมต่อใหม่อีกหน้าต่างก่อนออกจากระบบ
วิธีที่ 1: เปิดพอร์ตผ่านหน้าจอ (GUI)
- กด Win + R พิมพ์
wf.mscแล้วกด Enter จะเปิดหน้าต่าง Windows Defender Firewall with Advanced Security - ที่แผงซ้าย คลิก Inbound Rules แล้วที่แผงขวาคลิก New Rule...
- หน้า Rule Type เลือก Port แล้วกด Next
- หน้า Protocol and Ports เลือก TCP หรือ UDP แล้วเลือก Specific local ports ใส่หมายเลขพอร์ต เช่น
8080ถ้ามีหลายพอร์ตคั่นด้วยจุลภาค เช่น8080, 8443หรือใส่เป็นช่วง เช่น5000-5010 - หน้า Action เลือก Allow the connection
- หน้า Profile เลือกโปรไฟล์ที่ต้องการ (Domain, Private, Public) สำหรับเซิร์ฟเวอร์บนคลาวด์ที่ไม่ได้อยู่ใน Domain การ์ดเครือข่ายมักอยู่ในโปรไฟล์ Public ถ้าไม่เลือก Public กฎจะไม่มีผล
- หน้า Name ตั้งชื่อที่สื่อความหมาย เช่น
App TCP 8080แล้วกด Finish
กฎใหม่จะปรากฏในรายการ Inbound Rules พร้อมไอคอนเครื่องหมายถูกสีเขียว แปลว่าเปิดใช้งานแล้ว
ถ้าต้องการจำกัด IP ต้นทาง ให้ดับเบิลคลิกกฎที่สร้าง ไปที่แท็บ Scope ส่วน Remote IP address เลือก These IP addresses แล้วกด Add เพื่อใส่ IP หรือช่วง IP เช่น 203.0.113.0/24
วิธีที่ 2: เปิดพอร์ตด้วย PowerShell
เปิด Windows PowerShell แบบ Run as Administrator แล้วรัน
New-NetFirewallRule -DisplayName "App TCP 8080" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow -Profile Any
ผลลัพธ์จะแสดงรายละเอียดของกฎ โดยมี Enabled : True, Direction : Inbound และ Action : Allow
ตัวอย่างเปิดหลายพอร์ตพร้อมจำกัด IP ต้นทาง
New-NetFirewallRule -DisplayName "SQL Server from Office" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 203.0.113.10,198.51.100.0/24 -Action Allow
ตัวอย่างเปิดพอร์ต UDP
New-NetFirewallRule -DisplayName "App UDP 5060" -Direction Inbound -Protocol UDP -LocalPort 5060 -Action Allow
วิธีที่ 3: เปิดพอร์ตด้วย netsh
คำสั่ง netsh advfirewall ยังใช้ได้บน Windows Server ทุกรุ่นปัจจุบัน และสะดวกเมื่อต้องใส่ใน Batch Script เปิด Command Prompt แบบ Run as Administrator แล้วรัน
netsh advfirewall firewall add rule name="App TCP 8080" dir=in action=allow protocol=TCP localport=8080
ถ้าสำเร็จจะแสดงคำว่า Ok.