ncat 명령을 사용하여 CENTOS 7(linux) 터미널에서 알 수 없는 IP 2개를 구별하려고 합니다.
[abc@localhost ~]$ ncat -zv 10.11.78.5 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: No route to host.
[abc@localhost ~]$ ncat -zv 10.11.215.243 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection timed out.
사례 1의 경우 tcpdump를 사용하여 확인합니다.
10.11.77.147.22 > 10.11.236.41.55722: Flags [P.], cksum 0x4ef1 (incorrect -> 0xcc2c), seq 2565:2601, ack 1124, win 318, options [nop,nop,TS val 523166642 ecr 4195774342], length 36
13:57:39.271990 [SOURCE_MAC] > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Request who-has 10.11.78.5 tell 10.11.77.147, length 28
13:57:39.272428 [SOURCE_MAC] > [DEST_MAC], ethertype IPv4 (0x0800), length 150: (tos 0x12,ECT(0), ttl 64, id 2262, offset 0, flags [DF], proto TCP (6), length 136)
10.11.77.147.22 > 10.11.236.41.55722: Flags [P.], cksum 0x4f21 (incorrect -> 0x12b6), seq 2601:2685, ack 1124, win 318, options [nop,nop,TS val 523166656 ecr 4195774342], length 84
13:57:39.641351 [SRC_MAC] > [DEST_MAC], ethertype IPv4 (0x0800), length 66: (tos 0x48, ttl 58, id 0, offset 0, flags [DF], proto TCP (6), length 52)
10.11.236.41.55722 > 10.11.77.147.22: Flags [.], cksum 0x580f (correct), ack 2601, win 2047, options [nop,nop,TS val 4195774724 ecr 523166642], length 0
13:57:39.641351 [SRC_MAC] > [DEST_MAC], ethertype IPv4 (0x0800), length 66: (tos 0x48, ttl 58, id 0, offset 0, flags [DF], proto TCP (6), length 52)
10.11.236.41.55722 > 10.11.77.147.22: Flags [.], cksum 0x57ae (correct), ack 2685, win 2046, options [nop,nop,TS val 4195774724 ecr 523166656], length 0
13:57:40.272221 [SOURCE_MAC] > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 42: Ethernet (len 6), IPv4 (len 4), Request who-has 10.11.78.5 tell 10.11.77.147, length 28
사례 2에서는 tcpdump를 사용하고 다음을 확인합니다.
15:27:20.847566 SRC_MAC > DEST_MAC, ethertype IPv4 (0x0800), length 102: (tos 0x4a,ECT(0), ttl 58, id 0, offset 0, flags [DF], proto TCP (6), length 88)
10.11.236.41.56347 > 10.11.77.147.22: Flags [P.], cksum 0x3679 (correct), seq 3046:3082, ack 2950, win 2048, options [nop,nop,TS val 3721004625 ecr 528532842], length 36
15:27:20.860097 DEST_MAC > SRC_MAC, ethertype IPv4 (0x0800), length 102: (tos 0x12,ECT(0), ttl 64, id 35536, offset 0, flags [DF], proto TCP (6), length 88)
10.11.77.147.22 > 10.11.236.41.56347: Flags [P.], cksum 0x0cb5 (correct), seq 2950:2986, ack 3082, win 318, options [nop,nop,TS val 528548224 ecr 3721004625], length 36
15:27:20.860124 DEST_MAC > SRC_MAC, ethertype IPv4 (0x0800), length 150: (tos 0x12,ECT(0), ttl 64, id 35537, offset 0, flags [DF], proto TCP (6), length 136)
10.11.77.147.22 > 10.11.236.41.56347: Flags [P.], cksum 0xfd88 (correct), seq 2986:3070, ack 3082, win 318, options [nop,nop,TS val 528548231 ecr 3721004625], length 84
15:27:20.865395 DEST_MAC > SRC_MAC, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 15451, offset 0, flags [DF], proto TCP (6), length 60)
10.11.77.147.58106 > 10.11.215.243.22: Flags [S], cksum 0xcab1 (correct), seq 2395880917, win 29200, options [mss 1460,sackOK,TS val 528548238 ecr 0,nop,wscale 7], length 0
15:27:21.178240 SRC_MAC > DEST_MAC, ethertype IPv4 (0x0800), length 66: (tos 0x48, ttl 58, id 0, offset 0, flags [DF], proto TCP (6), length 52)
10.11.236.41.56347 > 10.11.77.147.22: Flags [.], cksum 0x990d (correct), ack 2986, win 2047, options [nop,nop,TS val 3721004956 ecr 528548224], length 0
15:27:21.178240 SRC_MAC > DEST_MAC, ethertype IPv4 (0x0800), length 66: (tos 0x48, ttl 58, id 0, offset 0, flags [DF], proto TCP (6), length 52)
10.11.236.41.56347 > 10.11.77.147.22: Flags [.], cksum 0x98b3 (correct), ack 3070, win 2046, options [nop,nop,TS val 3721004956 ecr 528548231], length 0
15:27:21.867037 DEST_MAC > SRC_MAC, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 15452, offset 0, flags [DF], proto TCP (6), length 60)
10.11.77.147.58106 > 10.11.215.243.22: Flags [S], cksum 0xc6c7 (correct), seq 2395880917, win 29200, options [mss 1460,sackOK,TS val 528549240 ecr 0,nop,wscale 7], length 0
15:27:23.870566 DEST_MAC > SRC_MAC, ethertype IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 15453, offset 0, flags [DF], proto TCP (6), length 60)
10.11.77.147.58106 > 10.11.215.243.22: Flags [S], cksum 0x3aa9 (incorrect -> 0xbef3), seq 2395880917, win 29200, options [mss 1460,sackOK,TS val 528551244 ecr 0,nop,wscale 7], length 0
15:27:23.996114 SRC_MAC > DEST_MAC, ethertype IPv4 (0x0800), length 102: (tos 0xc0, ttl 58, id 50466, offset 0, flags [none], proto ICMP (1), length 88)
10.11.26.4 > 10.11.77.147: ICMP host 10.11.215.243 unreachable, length 68
(tos 0x0, ttl 57, id 15451, offset 0, flags [DF], proto TCP (6), length 60)
10.11.77.147.58106 > 10.11.215.243.22: Flags [S], cksum 0xcaf6 (correct), seq 2395880917, win 29200, options [mss 1391,sackOK,TS val 528548238 ecr 0,nop,wscale 7], length 0
15:27:23.996114 SRC_MAC > DEST_MAC, ethertype IPv4 (0x0800), length 102: (tos 0xc0, ttl 58, id 50467, offset 0, flags [none], proto ICMP (1), length 88)
10.11.26.4 > 10.11.77.147: ICMP host 10.11.215.243 unreachable, length 68
(tos 0x0, ttl 57, id 15452, offset 0, flags [DF], proto TCP (6), length 60)
10.11.77.147.58106 > 10.11.215.243.22: Flags [S], cksum 0xc70c (correct), seq 2395880917, win 29200, options [mss 1391,sackOK,TS val 528549240 ecr 0,nop,wscale 7], length 0
15:27:26.999948 SRC_MAC > DEST_MAC, ethertype IPv4 (0x0800), length 102: (tos 0xc0, ttl 58, id 50468, offset 0, flags [none], proto ICMP (1), length 88)
10.11.26.4 > 10.11.77.147: ICMP host 10.11.215.243 unreachable, length 68
10.xx로 시작하므로 비공개 IP입니다. 또한 나는 분명한 이유로 Mac 주소를 삭제했습니다.
- 두 IP 모두 도달할 수 없는 것 같지만 출력에 차이가 있습니까?
- 한 경우에는 ICMP 패킷을 수신하지만 다른 경우에는 수신하지 않습니까?
- "연결 시간 초과" v/s "호스트에 대한 경로 없음"
- 아직도 실제 이유를 찾아야합니까?
로컬호스트: 10.11.77.147
답변1
첫 번째에는 10.11.78.5에 대한 ARP 요청이 있지만 해당 응답이 없습니다. 시스템이 계층 2 주소를 모르면 해당 대상으로 패킷을 보낼 수 없습니다. 10.11.78.5로 향하는 TCP SYN 패킷이 없다는 점에 유의하세요. 단지 그렇게까지 도달하지 못할 뿐입니다. ARP 항목은 호스트 경로이므로 최소한 "호스트에 대한 경로 없음" 오류가 발생할 수 있습니다. (공식 소스를 확인하지는 않았지만 Linux에서 나타나는 동작과 일치하는 것 같습니다.)
13:57:39.271990 ... ARP (0x0806), ... Request who-has 10.11.78.5 tell 10.11.77.147, length 28
두 번째에는 ARP 요청이 없지만 TCP SYN이 전송됩니다. 따라서 10.11.215.243은 이미 시스템의 ARP 캐시에 있을 가능성이 높습니다.
여기에서 ICMP 오류가 발생합니다(적어도 tcpdump가 보는 한).예상되는이로 인해 시간 초과 이외의 다른 오류가 발생할 수 있습니다. 그렇다면 다시 한번, 들어오는 ICMP 패킷을 적극적으로 삭제하기 위해 iptables를 사용하고 있지 않은지 확인하는 것이 좋습니다.
15:27:23.996114 ... IPv4 (0x0800), ... proto ICMP (1), length 88)
10.11.26.4 > 10.11.77.147: ICMP host 10.11.215.243 unreachable, length 68
그럼에도 불구하고 10.11.236.41과 주고받는 TCP 패킷은 테스트 중인 연결과 관련이 없는 것으로 보입니다. 반대쪽 끝은 10.11.77.147/tcp22에 연결된 것으로 보입니다. 이것이 쉘 세션이 실행 중인 SSH 연결일 수 있습니까? 덤프를 더 쉽게 읽을 수 있도록 이러한 패킷을 필터링할 수 있습니다.