나는 여기에 딜레마가있다. 다른 원격 장치와 통신하는 장치가 있지만 그 사이에 방화벽이 있습니다. UDP 연결이므로 특정 포트가 열려 있는지 테스트하기 위해 TCP 유틸리티가 작동하지 않습니다. 나는 우리가 방화벽에서 그것을 얻을 수 있다는 것을 알고 있지만 액세스 할 수 없으므로 포트가 열려 있지 않다는 것을 증명해야합니다.
소스 시스템은 Windows 7 시스템이고 대상 시스템은 Linux를 실행하는 어플라이언스입니다.
나는 여기에 딜레마가있다. 다른 원격 장치와 통신하는 장치가 있지만 그 사이에 방화벽이 있습니다. UDP 연결이므로 특정 포트가 열려 있는지 테스트하기 위해 TCP 유틸리티가 작동하지 않습니다. 나는 우리가 방화벽에서 그것을 얻을 수 있다는 것을 알고 있지만 액세스 할 수 없으므로 포트가 열려 있지 않다는 것을 증명해야합니다.
소스 시스템은 Windows 7 시스템이고 대상 시스템은 Linux를 실행하는 어플라이언스입니다.
답변:
UDP는 분명히 보내기 및 잊어 버린 프로토콜입니다. 예를 들어, NMap UDP 스캔 중에 UDP 포트가 열려 있음을 확실하게 증명하는 유일한 방법은 해당 포트에서 응답을받는 것입니다. 많은 서비스가 임의의 데이터에 응답하지 않을 수 있으며 응답을 보증하기 위해 프로토콜 또는 응용 프로그램 별 요청이 필요할 수 있습니다. 그러나 특정 ICMP 코드는 포트가 닫 혔음을 보장 할 수 있습니다. RFC 792 및 RFC 1122 는 포트가 닫힐 때 예상되는 사항에 대한 좋은 정보를 제공합니다.
예를 들어 ICMP 유형 3 코드 3 "Destination Port Unreachable"은 모든 의도와 목적을 위해 닫힌 포트임을 거의 보장합니다.
전체 코드 목록은 여기에서 찾을 수 있습니다.
http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
이것은 빠른 레시피입니다.
1) 패킷 스니퍼를 시작하십시오.
sudo tcpdump -n -i eth2 icmp &
[1] 1409
$ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 262144 bytes
2) UDP 패킷을 보냅니다.
$ echo reply-me | nc -u 1.0.0.2 1000
3) 'ICMP port unreachable'을 수신하면 해당 UDP 포트가 닫힙니다.
20:54:15.475211 IP 1.0.0.2 > 1.0.0.1: ICMP 1.0.0.2 udp port 1000 unreachable, length 45
4) 그렇지 않으면 일반적으로 포트가 열려 있거나 ICMP를 차단하는 것이 있습니다.