PortQry 명령줄 도구 사용

PortQry는 TCP/IP 연결 문제를 해결하는 데 사용할 수 있는 명령줄 도구입니다. 이 도구는 로컬 컴퓨터 또는 원격 컴퓨터에서 대상 TCP 및 UDP(사용자 데이터그램 프로토콜) 포트의 상태 보고합니다. 또한 로컬 컴퓨터의 포트 사용에 대한 자세한 정보도 제공합니다.

PortQry는 문제 해결 도구로 사용되므로 특정 문제를 해결하는 데 사용하는 사용자는 컴퓨팅 환경에 대한 충분한 지식을 갖출 수 있어야 합니다.

다음과 같은 여러 모드 중 하나로 명령 프롬프트에서 PortQry를 사용할 수 있습니다.

  • 명령줄 모드. 이 모드를 사용하여 로컬 또는 원격 컴퓨터의 문제를 해결할 수 있습니다.
  • 로컬 모드입니다. 이 모드에서는 로컬 컴퓨터 문제 해결을 위한 여러 매개 변수를 사용할 수 있습니다.
  • 대화형 모드. 명령줄 모드와 비슷하지만 바로 가기 명령 및 매개 변수를 사용할 수 있습니다.

참고

PortQry에 대한 그래픽 UI를 포함하는 별도의 도구인 PortQryUI를 다운로드할 수 있습니다. PortQryUI에는 PortQry를 더 쉽게 사용할 수 있는 몇 가지 기능이 있습니다. PortQryUI 도구를 얻으려면 PortQry 명령줄 포트 스캐너에 대한 PortQryUI - 사용자 인터페이스를 참조하세요.

적용 대상: 지원되는 Windows 버전

PortQry 테스트 및 결과

일반적인 포트 검사 도구는 대상 UDP 포트가 ICMP(인터넷 제어 메시지 프로토콜) "대상에 연결할 수 없는" 메시지를 반환하지 않는 경우 포트에 LISTENING 상태 있다고 보고합니다. 이 결과는 다음 이유 중 하나 또는 둘 다에 대해 정확하지 않을 수 있습니다.

  • 지시된 데이터그램에 대한 응답이 없는 경우 대상 포트가 필터링될 수 있습니다.
  • 대부분의 서비스는 전송되는 형식이 지정되지 않은 사용자 데이터그램에 응답하지 않습니다. 일반적으로 포트를 수신 대기하는 서비스 또는 프로그램은 특정 세션 계층 또는 애플리케이션 계층 프로토콜을 사용하는 메시지에만 응답합니다.

보다 정확하고 유용한 결과를 생성하기 위해 PortQry는 2단계 테스트 프로세스를 사용합니다.

1단계: 포트 상태 테스트

PortQry는 포트의 상태 세 가지 값 중 하나로 보고합니다.

  • LISTENING: 이 응답은 프로세스가 대상 포트에서 수신 대기 중임을 나타냅니다. PortQry는 대상 포트에서 응답을 받았습니다.
  • 수신 대기 중 아님: 이 응답은 대상 포트에서 수신 대기 중인 프로세스가 없음을 나타냅니다. PortQry는 대상 포트에서 다음 ICMP 메시지 중 하나를 받았습니다.

    연결할 수 없는 대상 포트에 연결할 수 없음

  • FILTERED: 이 응답은 대상 포트가 필터링되고 있음을 나타냅니다. PortQry는 대상 포트에서 응답을 받지 못했습니다. 프로세스는 대상 포트에서 수신 대기 중이거나 수신 대기하지 않을 수 있습니다. 기본적으로 PortQry는 FILTERED의 응답을 반환하기 전에 TCP 포트를 세 번 쿼리하고 FILTERED의 응답을 반환하기 전에 UDP 포트를 한 번 쿼리합니다.

2단계: 특수 테스트

대상 UDP 포트에서 응답이 없는 경우 PortQry는 포트가 수신 대기 중이거나 필터링되었다고 보고합니다. 그러나 연결 문제를 해결할 때는 포트가 필터링되고 있는지 또는 수신 대기 중인지 여부를 아는 것이 유용합니다. 이는 하나 이상의 방화벽이 포함된 환경에서 특히 그렇습니다.

PortQry는 대상 포트에서 수신 대기하는 서비스 또는 프로그램과 상호 작용할 수 있는 두 번째 테스트 집합을 사용하여 포트 상태 보고서를 구체화합니다. 이 테스트의 경우 PortQry는 다음을 수행합니다.

  • PortQry는 %SYSTEMROOT%\System32\Drivers\Etc 폴더에 있는 서비스 파일을 사용하여 각 포트에서 수신 대기하는 서비스를 결정합니다.
  • PortQry는 예상된 서비스 또는 프로그램에 대해 특별히 생성된 메시지를 만든 다음 해당 메시지를 대상 포트로 보냅니다. 서비스 또는 프로그램에 따라 메시지는 다음과 같은 문제 해결에 유용한 정보를 요청할 수 있습니다.
    • 도메인 및 도메인 컨트롤러 정보(LDAP 쿼리)
    • 등록된 클라이언트 서비스 및 포트(RPC 쿼리)
    • 익명 액세스 허용 여부(FTP 쿼리)
    • MAC 주소(NetBIOS 쿼리)
    • 파일 정보 Mspclnt.ini(ISA 서버 쿼리)
  • PortQry는 테스트 보고서의 일부로 서비스 또는 프로그램의 응답을 구문 분석하고 형식을 지정한 다음 반환합니다.

