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> |
특정 대상 쿼리 |
|
-p <protocol> |
지정된 프로토콜 사용 |
|
-e <port_number> |
대상 포트("엔드포인트"라고도 함)를 지정합니다. |
|
-o <port_number>,<port_number> |
시퀀스에서 여러 대상 포트 지정 | port_number,port_number>>< 값은 < 시퀀스에서 쿼리할 포트 번호의 쉼표로 구분된 목록을 나타냅니다. 쉼표 주위에 공백을 사용하지 마세요. |
-r <port_number>:<port_number> |
대상 포트 범위 지정 |
|
-l <filename.txt> |
로그 파일 생성 |
|
-y |
이전 로그 파일 덮어쓰기 |
|
-sl |
응답에 대한 추가 시간 대기(느린 링크 지연이라고도 함) | 이 매개 변수를 사용하여 PortQry가 포트가 수신 대기 중이 아니거나 필터링된 것으로 판단하기 전에 PortQry가 UDP 포트에서 응답을 기다리는 시간을 두 배로 늘릴 수 있습니다. 느리거나 신뢰할 수 없는 네트워크 링크를 쿼리할 때 일반 대기 시간이 너무 짧아 응답을 받을 수 없습니다. |
-nr |
역방향 이름 조회 건너뛰기 |
|
-sp <port_number> |
특정 원본 포트에서 쿼리 |
|
-cn !<community_name>! |
SNMP 커뮤니티 쿼리 |
|
-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 |
로컬 정보 검색 |
|
-wport <port_number> |
조사식 포트 |
|
-wpid <pid> |
PID(조사식 프로세스 ID) |
|
-wt <seconds> |
특정 간격으로 확인 |
|
-l <filename.txt> |
로그 파일 생성 |
|
-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> |
쿼리할 대상 설정 |
|
query 또는 q |
쿼리 보내기 |
|
set <option>=<value> |
쿼리 옵션의 값 설정 |
|
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> |
원본 포트 지정 |
|
set protocol=<protocol> set p=<protocol> |
사용할 프로토콜 지정 |
프로토콜> 값은 < 쿼리할 포트 유형(tcp , udp 또는 both )을 나타냅니다. |
set cn=<community_name> |
SNMP 커뮤니티 지정 |
|
set nr |
역방향 이름 조회를 끄거나 켭니다. |
|
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 출력에 대한 로그 파일 지정
- 일괄 처리 파일을 사용하여 자동 모드에서 PortQry 실행
- 쿼리 포트 135(RPC 서비스)
로컬 컴퓨터 쿼리
의 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 엔드포인트 매퍼를 쿼리하지 않습니다. 이 매개 변수는 다양한 포트 검사를 가속화합니다.