방화벽에서 특정 포트를 오픈해야 하는 경우 물론 firewall.cpl 이나 wf.msc 등의 GUI 환경에서 설정할 수도 있지만, 대량으로 처리해야 하는 경우라면 커맨드로 작업하는게 훨씬 편리합니다.

간단히 예제를 보여드리겠습니다.

TCP 7777 포트를 오픈하고 싶다면

윈도우 2008 이상

netsh advfirewall firewall add rule name="test" dir=in action=allow protocol=tcp localport=7777

윈도우 2003

netsh firewall add portopening tcp 7777 "test"

위 예제는 가장 일반적인 TCP 포트 인바운트 허용 규칙을 추가하는 것이었고, 좀 더 상세한 작업을 원하신다면 도움말 참고해서 작업하시면 되겠습니다.

윈도우 2008 이상에서는 아래 명령어를 입력해보세요.

netsh advfirewall firewall add rule

아래는 도움말에 나오는 예제입니다.

      messenger.exe에 대해 캡슐화 보안이 적용되지 않은 인바운드 규칙을 추가합니다.
      netsh advfirewall firewall add rule name="allow messenger"
      dir=in program="c:\programfiles\messenger\msmsgs.exe"
      security=authnoencap action=allow
      포트 80에 대한 아웃바운드 규칙을 추가합니다.
      netsh advfirewall firewall add rule name="allow80"
      protocol=TCP dir=out localport=80 action=block
      TCP 포트 80 트래픽에 대해 보안 및 암호화를 요구하는
      인바운드 규칙을 추가합니다.
      netsh advfirewall firewall add rule
      name="Require Encryption for Inbound TCP/80"
      protocol=TCP dir=in localport=80 security=authdynenc
      action=allow
      messenger.exe에 대해 인바운드 규칙을 추가하고 보안을 요청합니다.
      netsh advfirewall firewall add rule name="allow messenger"
      dir=in program="c:\program files\messenger\msmsgs.exe"
      security=authenticate action= allow
     SDDL 문자열로 식별된 그룹 acmedomain\nscanners에 대해
     인증된 방화벽 통과 규칙을 추가합니다.
     netsh advfirewall firewall add rule name="allow scanners"
     dir=in rmtcomputergrp=<SDDL 문자열> action=bypass
     security=authenticate
      UDP 연결에 사용되는 로컬 포트 5000-5010에 대해 아웃바운드 허용 규칙을 추가합니다.
      Add rule name="Allow port range" dir=out protocol=udp localport=5000-5010 action=allow

윈도우 2003 에서는 아래 명령어를 입력해보세요.

netsh firewall add portopening

아래는 도움말에 나오는 예제입니다.

      add portopening TCP 80 MyWebPort                                             
      add portopening UDP 500 IKE ENABLE ALL                                       
      add portopening ALL 53 DNS ENABLE CUSTOM                                     
          157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet        
      add portopening protocol = TCP port = 80 name = MyWebPort                    
      add portopening protocol = UDP port = 500 name = IKE mode = ENABLE scope = ALL
      add portopening protocol = ALL port = 53 name = DNS mode = ENABLE            
          scope = CUSTOM addresses =                                     
          157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,LocalSubnet

어차피 모든 명령어의 사용법을 외울 수는 없습니다. 그리고 외울 필요도 없습니다. 그냥 윈도우에 이런 명령어가 있다는 사실만 알아두시면 되겠습니다. 나중에 필요할 때가 찾아오면 그 때 다시 검색해서 사용하면 되니까요.

※ 동우님 질문에 답변

2008 기준으로 예제 보여드리겠습니다.

O 2000-3000 포트 차단하는 방법
netsh advfirewall firewall add rule name="동우" dir=in action=block protocol=tcp localport=2000-3000

O 적용된 규칙 보기
netsh advfirewall firewall show rule name="동우"

O 삭제하는 방법
netsh advfirewall firewall delete rule name="동우"

적용된 규칙 보기나 삭제하는 방법에 name=all 값을 주면 모든 규칙을 불러오거나 삭제합니다. 자세한 사용법을 확인하려면 아래 명령어를 각각 입력해보세요.

netsh advfirewall firewall add rule
netsh advfirewall firewall delete rule
netsh advfirewall firewall show rule
netsh advfirewall firewall set rule
신고

  1. 네오지온
    2012.01.30 01:17 신고

    스누피 님 글 쓰시느라 고생하셨습니다.

    구정 잘 보내셨는지 모르겠내요
    늘 건강하시고 행복하세요. ^^

  2. 동우
    2012.01.30 19:05 신고

    allow 허용이면 차단은 먼가요?.. 2000~3000 까지 차단 하고 싶으면.. 어떻게 해야 하는지 궁굼 하네요..

    적용된 규칙 보기랑..

    잘못 등록 했을때 해제 하는 방법이나 기존 몇개 삭제 하는 방법도 궁굼 해요

  3. 동우
    2012.01.31 16:18 신고

    너무 ㄱㅅ 합니다 ㅠㅠ..

  4. 배우는자
    2015.01.15 22:09 신고

    열기는 action=allow, 차단은 action=block 해주면 되던데요...
    포트를 막는 다는 개념 보다 정책을 걸어서 포트를 사용 못 하게 하는 거네요...
    그말이 그말인가 ..;;

    삭제는
    netsh advfirewall firewall delete rule name=

    이런식으로 입력하면 정책 사라짐...정책 이름 동일한게 있으면
    다 사러지니깐 조심하세요...
    IT 엔지니어 힘냅시다......

  5. 배진호
    2015.09.23 21:18 신고

    궁금한게 있습니다.
    netsh로 하게되면 그 서버에 접속하는 모든 클라이언트의 아이피가 192.168.137.1 이 되던데
    각각 클라이언트 공인아이피로 접속되게하는방법은없나요?