ทำไมฉันถึงส่ง Ping ไปยังที่อยู่ IP ได้ แต่ไม่ใช่ 'traceroute'


46

ฉันสามารถ ping ที่อยู่ IP ได้ แต่ฉันไม่สามารถติดตามได้ สิ่งนี้จะเป็นอย่างไร

[USERNAME@HOSTNAME ~]$ ping CENSORED.CENSORED
PING CENSORED.CENSORED (CENSORED) 56(84) bytes of data.
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=1 ttl=49 time=52.8 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=2 ttl=49 time=49.4 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=3 ttl=49 time=49.2 ms
64 bytes from CENSORED.CENSORED (CENSORED): icmp_req=4 ttl=49 time=50.4 ms
^C
--- CENSORED.CENSORED ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 49.276/50.494/52.804/1.401 ms
[USERNAME@HOSTNAME ~]$
[USERNAME@HOSTNAME ~]$ traceroute CENSORED.CENSORED
traceroute to CENSORED.CENSORED (CENSORED), 30 hops max, 60 byte packets
 1  CENSORED (CENSORED)  5.733 ms  6.000 ms  5.977 ms
 2  CENSORED (CENSORED)  0.428 ms  0.417 ms  0.393 ms
 3  CENSORED (CENSORED)  1.726 ms  1.718 ms  1.682 ms
 4  CENSORED (CENSORED)  26.699 ms  26.693 ms  26.670 ms
 5  CENSORED (CENSORED)  27.785 ms  27.769 ms  27.746 ms
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
[USERNAME@HOSTNAME ~]$

ที่CENSOREDอยู่ IP ที่ห้าใน traceroute นั้นไม่เหมือนกับที่ "ping CENSORED.CENSORED"


เอาท์พุทจาก traceroute คืออะไร?
ChrisF

1
ทำไม IP "ถูกเซ็นเซอร์"?
Sathyajith Bhat

1
ทำไม IP "ตรวจสอบ" ... อาจเป็นเพราะมันไม่ใช่แบบสาธารณะ? pff
LanceBaynes

8
ฉันสันนิษฐานว่าผู้โพสต์ทำซ้ำ IP เพื่อที่เราจะได้ไม่พยายามแฮ็คเครื่องของเขา
msw

ดาวเหล่านี้ไม่ได้หมายถึงการเซ็นเซอร์พวกเขาหมายถึงไม่มีการตอบสนอง
jbu

คำตอบ:


42

ลองใช้วิธีอื่นใน traceroute ของคุณเช่น TCP SYN หรือ ICMP แทนวิธี UDP เริ่มต้น

ตัวอย่างเช่นสังเกตความแตกต่างระหว่าง ICMP และ TCP:

x@x:~$ ping -qc4 94.254.2.51
PING 94.254.2.51 (94.254.2.51) 56(84) bytes of data.
--- 94.254.3.90 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3009ms
rtt min/avg/max/mdev = 7.781/7.807/7.836/0.067 ms

x@x:~$ sudo traceroute -I 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.307 ms  1.299 ms  1.432 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  7.166 ms  7.364 ms  7.336 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.251 ms  7.099 ms  7.220 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.059 ms  7.074 ms  7.145 ms
9  h-2-51.A322.priv.bahnhof.se (94.254.2.51)  7.619 ms  7.750 ms  8.070 ms

x@x:~$ sudo traceroute -T 94.254.2.51
traceroute to 94.254.2.51 (94.254.2.51), 30 hops max, 40 byte packets
1  <REDACTED>
2  <REDACTED>
3  <REDACTED>
4  <REDACTED>
5  netnod-ix-ge-a-sth-1500.bahnhof.net (194.68.123.85)  1.621 ms  1.683 ms  1.817 ms
6  sto-cr1.sto-cr3.bahnhof.net (85.24.151.165)  8.530 ms  7.861 ms  7.820 ms
7  sto-cr3.gav-cr1.bahnhof.net (85.24.151.195)  7.724 ms  7.539 ms  7.486 ms
8  zitius-a322-gw-c.bahnhof.net (85.24.153.249)  7.572 ms  7.537 ms  7.553 ms
9  * * *
10  * * *
11  * * *
12  * * *
13  * * *

2
-T ดูเหมือนจะไม่ใช่สวิตช์สำหรับ OSX มีทางเลือกอื่นในการใช้ TCP SYN บน OSX หรือไม่
Manachi

2
@Manachi:brew install tcptraceroute
iolsmit

1
@Manchi: อ่าน manpage ... : "traceroute -P TCP <IP>"
2560

23

Traceroute ขึ้นอยู่กับแพ็คเก็ต ICMP หรือ UDP มันจะทำการ ping เราเตอร์แต่ละตัวอย่างมีประสิทธิภาพบนเส้นทางระหว่างคุณกับเซ็นเซอร์ มันเพิ่ม Time-To-Live (TTL) สำหรับแต่ละแพ็กเก็ตที่ตามมาที่ส่ง (จากปกติ 1-30) คาดหวังว่าเมื่อแต่ละแพ็กเก็ตถูกส่งด้วย TTL ที่เพิ่มขึ้นจากล่าสุดเราเตอร์ถัดไปในเส้นทางจะส่งคืนรหัสข้อผิดพลาด .