로컬 컴퓨터 문제 해결을 위한 추가 테스트

PortQry를 설치한 컴퓨터의 포트 문제를 해결해야 하는 경우 로컬 모드에서 PortQry를 사용합니다. 명령줄에서 로컬 모드 매개 변수를 사용하는 경우 로컬 컴퓨터에서 다음과 같은 작업을 수행할 수 있습니다.

  • 포트 매핑 열거
  • 특정 포트에서 변경 내용 모니터링
  • 특정 프로세스에서 변경 내용 모니터링

자세한 내용은 로컬(명령줄) 모드에서 PortQry 사용을 참조하세요.

명령줄 모드에서 PortQry 사용

다른 명령줄 도구와 동일한 방식으로 명령 프롬프트에서 PortQry를 실행할 수 있습니다. 이 문서의 대부분의 예제에서는 명령줄 PortQry 명령을 보여 줍니다. 명령줄 모드에서는 명령 문자열에 여러 옵션을 추가하여 실행할 쿼리와 실행 방법을 지정할 수 있습니다. 명령줄 모드에서 PortQry를 실행하려면 다음 구문을 사용하는 명령을 실행합니다.

portqry.exe -n <name_to_query> [options]

참고

이 명령 < 에서 name_to_query> 쿼리할 IP 주소, 컴퓨터 이름 또는 도메인입니다. 이 매개 변수는 필수입니다. [옵션]은 선택적 매개 변수입니다.

명령줄 모드에 대한 PortQry 매개 변수

다음 매개 변수는 일반 명령줄 모드에서 사용할 수 있습니다.

매개 변수 설명 설명
-n <name> 특정 대상 쿼리
  • 명령줄 모드에 필요한 유일한 매개 변수입니다.
  • 이름> 값은 < 쿼리할 컴퓨터의 이름 또는 IP 주소를 나타냅니다. 이 값은 공백을 포함할 수 없습니다.
-p <protocol> 지정된 프로토콜 사용
  • 프로토콜> 값은 < 쿼리할 포트 유형을 나타냅니다(가능한 값은 tcp, udp또는 both).
  • 기본값은 tcp입니다.
-e <port_number> 대상 포트("엔드포인트"라고도 함)를 지정합니다.
  • port_number> 값은 < 대상 컴퓨터에서 쿼리할 포트를 나타냅니다.
  • 기본값은 80입니다.
-o <port_number>,<port_number> 시퀀스에서 여러 대상 포트 지정 port_number,port_number>>< 값은 < 시퀀스에서 쿼리할 포트 번호의 쉼표로 구분된 목록을 나타냅니다. 쉼표 주위에 공백을 사용하지 마세요.
-r <port_number>:<port_number> 대상 포트 범위 지정
  • port_number>:<port_number> 값은 < 콜론으로 구분된 시작 및 끝 포트 번호를 나타냅니다. 콜론 주위에 공백을 사용하지 마세요.
  • 시작 포트 번호는 끝 포트 번호보다 작아야 합니다.
-l <filename.txt> 로그 파일 생성
  • filename.txt> 값은 < 로그 파일의 이름과 확장을 나타냅니다. 이 값은 공백을 포함할 수 없습니다.
  • 명령이 실행되면 PortQry는 로그 파일이 설치된 디렉터리에 로그 파일을 만듭니다.
  • 파일이 이미 있는 경우 PortQry는 매개 변수를 사용하지 -y 않는 한 덮어쓸지 확인하도록 요청합니다.
-y 이전 로그 파일 덮어쓰기
  • 와 함께 -l사용하는 -y 경우 PortQry는 작업을 확인하라는 메시지를 표시하지 않고 기존 로그 파일을 덮어씁니다.
  • PortQry 명령 문자열에 이 포함되지 -l않으면 PortQry는 를 무시합니다 -y.
-sl 응답에 대한 추가 시간 대기(느린 링크 지연이라고도 함) 이 매개 변수를 사용하여 PortQry가 포트가 수신 대기 중이 아니거나 필터링된 것으로 판단하기 전에 PortQry가 UDP 포트에서 응답을 기다리는 시간을 두 배로 늘릴 수 있습니다. 느리거나 신뢰할 수 없는 네트워크 링크를 쿼리할 때 일반 대기 시간이 너무 짧아 응답을 받을 수 없습니다.
-nr 역방향 이름 조회 건너뛰기
  • 기본적으로 대상 컴퓨터의 IP 주소를 지정하는 데 사용하는 -n 경우 PortQry는 IP 주소를 이름으로 resolve 역방향 이름 조회를 수행합니다. 특히 PortQry가 IP 주소를 resolve 수 없는 경우 이 프로세스는 시간이 오래 걸릴 수 있습니다. 를 사용하여 -nr 쿼리의 이 단계를 건너뜁니다.
  • 를 사용하여 -n 컴퓨터 또는 도메인 이름을 지정하는 경우 PortQry는 를 무시합니다 -nr.
