Tại sao tôi có thể ping địa chỉ IP nhưng không 'traceroute' nó?


46

Tôi có thể ping địa chỉ IP, nhưng tôi không thể theo dõi địa chỉ đó. Làm sao chuyện này có thể?

[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Địa chỉ IP thứ năm trong traceroute không giống như tại "ping CENSORED.CENSORED".


Đầu ra từ traceroute là gì?
ChrisF

1
Tại sao IP bị "kiểm duyệt"?
Sathyajith Bhat

1
Tại sao IP bị "kiểm duyệt" ... có lẽ vì nó không công khai ?? pff
LanceBaynes

8
Tôi cho rằng người đăng đã định hướng lại IP để chúng tôi không cố gắng hack máy của anh ta.
msw

những ngôi sao này không có nghĩa là bị kiểm duyệt, chúng có nghĩa là không có phản hồi
jbu

Câu trả lời:


42

Hãy thử sử dụng một phương thức khác trong traceroute của bạn, ví dụ TCP SYN hoặc ICMP thay vì phương thức UDP mặc định.

Ví dụ: lưu ý sự khác biệt giữa ICMP và 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 dường như không phải là một chuyển đổi cho OSX. Có cách nào khác để sử dụng TCP SYN trên OSX không?
Manachi

2
@Manachi:brew install tcptraceroute
iolsmit

1
@Manchi: đọc trang chủ ...: "traceroute -P TCP <IP>"
benba

23

Traceroute dựa trên các gói ICMP hoặc UDP. Nó có hiệu quả ping từng bộ định tuyến trên đường dẫn giữa bạn và censored.censored. Nó tăng thời gian sống (TTL) cho mỗi gói tiếp theo mà nó gửi (từ 1-30 bình thường) với hy vọng rằng mỗi gói được gửi với một TTL tăng từ cuối cùng, bộ định tuyến tiếp theo trong đường dẫn sẽ trả về mã lỗi .

Nếu hop 6 không phản hồi, có lẽ nó đặc biệt chặn các tin nhắn ICMP / UDP. Do đó, Ping hoạt động vì các bộ định tuyến giữa bạn và nó chỉ truyền các gói ICMP / UDP cho nó chứ không phải phản hồi với chúng, như chúng làm với một traceroute.


2
Trên hầu hết (tất cả?) * Nix distro, traceroute sử dụng UDP theo mặc định, không phải ICMP.
h0tw1r3

Điểm tốt, sẽ sửa đổi.
Rhys Gibson

Vậy tất cả các bộ định tuyến sau 5 khối UDP? đúng không?
LanceBaynes

Tôi không nghĩ vậy. Một số người khác có thể có lời giải thích tốt hơn nhưng tôi nghĩ rằng hop 6 không phản hồi và không truyền gói tin, vì nếu không, ít nhất bạn sẽ nhận được phản hồi cuối cùng từ đích đến của mình (trừ khi cách xa hơn 30 bước).
Rhys Gibson

1
Nhưng tôi chắc chắn rằng nó ít hơn 30 bước. Vì vậy, câu trả lời là không tốt. Tại hop 7,8,9, v.v. Tôi sẽ có câu trả lời trong traceroute: \
LanceBaynes

12

Tôi thấy không có câu trả lời cho lý do tại sao một phần của câu hỏi.

Một số ISP được biết là làm cho các bộ định tuyến của họ tàng hình để theo dõi theo hai cách: chúng không làm suy giảm TTL trong các gói IP (tự tạo lỗ hổng IP) hoặc chúng không phản hồi với TTL đã hết hạn trong khi vẫn chuyển tiếp ICMP.

Lý do là để giữ cho cấu trúc liên kết mạng nội bộ của họ riêng tư. Đó là tất cả.

Việc phát hành traceroutetừ / đến nhiều nguồn / đích cho thấy thông tin về cấu trúc liên kết mạng, đây là điều mà không phải ai cũng đánh giá cao.


2

Traceroute dựa trên các thông điệp ICMP mà một số bộ định tuyến có thể được cấu hình để không phản hồi.


Ping cũng là ICMP, nó không giải thích sự khác biệt. Tôi có những lợi thế của việc đọc các câu trả lời khác mà traceroute có thể sử dụng udp, điều mà trước đây tôi không biết.
Rich Homolka

Chà, một cách để ngăn chặn rõ ràng các gói ICMP theo dõi là bỏ các ICMP đang đến là TTL = 1. Có lẽ họ đang làm điều đó vì một số lý do.
LawrenceC

2

Đôi khi nó đáng để sử dụng pingđể có được thông tin giống như 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

Bằng cách gọi ping với đối số -t $ TTL, đôi khi bạn có thể trốn tránh tường lửa và tìm ra địa chỉ IP và các bộ định tuyến phía sau tường lửa.


3
Điều này giống như việc gọi traceroute bằng cờ -I, mặc dù (đủ kỳ lạ) sẽ yêu cầu trạng thái siêu người dùng.
Tzarium

1
@Tzarium ping cũng yêu cầu trạng thái siêu người dùng, nó chỉ có bộ bit suid, vì vậy bạn nhận được nó miễn phí.
itadok

0

Tất cả gật đầu từ 6 trở đi không đáp ứng với các gói UDP hoặc chính nút 6 chặn các gói udp. Bạn có thể thử các phương thức phát tán mà tôi hy vọng sẽ hoạt động dựa trên nút nào trong đường dẫn đến khối ngăn chặn ICMP / TCP SYN:

  1. Sử dụng ICMP để theo dõi: $ sudo traceroute -I

  2. Sử dụng đồng bộ TCP để theo dõi: $ sudo traceroute -T

  3. Nếu đó là bước nhảy vượt quá, thì hãy sử dụng một trong các cách sau: $ sudo traceroute -I -m 60

HOẶC LÀ

$ sudo traceroute -T -m 60

Cái thứ hai làm việc cho tôi trong khi theo dõi một ftp trên khắp lục địa.


0

Để sử dụng lệnh ping để theo dõi trong môi trường unix, hãy thử điều này:

for ((TTL=1;TTL<30;TTL++));
do
ping -c 1 -t $TTL <IP>;
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.