หาก hop 6 ไม่ตอบสนองอาจเป็นเพราะการบล็อกข้อความ ICMP / UDP โดยเฉพาะ Ping จึงทำงานได้เนื่องจากเราเตอร์ระหว่างคุณและมันเพิ่งผ่านแพ็กเก็ต ICMP / UDP ผ่านไปแทนที่จะตอบสนองพวกเขาเหมือนกับที่พวกเขาทำกับ traceroute


2
ส่วนใหญ่ (all?) * nros distros traceroute ใช้ UDP เป็นค่าเริ่มต้นไม่ใช่ ICMP
h0tw1r3

จุดดีจะแก้ไข
Rhys Gibson

ดังนั้นเราเตอร์ทั้งหมดหลังจาก 5 block UDP? ถูกต้องหรือไม่
LanceBaynes

ฉันไม่คิดอย่างนั้น บางคนอาจมีคำอธิบายที่ดีกว่า แต่ฉันคิดว่า hop 6 ไม่ตอบสนองและไม่ส่งต่อแพ็คเก็ตอย่างน้อยที่สุดคุณก็จะได้รับคำตอบสุดท้ายจากปลายทางของคุณ (เว้นแต่เป็นมากกว่า 30 ฮ็อป)
Rhys Gibson

1
แต่ฉันแน่ใจว่ามันน้อยกว่า 30 กระโดด ดังนั้นคำตอบไม่ดี ที่ฮอป 7,8,9 ฯลฯ ฉันจะตอบกลับใน traceroute: \
LanceBaynes

12

ฉันไม่เห็นคำตอบว่าทำไมส่วนหนึ่งของคำถาม

ผู้ให้บริการอินเทอร์เน็ตหลายรายรู้กันดีว่าทำให้เราเตอร์ของพวกเขาหลบซ่อนตัวอยู่ในเส้นทางสองทาง: พวกเขาไม่ลดทอน TTL ในแพ็คเก็ต IP (ทำให้ตัวเอง IP เวิร์ม) หรือพวกเขาไม่ตอบสนองต่อ TTL หมดอายุในขณะที่ยังส่งต่อ ICMP

เหตุผลคือการทำให้ทอพอโลยีเครือข่ายภายในเป็นส่วนตัว นั่นคือทั้งหมดที่

การออกtracerouteจาก / ไปยังหลายแหล่ง / ปลายทางเผยให้เห็นข้อมูลเกี่ยวกับโครงสร้างเครือข่ายซึ่งเป็นสิ่งที่ทุกคนไม่ชอบ


2

Traceroute อาศัยข้อความ ICMP ซึ่งเราเตอร์บางตัวอาจถูกกำหนดค่าให้ไม่ตอบสนอง


Ping เป็น ICMP เช่นกันไม่ได้อธิบายความแตกต่าง ฉันมีข้อได้เปรียบในการอ่านคำตอบอื่น ๆ ที่สถานะ traceroute สามารถใช้ udp ได้เช่นกันซึ่งฉันไม่เคยรู้จักมาก่อน
Rich Homolka

วิธีหนึ่งในการบล็อก traceroute แพ็คเก็ต ICMP อย่างชัดเจนก็คือการทิ้ง ICMP ขาเข้าของนั่นคือ TTL = 1 บางทีพวกเขากำลังทำเช่นนั้นด้วยเหตุผลบางอย่าง
LawrenceC

2

บางครั้งควรใช้pingเพื่อรับข้อมูลที่เหมือน traceroute:

#!/bin/bash
for TTL in 1 2 3 4 5 6 7 8 9 10 11 12
do
    ping -c 1 -n -t $TTL a.b.c.d
done

ด้วยการเรียก ping ด้วยอาร์กิวเมนต์ -t $ TTL บางครั้งคุณสามารถหลบเลี่ยงไฟร์วอลล์และค้นหาที่อยู่ IP และเราเตอร์อื่น ๆ ที่อยู่หลังไฟร์วอลล์


3
สิ่งนี้เหมือนกับการเรียกใช้ traceroute ด้วยแฟล็ก -I แม้ว่า (ผิดปกติพอ) ที่จะต้องมีสถานะ superuser
Tzarium

1
@Tzarium ping ยังต้องมีสถานะ superuser มันเพิ่งมี suid bit set ดังนั้นคุณจะได้รับมันฟรี
itsadok

0

ทั้งที่มีรหัสตั้งแต่ 6 เป็นต้นไปไม่ตอบสนองต่อแพ็คเก็ต UDP หรือโหนด 6 เองบล็อกแพ็กเก็ต UDP คุณสามารถลองใช้วิธีการ fllowing ซึ่งฉันหวังว่าจะทำงานโดยขึ้นอยู่กับว่าโหนดใดในเส้นทางที่ใช้ในการตรวจจับบล็อก ICMP / TCP SYN:

  1. ใช้ ICMP เพื่อติดตาม: $ sudo traceroute -I

  2. ใช้ TCP syn กับ traceroute: $ sudo traceroute -T

  3. ถ้ามันเป็นฮ็อพที่มันเกินให้ใช้อย่างใดอย่างหนึ่งต่อไปนี้: $ sudo traceroute -I -m 60

หรือ

$ sudo traceroute -T -m 60

หลังใช้งานได้สำหรับฉันในขณะที่ติดตามไปยัง ftp ข้ามทวีป


0

สำหรับการใช้คำสั่ง ping เพื่อติดตามในสภาพแวดล้อม unix ลองสิ่งนี้:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.