문맥: nc 명령을 사용하여 UDP 포트를 테스트하고 싶습니다
무슨 일이야:
nc 명령은 출력에 아무것도 반환하지 않으며 입력할 때 0을 반환합니다.echo $?
어떤 명령:
nc -vzu <ip> <port>
echo $?
문제가 무엇입니까:
결과를 신뢰할 수 있는지 알고 싶습니다.echo $?
버전:
- netcat: 0.7.1-5.ph3.x86_64(vCenter에서).
- tcpdump-uw: 버전 4.9.1-PRE-GIT_2017_09_22
내 생각:
UDP는 패킷의 유효성을 검사하지 않는다는 것을 알고 있습니다.
대상 서버에서 시도했지만 아무 것도 수신되지 않습니다 echo "something" | nc -vu <ip> <port>
.tcpdump -i vmk0 -en udp
UDP 패킷이 성공적으로 전송되었지만 목적지에 도달하지 못한 것 같습니다.
어떻게 생각하나요?
답변1
버전이나 구현에 따라 nc
동작이 다를 수 있습니다. nc
특정 명령을 이해하고 결과를 신뢰할 수 있는지 확인하려면 특정 명령의 특정 동작을 테스트해야 합니다 .
예를 들어 내 nc
버전에서는 열려 있는 UDP 포트에 연결하려고 하면 다음과 같이 기록됩니다.
$ nc -vzu <ip> <port>; echo exit status is: $?
Connection to <ip> <port> port [udp/*] succeeded!
exit status is: 0
종료 상태를 반환합니다.0.
하지만 아무것도 수신 대기하지 않는 포트에 연결하려고 하면 종료 상태만 반환됩니다.1.
$ nc -vzu <ip> <port>; echo exit status is: $?
exit status is: 1
특정 종료 상태 nc
명령의 종료 상태를 신뢰할 수 있는지 확인하려면 닫힌 UDP 포트에 연결해 보십시오. 유효한 UDP 포트 범위는 다음과 같습니다.4096-65535.
존재하다당신의 상황, 보고하신대로 연결을 시도하면UDP 포트 닫기유효한 범위 내에서 nc
명령은 종료 상태를 반환합니다.0(성공) 이는 특정 버전/구현의 종료 상태를 신뢰할 수 없음을 의미합니다 nc
.