Windows 방화벽에서 포트 허용하기

서버에서 웹 서버나 게임 서버 같은 프로그램을 실행하면, 외부에서 접속할 수 있도록 Windows 방화벽에서 해당 포트를 허용해야 합니다. 이 글은 서버 안의 운영체제 방화벽 설정 방법입니다. Windows Server 2016과 2019에서 방법이 같습니다.

주의

원격 데스크톱 포트(기본 3389)를 막는 규칙을 만들거나, 원격 데스크톱 허용 규칙을 끄지 마세요. 서버에 다시 접속할 수 없게 됩니다.

열어야 할 포트 확인

먼저 프로그램이 쓰는 포트 번호와 프로토콜(TCP 또는 UDP)을 확인합니다. 프로그램 설명서나 설정 파일에 적혀 있습니다.

예포트프로토콜
웹 서버 (HTTP)80TCP
웹 서버 (HTTPS)443TCP
마인크래프트 Java 서버 기본25565TCP

방법 1. 화면에서 규칙 만들기

  1. 시작 버튼을 마우스 오른쪽 버튼으로 누르고 실행을 누릅니다.
  2. wf.msc 를 입력하고 확인을 누릅니다. 고급 보안이 포함된 Windows Defender 방화벽 창이 열립니다. (Windows Server 2016은 고급 보안이 포함된 Windows 방화벽)
  3. 왼쪽에서 인바운드 규칙을 누릅니다.
  4. 오른쪽 작업 창에서 새 규칙... 을 누릅니다. 새 인바운드 규칙 마법사가 열립니다.
  5. 규칙 종류에서 포트를 고르고 다음을 누릅니다.
  6. TCP 또는 UDP 를 고르고, 특정 로컬 포트에 포트 번호를 입력합니다. 다음을 누릅니다.
    • 여러 포트: 80, 443
    • 포트 범위: 30000-30100
    • TCP 와 UDP 를 모두 열어야 하면 규칙을 하나씩 따로 만듭니다.
  7. 연결 허용을 고르고 다음을 누릅니다.
  8. 도메인, 개인, 공용 세 가지 모두 체크된 상태로 두고 다음을 누릅니다.
  9. 이름에 알아보기 쉬운 이름을 적습니다. (예: Minecraft 25565 TCP) 마침을 누릅니다.
  10. 인바운드 규칙 목록에 방금 만든 규칙이 초록색 체크 표시와 함께 나타나면 적용된 것입니다.

방법 2. PowerShell 로 규칙 만들기

  1. 시작 버튼을 마우스 오른쪽 버튼으로 누르고 Windows PowerShell(관리자) 를 누릅니다.

  2. 아래 명령을 입력합니다. 이름과 포트는 바꿔서 쓰세요.

    powershell
    # TCP 포트 허용
    New-NetFirewallRule -DisplayName "Minecraft 25565 TCP" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow
    
    # UDP 포트 허용
    New-NetFirewallRule -DisplayName "Game 27015 UDP" -Direction Inbound -Protocol UDP -LocalPort 27015 -Action Allow
    
    # 여러 포트 한 번에
    New-NetFirewallRule -DisplayName "Web 80,443" -Direction Inbound -Protocol TCP -LocalPort 80,443 -Action Allow
  3. 규칙 정보가 출력되고 Enabled : True 가 보이면 적용된 것입니다.

특정 IP 에서만 접속을 허용하려면 -RemoteAddress 를 붙입니다.

powershell
New-NetFirewallRule -DisplayName "MSSQL from office" -Direction Inbound -Protocol TCP -LocalPort 1433 -RemoteAddress 203.0.113.10 -Action Allow

규칙 끄기와 삭제

  • 화면: 인바운드 규칙 목록에서 규칙을 마우스 오른쪽 버튼으로 누르고 규칙 사용 안 함 또는 삭제를 누릅니다.

  • PowerShell:

    powershell
    Remove-NetFirewallRule -DisplayName "Minecraft 25565 TCP"

허용했는데도 접속이 안 될 때

  1. 프로그램이 실행 중인지 확인합니다.

  2. 프로그램이 해당 포트에서 대기 중인지 PowerShell 에서 확인합니다.

    powershell
    Get-NetTCPConnection -State Listen -LocalPort 25565

    결과가 나오지 않으면 프로그램이 그 포트를 쓰지 않는 것입니다. 프로그램 설정을 확인하세요.

  3. 규칙의 프로토콜(TCP/UDP)과 포트 번호가 프로그램 설정과 같은지 확인합니다.

  4. 프로그램이 따로 만든 차단 규칙이 없는지 인바운드 규칙 목록에서 확인합니다. 빨간 차단 표시가 있는 규칙은 허용 규칙보다 먼저 적용됩니다.

원하는 답을 찾지 못하셨나요?

1:1 문의 게시판에 남겨 주시면 담당자가 답변드립니다.