-sp <port_number> 특정 원본 포트에서 쿼리
  • port_number> 값은 < PortQry가 쿼리를 보내는 데 사용하는 포트를 나타냅니다.
  • PortQry는 다른 프로세스가 이미 사용 중인 포트를 사용할 수 없습니다. 지정한 포트가 이미 사용 중인 경우 PortQry는 다음 오류 메시지를 반환합니다.
    지정된 원본 포트를 사용할 수 없습니다.
    포트가 이미 사용 중입니다.
    사용하지 않는 포트를 지정하고 명령을 다시 실행합니다.
  • 다음 경우 PortQry는 쿼리의 첫 번째 테스트에 지정된 포트를 사용하지만 두 번째 테스트는 사용하지 않습니다.
    • RPC(TCP 및 UDP 포트 135)
    • LDAP(UDP 포트 389)
    • NetBIOS 어댑터 상태 쿼리(UDP 포트 137)
    이러한 경우 PortQry는 두 번째 테스트에 임시 포트를 사용합니다. 이 경우 PortQry는 출력에 "임시 원본 포트 사용"을 기록합니다.
  • PortQry가 설치된 컴퓨터에서도 IPSec 정책 에이전트를 실행하는 경우 UDP 포트 500을 원본 포트로 사용할 수 없습니다. 포트 500을 사용할 수 있도록 IPSec 정책 에이전트를 일시적으로 해제하려면 를 실행합니다 net stop PolicyAgent. 테스트를 마쳤으면 을 실행합니다 net start PolicyAgent.
-cn !<community_name>! SNMP 커뮤니티 쿼리
  • community_name> 값은 < 쿼리할 SNMP 커뮤니티의 이름을 나타냅니다. 왼쪽 열에 표시된 것처럼 느낌표를 사용하여 이 값을 구분해야 합니다.
  • SNMP 서비스가 대상 포트에서 수신 대기하지 않는 경우 PortQry는 를 무시합니다 -cn.
  • 기본 커뮤니티 이름은 입니다 public.
-q 자동 모드에서 PortQry 실행
  • 를 사용하는 -q경우 PortQry는 오류 메시지를 제외한 모든 화면 출력을 표시하지 않습니다.
  • 오류 메시지 이외의 출력을 보려면 와 -l함께 를 사용합니다-q. PortQry는 로그 파일에 일반 출력을 기록합니다.
  • 로그 파일이 이미 있고 와 함께 -l사용하는 -q 경우 PortQry는 메시지를 표시하지 않고 기존 로그 파일을 덮어씁니다.
  • , -r또는 -p both와 함께 -o사용할 -q 수 없습니다.
  • 이 매개 변수는 일괄 처리 파일을 사용하여 PortQry 명령 문자열을 실행하는 경우에 특히 유용합니다.

명령줄 모드의 매개 변수에 대한 설명

  • 모든 포트 번호 값은 1에서 65535 사이의 유효한 포트 번호여야 합니다( 포함).
  • -e, -o-r 매개 변수는 상호 배타적입니다. 단일 PortQry 명령은 이러한 매개 변수 중 하나만 사용할 수 있습니다.
  • LDAP(UDP 포트 389)에 대한 쿼리는 Windows Server 2008을 실행하는 도메인 컨트롤러에서 작동하지 않을 수 있습니다. UDP 포트 389에서 실행되는 서비스의 가용성을 검사 위해 PortQry 대신 Nltest를 사용할 수 있습니다. 자세한 내용은 Nltest를 참조하세요.
  • 또는 -o을 사용하여 -e RPC(포트 135)를 쿼리하는 경우 PortQry는 현재 RPC 엔드포인트 매퍼에 등록된 모든 엔드포인트를 반환합니다.

    중요

    -r사용하는 경우 PortQry는 RPC 엔드포인트 매퍼를 쿼리하지 않습니다.

  • 포트 53(DNS)을 쿼리할 때 PortQry는 TCP와 UDP를 모두 사용하여 에 대한 portqry.microsoft.com DNS 쿼리를 보냅니다. 서버가 응답을 반환하는 경우 PortQry는 포트가 LISTENING인지 확인합니다.

    참고

    DNS 서버가 양수 또는 음수 응답을 반환하는지 여부는 중요하지 않습니다. 응답은 포트가 수신 대기 중임을 나타냅니다.

로컬(명령줄) 모드에서 PortQry 사용

원격 대상 컴퓨터에서 포트를 쿼리하는 대신 로컬 모드에서 PortQry를 사용하여 PortQry가 실행되는 로컬 컴퓨터의 TCP 포트 및 UDP 포트에 대한 자세한 정보를 가져올 수 있습니다. 다음 구문을 사용하여 로컬 모드에서 PortQry를 실행합니다.

portqry -local | -wpid <pid> | -wport <port_number> [-wt <seconds>] [-l <filename.txt>] [-v]

이 구문의 자리 표시자는 다음 로컬 모드 매개 변수 표에 설명되어 있습니다.

