Tôi có thể truy tìm địa chỉ IP, nhưng không ping nó


19

Trên Windows, nếu tôi truy cập Google, tôi sẽ nhận được những điều sau;

C:\Users\Dave>tracert -d -w 100 www.google.com

Tracing route to www.google.com [216.58.220.100]
over a maximum of 30 hops:

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2    17 ms     *       16 ms  [redacted]
  3    17 ms    16 ms    17 ms  [redacted]
  4    34 ms    34 ms    34 ms  150.101.33.18
  5    35 ms    43 ms    33 ms  72.14.221.174
  6    33 ms    33 ms    33 ms  66.249.95.234
  7    31 ms    31 ms    31 ms  209.85.142.11
  8    33 ms    33 ms    38 ms  216.58.220.100

Trace complete.

Bây giờ, nếu tôi ping địa chỉ IP cuối cùng thứ ba là 66.249.95.234, tôi sẽ nhận được ...

C:\Users\Dave>ping 66.249.95.234

Pinging 66.249.95.234 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 66.249.95.234:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

Làm thế nào mà 'ping' nội bộ để tracert bằng cách nào đó hoạt động khác với ping thực sự? Họ khác nhau như thế nào? Tôi cần làm gì để ping hoạt động như tracert?


3
Đơn giản là ICMP ECHO bị chặn.
Burhan Khalid

Câu trả lời:


27

Tất cả phải làm với cách thức hoạt động của tracert. Ping là ICMP thẳng từ điểm A đến điểm B, đi qua các mạng thông qua các quy tắc định tuyến. Tracert hoạt động rất khác nhau, mặc dù nó sử dụng ICMP.

Tracert hoạt động bằng cách nhắm mục tiêu bước nhảy cuối cùng, nhưng giới hạn TTL và chờ tin nhắn vượt quá thời gian, sau đó tăng nó thêm một lần cho lần lặp tiếp theo. Do đó, phản hồi mà nó nhận được không phải là phản hồi tiếng vang ICMP đối với yêu cầu tiếng vang ICMP từ máy chủ, mà là thông báo vượt quá thời gian từ máy chủ đó - vì vậy mặc dù nó đang sử dụng ICMP, nhưng nó đang sử dụng nó theo một cách rất khác .

Bạn có thể đọc thêm chi tiết về nó ở đây .


12
Để thêm điểm cuối cùng tại sao hết thời gian: Rõ ràng máy chủ thứ 3 cuối cùng được cấu hình để hoạt động như bộ định tuyến cho lưu lượng truy cập thông qua nó (bao gồm gửi thông báo điều khiển ICMP TTL EXCEEDED cho các lỗi), nhưng để chặn lưu lượng truy cập đến nó, cụ thể là không trả lời ICMP ECHO REQ. Nhân tiện, máy khách theo dõi có thể gửi bất cứ thứ gì với bước nhảy cuối cùng là đích đến - đó có thể là ICMP ECHO REQ nhưng cũng có thể là một số TCP SYN (có thể kích hoạt các thông điệp ICMP khác, đặc biệt là khi đạt được jhost đích. Trên thực tế, việc triển khai khác nhau giữa các hệ điều hành. Và sau đó tracepath...
Hagen von Eitzen

@HagenvonEitzen Đó là một câu trả lời đúng đắn (tốt nhất, IMO!)
Cuộc đua nhẹ nhàng với Monica

3
Cũng đáng chú ý, nhiều triển khai "tracert" thậm chí không gửi các gói ICMP. Ít nhất đó là trường hợp của traceroutehầu hết Linux, nó gửi các datagram UDP, mặc dù tôi không chắc phiên bản windows nào. Các bước nhảy trung gian nên gửi ICMP TTL EXCEEDED cho bất kỳ loại gói nào, không chỉ ICMP.
Chấn thương kỹ thuật số

1
@DigitalTrauma Wireshark cho biết tracerttrên Windows 7 gửi các yêu cầu ICMP Echo.
Bob

4

Trước hết, hai lệnh của bạn đang gửi các gói với các địa chỉ IP đích khác nhau. Điều đó có nghĩa là họ có thể đi các tuyến đường khác nhau.

Khi bạn nhìn thấy 66.249.95.234tuyến đường hướng tới 216.58.220.100, bạn có thể cho rằng các gói có địa chỉ đích 66.249.95.234sẽ sử dụng cùng một tuyến đường cho đến khi đạt đến điểm đó. Tuy nhiên đó không phải là một giả định hợp lệ.

Nó hoàn toàn hợp lệ cho tuyến đường 66.249.95.234dài hơn tuyến đường đến 216.58.220.100. Đôi khi nó thậm chí xảy ra rằng không có tuyến đường nào có thể đưa các gói của bạn đến bộ định tuyến trung gian đó, nhưng nó sẽ không phải là một mạng được thiết kế tốt, nếu đó là trường hợp.

Tôi không biết nếu tracertpingcác lệnh bạn đang sử dụng đều sử dụng cùng một giao thức. Hầu hết các triển khai ping sử dụng gói yêu cầu echo ICMP. Tuy nhiên, việc triển khai theo dõi tồn tại hỗ trợ một loạt các giao thức bao gồm yêu cầu tiếng vang ICMP, TCP SYN và các gói UDP. Nếu cả hai tình cờ sử dụng các giao thức khác nhau, đó có thể là một yếu tố góp phần để thấy các kết quả khác nhau.

Cuối cùng, ngay cả khi tất cả các gói đều đạt được 66.249.95.234, có thể nó 66.249.95.234sẽ hoạt động khác nhau tùy thuộc vào việc nó có cần:

  • Chuyển tiếp gói
  • Tạo lỗi ICMP trên gói gửi đến chính nó
  • Tạo lỗi ICMP trên gói gửi đến người khác

Việc chọn cách âm thầm thả các gói chỉ trong một trong ba trường hợp rõ ràng là sẽ phá vỡ rất nhiều công cụ chẩn đoán mạng, tuy nhiên điều đó không ngăn cản một số quản trị viên hệ thống làm như vậy.


0

Khi bảo mật trên mạng đang tăng lên đều đặn, một điều dễ dàng mà nhiều người làm bây giờ là về cơ bản vô hiệu hóa các khía cạnh của giao thức ICMP. Điều này ngăn phản ứng với các traceroutes và trả lại FQDN từ hop. Đôi khi các quản trị viên khóa mọi thứ lại chặt chẽ mà thậm chí ping không hoạt động. Đây là một quyết định của quản trị viên của hệ thống liên quan.

Cũng có khả năng hệ thống đang xử lý tải mạng mở rộng, ICMP thường có mức độ ưu tiên rất thấp trong việc xử lý so với dữ liệu thực.


5
Điều này không thực sự trả lời câu hỏi. Câu hỏi đặt ra là tại sao, nếu cả traceroute và ping đều sử dụng ICMP, thì ping không thành công và traceroute thành công.
MaQleod
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.