매개 변수 설명 설명
-local 로컬 정보 검색
  • 로컬 컴퓨터에서 현재 활성화된 모든 TCP 및 UDP 포트 매핑을 열거합니다. 이 출력은 명령이 netstat.exe -an 생성하는 출력과 유사합니다.
  • PID-포트 매핑을 지원하는 컴퓨터에서 출력에는 로컬 컴퓨터의 포트를 사용하는 프로세스의 PID가 포함됩니다. 자세한 정보 표시 옵션(-v)을 사용하는 경우 출력에는 PID가 속한 서비스의 이름도 포함되며 프로세스가 로드한 모든 모듈이 나열됩니다. 이 정보를 사용하여 컴퓨터에서 실행 중인 특정 프로그램 또는 서비스와 연결된 포트를 확인할 수 있습니다.
-wport <port_number> 조사식 포트
  • 특정 포트에서 변경 내용을 모니터링합니다. port_number> 값은 < 모니터링할 포트를 나타냅니다.
  • TCP 포트의 경우 PortQry는 다음 상태 간의 변경 내용을 보고합니다.
    • CLOSE_WAIT
    • 폐쇄
    • 설립
    • FIN_WAIT_1
    • LAST_ACK
    • 들어
    • SYN_RECEIVED
    • SYN_SEND
    • TIMED_WAIT
  • UDP 포트의 경우 PortQry는 프로그램이 포트에 바인딩되어 있는지 보고하지만 UDP 포트가 데이터그램을 수신하는지 여부는 보고하지 않습니다.
  • 모니터링을 중지하려면 Esc 키를 누릅니다.
-wpid <pid> PID(조사식 프로세스 ID)
  • 특정 PID에서 연결 수 및 상태의 변경 내용을 모니터링합니다. process_number> 값은 < 모니터링할 PID를 나타냅니다.
  • 모니터링을 중지하려면 Esc 키를 누릅니다.
-wt <seconds> 특정 간격으로 확인
  • /<seconds> 값으로 표시되는 간격으로 -wport 식별 "-wpid 되는 대상의 상태 확인합니다.
  • > 값은 < 1에서 1,200 사이여야 합니다(포함).
  • 기본값은 60입니다.
  • 단독으로 또는 와 -local함께 사용할 -wt 수 없습니다.
-l <filename.txt> 로그 파일 생성
  • filename.txt> 값은 < 로그 파일의 이름과 확장을 나타냅니다. 이 값은 공백을 포함할 수 없습니다.
  • 명령이 실행되면 PortQry는 로그 파일이 설치된 디렉터리에 로그 파일을 만듭니다.
  • 파일이 이미 있는 경우 PortQry는 매개 변수를 사용하지 -y 않는 한 덮어쓸지 확인하도록 요청합니다.
-y 이전 로그 파일 덮어쓰기
  • 와 함께 -l사용하는 -y 경우 PortQry는 작업을 확인하라는 메시지를 표시하지 않고 기존 로그 파일을 덮어씁니다.
  • PortQry 명령 문자열에 이 포함되지 -l않으면 PortQry는 를 무시합니다 -y.
-v 자세한 정보 출력 생성 PortQry는 화면 출력(및 로그 파일(사용되는 경우)에 대한 추가 세부 정보를 제공합니다.

로컬 모드의 매개 변수에 대한 설명

  • -local, -wport-wpid 매개 변수는 상호 배타적입니다. 단일 PortQry 명령 문자열에서 이러한 매개 변수 중 하나만 사용할 수 있습니다.
  • 매개 변수가 -q 로컬 모드에서 작동하지 않습니다.
  • 경우에 따라 PortQry는 PID(시스템 유휴 프로세스 0)가 일부 TCP 포트를 사용하고 있다고 보고할 수 있습니다. 이 동작은 로컬 프로그램이 TCP 포트에 연결한 다음 중지되는 경우에 발생할 수 있습니다. 프로그램이 더 이상 실행되지 않더라도 포트에 대한 프로그램의 TCP 연결은 몇 분 동안 "시간 초과 대기" 상태로 남을 수 있습니다. 이러한 경우 PortQry는 포트가 사용 중임을 감지할 수 있지만 PID가 릴리스되었기 때문에 포트를 사용하는 프로그램을 식별할 수 없습니다. 기본적으로 포트는 최대 세그먼트 수명보다 2배 긴 "시간 대기" 상태로 유지됩니다.
  • 각 프로세스에 대해 PortQry는 액세스할 수 있는 만큼의 정보를 보고합니다. 일부 정보에 대한 액세스가 제한됩니다. 예를 들어 유휴 및 CSRSS 프로세스에 대한 모듈 정보에 대한 액세스는 액세스 제한으로 인해 사용자 수준 코드가 열리지 않으므로 금지됩니다. 최상의 결과를 위해 로컬 관리자 또는 유사한 자격 증명이 있는 계정의 컨텍스트에서 로컬 모드 명령을 실행합니다.
  • 와 함께 또는 -wpid-l사용하는 -wport 경우 Esc 키를 사용하여 Ctrl+C 대신 PortQry를 인터럽트하고 종료합니다. Esc 키를 눌러 PortQry가 로그 파일을 올바르게 닫고 종료하는지 확인해야 합니다. Esc 대신 Ctrl+C를 눌러 PortQry를 중지하면 로그 파일이 비어 있거나 손상될 수 있습니다.

대화형 모드에서 PortQry 사용

컴퓨터 간의 연결 문제를 해결하는 경우 많은 반복적인 명령을 입력해야 할 수 있습니다. 이러한 작업은 대화형 모드에서 PortQry를 사용하여 더 쉽게 수행할 수 있습니다.

대화형 모드는 Nslookup DNS 유틸리티 또는 Nblookup WINS 유틸리티의 대화형 기능과 유사합니다.

대화형 모드에서 PortQry를 시작하려면 매개 변수를 -i 사용합니다. 예를 들어 다음 명령을 실행합니다.

portqry -i

이 명령의 출력은 다음 발췌와 유사합니다.

Portqry Interactive Mode

Type 'help' for a list of commands

Default Node: 127.0.0.1

Current option values:  
   end port= 80  
   protocol= TCP  
   source port= 0 (ephemeral)
>

대화형 모드 명령

대화형 모드에서 다음 명령을 사용할 수 있습니다.

명령 설명 설명
node <name> 또는 n <name> 쿼리할 대상 설정
  • 이름> 값은 < 쿼리할 컴퓨터의 이름 또는 IP 주소를 나타냅니다. 이 값은 공백을 포함할 수 없습니다.
  • 기본값은 (로컬 컴퓨터)입니다 127.0.0.1 .
query 또는 q 쿼리 보내기
  • 현재 설정을 사용하여 현재 대상을 쿼리합니다.
  • 기본 프로토콜은 입니다 tcp.
  • 기본 대상 포트는 TCP 포트 80입니다.
  • 기본 원본 포트는 포트 0(임시 포트)입니다.
  • 몇 가지 일반적인 쿼리를 실행하기 위해 명령과 함께 query 여러 바로 가기 중 하나를 사용할 수 있습니다. 사용 가능한 바로 가기 목록은 대화형 모드 쿼리 바로 가기를 참조하세요.
set <option>=<value> 쿼리 옵션의 값 설정
  • 이 명령 < 에서 옵션은> 설정할 옵션의 이름을 나타내고 <>은 옵션의 새 값을 나타냅니다.
  • 사용 가능한 옵션의 현재 값 목록을 보려면 를 입력합니다 set all.
  • 사용 가능한 옵션 목록은 대화형 모드 옵션을 참조하세요.
exit 대화형 모드를 그대로 둡니다.

대화형 모드 쿼리 바로 가기

다음 바로 가기를 명령과 query 함께 사용하여 포트 및 프로토콜 옵션을 설정하지 않고도 일반적인 쿼리를 실행할 수 있습니다. 다음 구문을 사용합니다.

q <shortcut>

참고

이 명령 < 에서 바로 가기>는 다음 표의 바로 가기 중 하나를 나타냅니다. 바로 가기 q 를 생략하면 명령은 TCP 포트 80을 쿼리합니다.

바로 가기 쿼리할 포트
dns TCP 포트 53, UDP 포트 53.
ftp TCP 포트 21
imap TCP 포트 143
ipsec UDP 포트 500
isa TCP 포트 1745, UDP 포트 1745
ldap TCP 포트 389, UDP 포트 389
l2tp UDP 포트 1701
mail TCP 포트 25, 110 및 143
pop3 TCP 포트 110
rpc TCP 포트 135, UDP 포트 135
smtp TCP 포트 25
snmp UDP 포트 161
sql TCP 포트 1433, UDP 포트 1434
tftp UDP 포트 69

예를 들어 대화형 모드로 입력 q dns 하는 것은 일반 명령줄 모드에서 실행하는 portqry -n 127.0.0.1 -p both -e 135 것과 같습니다.

대화형 모드 옵션

명령을 사용하여 set 원본 포트 또는 느린 링크 지연과 같은 옵션을 설정할 수 있습니다. 다음 구문을 사용합니다.

set <option>=<value>

참고

이 명령 < 에서 옵션은> 설정할 옵션의 이름을 나타내고 <>은 옵션의 새 값을 나타냅니다.

옵션 설명 설명
set all 옵션의 현재 값 표시
set port=<port_number>
set e=<port_number>
대상 포트 지정 port_number> 값은 < 대상 컴퓨터에서 쿼리할 포트를 나타냅니다.
set sport=<port_number>
set sp=<port_number>
원본 포트 지정
  • port_number> 값은 < PortQry가 쿼리를 보내는 데 사용하는 포트를 나타냅니다.
  • PortQry는 다른 프로세스가 이미 사용 중인 포트를 사용할 수 없습니다.
  • 포트 번호를 0으로 지정하면 PortQry는 임시 포트를 사용합니다.
set protocol=<protocol>
set p=<protocol>
사용할 프로토콜 지정 프로토콜> 값은 < 쿼리할 포트 유형(tcp, udp또는 both)을 나타냅니다.
set cn=<community_name> SNMP 커뮤니티 지정
  • community_name> 값은 < 쿼리할 SNMP 커뮤니티의 이름을 나타냅니다.
  • SNMP 서비스가 대상 포트에서 수신 대기하지 않는 경우 PortQry는 를 무시합니다 -cn.
  • 기본 커뮤니티 이름은 입니다 public.
set nr 역방향 이름 조회를 끄거나 켭니다.
  • 기본적으로 IP 주소를 쿼리 대상으로 설정한 경우 PortQry는 IP 주소를 이름으로 확인합니다. 이 옵션을 변경하면 PortQry는 이름 확인 단계를 건너뜁니다.
  • 역방향 이름 조회를 다시 켜려면 두 번째로 실행 set nr 합니다.
set sl 느린 링크 지연 켜기 또는 끄기
  • 이 옵션을 변경하면 PortQry가 포트가 수신 대기 중이 아니거나 필터링된 것으로 확인되기 전에 UDP 포트에서 응답을 기다리는 시간을 두 배로 곱합니다. 느리거나 신뢰할 수 없는 네트워크 링크를 쿼리할 때 일반 대기 시간이 너무 짧아 응답을 받을 수 없습니다.
  • 느린 링크 지연을 다시 끄려면 두 번째로 실행 set sl 합니다.

IP 주소가 10.0.1.10인 컴퓨터를 쿼리하려는 경우를 가정해 보겠습니다. 대화형 모드 명령 프롬프트에서 를 입력합니다 n 10.0.1.10. 이 명령은 다음 발췌와 유사한 출력을 생성합니다.

Default Node: 10.0.1.10

>

DNS 쿼리를 보내려면 대화형 모드 명령 프롬프트에 를 입력 q dns 합니다. 이 명령은 다음 발췌와 유사한 출력을 생성합니다.

resolving service name using local services file...
UDP port resolved to the 'domain' service

IP address resolved to myserver.contoso.com

querying...

UDP port 53 (domain service): LISTENING

>

포트와 서비스 간의 연결 사용자 지정

기본적으로 모든 Windows 기반 컴퓨터에는 %SYSTEMROOT%\System32\Drivers\Etc 폴더에 있는 Services 파일이 있습니다. PortQry는 이 파일을 사용하여 포트 번호를 해당 서비스 이름으로 resolve. PortQry는 이 정보를 사용하여 쿼리의 형식을 선택합니다. 이 파일을 편집하여 PortQry에 서식이 지정된 메시지를 대체 포트로 보내도록 지시할 수 있습니다. 예를 들어 다음 항목은 일반적인 서비스 파일에 표시됩니다.

ldap              389/tcp                           #Lightweight Directory Access Protocol

이 포트 항목을 편집하거나 추가 항목을 추가할 수 있습니다. PortQry가 포트 1025에 LDAP 쿼리를 보내도록 강제하려면 다음과 같이 항목을 수정합니다.

ldap              1025/tcp                           #Lightweight Directory Access Protocol

예제

다음 예제에서는 PortQry 및 해당 매개 변수를 사용하는 방법을 보여 줍니다.

로컬 모드

명령줄 모드

로컬 컴퓨터 쿼리

portqry -local 출력은 다음 발췌와 유사합니다.

TCP/UDP Port Usage

96 active ports found

Port Local IPState Remote IP:Port  
TCP 80 0.0.0.0 LISTENING 0.0.0.0:18510  
TCP 80 169.254.149.9 TIME WAIT 169.254.74.55:3716  
TCP 80 169.254.149.9 TIME WAIT 169.254.200.222:3885  
TCP 135 0.0.0.0 LISTENING 0.0.0.0:10280  
UDP 135 0.0.0.0 :  
UDP 137 169.254.149.9 :  
UDP 138 169.254.149.9 :  
TCP 139 169.254.149.9 LISTENING 0.0.0.0:43065  
TCP 139 169.254.149.9 ESTABLISHED 169.254.4.253:4310  
TCP 139 169.254.149.9 ESTABLISHED 169.254.74.55:3714  

액세스가 제한될 수 있는 경우 로컬 컴퓨터 쿼리

이전 예제와 같이 로컬 모드에서 PortQry를 실행하면 다음 발췌와 유사한 출력이 표시될 수 있습니다. 이러한 출력은 PortQry가 사용하는 보안 컨텍스트에 요청한 모든 정보에 액세스할 수 있는 충분한 권한이 없다는 것을 나타냅니다.

Port and Module Information by Process

Note: restrictions applied to some processes may
prevent Portqry from accessing more information

For best results run Portqry in the context of
the local administrator

======================================================  
Process ID: 0 (System Idle Process)

PIDPortLocal IPState Remote IP:Port  
0TCP 4442 169.254.113.96 TIME WAIT 169.254.5.136:80  
0TCP 4456 169.254.113.96 TIME WAIT 169.254.5.44:445  

Port Statistics

TCP mappings: 2  
UDP mappings: 0

TCP ports in a TIME WAIT state: 2 = 100.00%

Could not access module information for this process

======================================================

특정 간격을 사용하여 프로세스 ID 모니터링

다음 명령은 특정 프로세스를 모니터링합니다.

portqry.exe -wpid 1276 -wt 2 -v -l pid.txt

따라서 PortQry는 다음 작업을 수행합니다.

  • 1276 PID가 있는 프로세스를 식별하고 Esc 키를 누를 때까지 2초마다 사용하는 포트의 상태 확인합니다.
  • pid.txt 로그 파일을 만듭니 다. 해당 이름의 파일이 이미 있는 경우 PortQry는 파일을 덮어쓸지 확인하라는 메시지를 표시합니다.
  • 추가 세부 정보 출력을 포함하여 로그 파일의 모든 출력을 기록합니다.

로그 파일의 내용은 다음 발췌와 유사합니다.

PortQry Version 2.0 Log File
  
System Date: <DateTime>
  
Command run:  
portqry -wpid 1276 -wt 2 -v -l pid.txt
  
Local computer name:
  
host123
  
Watching PID: 1276
  
Checking for changes every 2 seconds
  
verbose output requested
  
Service Name: DNS  
Display Name: DNS Server  
Service Type: runs in its own process

============
System Date: <DateTime>

======================================================

Process ID: 1276 (dns.exe)

Service Name: DNS
Display Name: DNS Server
Service Type: runs in its own process

PIDPortLocal IPState Remote IP:Port
1276TCP 53 0.0.0.0 LISTENING 0.0.0.0:2160
1276TCP 1087 0.0.0.0 LISTENING 0.0.0.0:37074
1276UDP 1086 0.0.0.0 :
1276UDP 2126 0.0.0.0 :
1276UDP 53 127.0.0.1 :
1276UDP 1085 127.0.0.1 :
1276UDP 53 169.254.11.96 :

Port Statistics

TCP mappings: 2
UDP mappings: 5

TCP ports in a LISTENING state: 2 = 100.00%

Loaded modules:
C:\WINDOWS\System32\dns.exe (0x01000000)
C:\WINDOWS\system32\ntdll.dll (0x77F40000)
C:\WINDOWS\system32\kernel32.dll (0x77E40000)
C:\WINDOWS\system32\msvcrt.dll (0x77BA0000)
C:\WINDOWS\system32\ADVAPI32.dll (0x77DA0000)
C:\WINDOWS\system32\RPCRT4.dll (0x77C50000)
C:\WINDOWS\System32\WS2_32.dll (0x71C00000)
C:\WINDOWS\System32\WS2HELP.dll (0x71BF0000)
C:\WINDOWS\system32\USER32.dll (0x77D00000)
C:\WINDOWS\system32\GDI32.dll (0x77C00000)
C:\WINDOWS\System32\NETAPI32.dll (0x71C40000)

대상 및 프로토콜 지정

참고

이 섹션의 각 예제는 기본 포트인 포트 80을 쿼리합니다.

다음 명령은 FQDN(정규화된 도메인 이름)을 사용하여 지정된 컴퓨터에서 기본 TCP 포트를 쿼리합니다.

portqry -n myDomainController.example.com -p tcp

다음 명령은 컴퓨터 이름을 사용하여 지정한 컴퓨터의 기본 UDP 포트를 쿼리합니다.

portqry -n myServer -p udp

다음 명령은 IP 주소를 사용하여 지정된 컴퓨터의 기본 TCP 및 UDP 포트를 쿼리합니다.

portqry -n 192.168.1.20 -p both

다음 명령은 이전 명령과 동일한 쿼리를 실행하지만 이름 확인 단계를 건너뜁니다.

portqry -n 192.168.1.20 -p both -nr

다음 명령은 웹 서버의 기본 TCP 포트를 쿼리합니다.

portqry -n www.widgets.microsoft.com

하나 이상의 대상 포트 지정

다음 명령은 TCP 포트 25를 쿼리하여 메일 서버의 SMTP 서비스를 테스트합니다.

portqry -n mail.example.com -p tcp -e 25

다음 명령은 IP 주소가 192.168.1.20인 컴퓨터의 TCP 포트 60897 및 UDP 포트 60897을 쿼리합니다.

portqry -n 192.168.1.20 -p both -e 60897

다음 명령은 컴퓨터 "myServer"에서 UDP 포트 139, 1025 및 135(해당 시퀀스)를 쿼리합니다.

portqry -n myServer -p udp -o 139,1025,135

다음 명령은 "myServer" 컴퓨터의 포트 135에서 포트 139(포함)에 이르는 포트 범위를 쿼리합니다.

portqry -n myServer -p udp -r 135:139

PortQry 출력에 대한 로그 파일 지정

다음 명령은 mail.widgets.microsoft.com TCP 포트 143을 쿼리하고 출력을portqry.txt 파일에 기록합니다. 파일이 이미 있는 경우 PortQry는 확인을 요청하지 않고 덮어씁니다.

portqry -n mail.widgets.microsoft.com -p tcp -e 143 -l portqry.txt -y

느린 링크를 통해 쿼리

다음 명령은 mail.widgets.microsoft.com TCP 포트 143, 110 및 25를 쿼리합니다. 각 대상 포트에 대해 PortQry는 응답에 대해 평소보다 두 배 오래 대기합니다.

  portqry -n mail.widgets.microsoft.com -p tcp -o 143,110,25 -sl

원본 포트 지정

다음 명령은 로컬 컴퓨터에서 UDP 포트 3001(사용 가능한 경우)을 사용하여 192.168.1.20의 UDP 포트 53에 쿼리를 보냅니다. 서비스가 해당 포트에서 수신 대기하고 쿼리에 응답하는 경우 로컬 컴퓨터의 UDP 포트 3001에 응답을 보냅니다.

portqry -p udp -e 53 -sp 3001 -n 192.168.1.20

다음 명령은 로컬 컴퓨터에서 UDP 포트 3000(사용 가능한 경우)을 사용하여 myDomainController.contoso.com UDP 포트 389로 쿼리를 보냅니다. 기본적으로 LDAP 서비스는 이 포트에서 수신 대기해야 합니다. LDAP 서비스가 첫 번째 쿼리에 응답하는 경우 PortQry는 임시 원본 포트를 사용하여 형식이 지정된 쿼리를 보내고 응답을 받습니다.

portqry -n myDomainController.contoso.com -e 389 -sp 3000

일괄 처리 파일을 사용하여 자동 모드에서 PortQry 실행

다음 텍스트는 자동 모드에서 PortQry를 실행하는 일괄 처리 파일의 예입니다.

:Top
portqry -n 169.254.18.22 -e 443 -nr -l pqlog.txt -q
:end

이 일괄 처리 파일이 실행되면 PortQry는 pqlog.txt이라는 로그 파일을 생성합니다. 이 파일의 콘텐츠는 다음과 유사합니다.

PortQry Version 2.0 Log File

System Date: Thu Sep 16 10:35:03 2021

Command run:
 portqry -n 169.254.18.22 -e 443 -nr -l pqlog.txt -q

Local computer name:

 SOURCESERVER

Querying target system called:

 169.254.18.22

TCP port 443 (https service): LISTENING


========= end of log file ========= 

쿼리 포트 135(RPC 서비스)

다음 명령은 myServer 컴퓨터에서 UDP 포트 135를 쿼리합니다. 기본적으로 RPC 서비스는 이 포트에서 수신 대기해야 합니다.

portqry -n myServer -p udp -e 135

따라서 PortQry는 다음 작업을 수행합니다.

  • PortQry는 %SYSTEMROOT%\System32\Drivers\Etc 폴더의 서비스 파일을 사용하여 UDP 포트 135를 서비스에 resolve. 기본 구성을 사용하여 PortQry는 포트를 RPC 엔드포인트 매퍼 서비스(Epmap)로 확인합니다.
  • PortQry는 형식이 지정되지 않은 사용자 데이터그램을 대상 컴퓨터의 UDP 포트 135로 보냅니다.
    PortQry는 대상 포트에서 응답을 받지 않습니다. RPC 엔드포인트 매퍼 서비스가 올바른 형식의 RPC 쿼리에만 응답하기 때문입니다. PortQry는 포트가 LISTENING 또는 FILTERED라고 보고합니다.
  • PortQry는 현재 RPC 엔드포인트 매퍼에 등록된 모든 엔드포인트를 요청하는 올바른 형식의 RPC 쿼리를 만듭니다. PortQry는 이 쿼리를 대상 컴퓨터의 UDP 포트 135로 보냅니다.
  • 응답에 따라 PortQry는 다음 작업 중 하나를 수행합니다.
    • PortQry가 이 쿼리에 대한 응답을 받으면 PortQry는 사용자에게 전체 응답을 반환하고 포트가 LISTENING임을 보고합니다.
    • PortQry가 이 쿼리에 대한 응답을 받지 못하면 포트가 필터링되었음을 보고합니다.
UDP port 135 (epmap service): LISTENING or FILTERED  
Querying Endpoint Mapper Database...  
Server's response:  

UUID: 50abc2a4-574d-40b3-9d66-ee4fd5fba076
ncacn_ip_tcp:169.254.12.191[4144]

UUID: ecec0d70-a603-11d0-96b1-00a0c91ece30 NTDS Backup Interface
ncacn_np:\\MYSERVER[\PIPE\lsass]

UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncacn_ip_tcp:169.254.12.191[1030]

UUID: e3514235-4b06-11d1-ab04-00c04fc2dcd2 MS NT Directory DRS Interface
ncadg_ip_udp:169.254.12.191[1032]

UUID: 12345678-1234-abcd-ef00-01234567cffb
ncacn_np:\\MYSERVER[\PIPE\lsass]

UUID: 12345678-1234-abcd-ef00-01234567cffb
ncacn_np:\\MYSERVER[\PIPE\POLICYAGENT]

Total endpoints found: 6

==== End of RPC Endpoint Mapper query response ====

UDP port 135 is LISTENING

이 출력에서 서비스가 포트에서 수신 대기하는지 여부뿐만 아니라 대상 컴퓨터의 RPC 엔드포인트 매퍼 데이터베이스에 등록된 서비스 또는 프로그램도 확인할 수 있습니다. 출력에는 각 프로그램에 대한 UUID(유니버설 고유 식별자), 주석이 추가된 이름(있는 경우), 각 프로그램에서 사용하는 프로토콜, 프로그램이 바인딩된 네트워크 주소 및 프로그램의 엔드포인트가 대괄호로 표시됩니다.

참고

PortQry 명령에서 포트 범위를 검사하는 옵션을 지정 -r 하면 PortQry는 엔드포인트 정보에 대한 RPC 엔드포인트 매퍼를 쿼리하지 않습니다. 이 매개 변수는 다양한 포트 검사를 가속화합니다.