Thứ ba, 22/10/2013 | 00:00 GMT+7

Cách sử dụng Traceroute và MTR để chẩn đoán sự cố mạng


Giới thiệu


Một phần quan trọng của quản trị server là giám sát kết nối mạng.

Có một số công cụ rất đơn giản để sử dụng, nhưng có giá trị cần biết. Trong hướng dẫn này, ta sẽ thảo luận về cách sử dụng một công cụ có tên là traceroute để chẩn đoán vị trí có thể xảy ra sự cố mạng.

Ta cũng sẽ xem xét một tiện ích có tên mtr kết hợp nhiều chức năng của ping và theo dõi vào một giao diện.

Cách sử dụng Traceroute


Traceroute là một công cụ đơn giản để hiển thị đường dẫn đến một server từ xa. Đây có thể là bất cứ thứ gì từ một trang web mà bạn đang cố truy cập, đến một máy in trên mạng local của bạn.

Chương trình theo dõi được cài đặt theo mặc định trên hầu hết các bản phân phối Linux, vì vậy bạn không cần phải cài đặt nó.

Để gọi nó, ta chỉ cần cung cấp một trang web hoặc địa chỉ IP mà ta muốn khám phá:

traceroute google.com

traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets
 1  192.241.160.253 (192.241.160.253)  0.564 ms  0.539 ms  0.525 ms
 2  192.241.164.241 (192.241.164.241)  0.487 ms  0.435 ms  0.461 ms
 3  xe-3-0-6.ar2.nyc3.us.nlayer.net (69.31.95.133)  1.801 ms  1.802 ms  1.762 ms
 4  144.223.28.73 (144.223.28.73)  0.583 ms  0.562 ms  0.550 ms
 5  144.232.1.21 (144.232.1.21)  1.044 ms  1.048 ms  1.036 ms
 6  74.125.49.212 (74.125.49.212)  0.494 ms  0.688 ms  0.643 ms
 7  209.85.248.180 (209.85.248.180)  0.650 ms 209.85.248.178 (209.85.248.178)  0.621 ms  0.625 ms
 8  72.14.236.208 (72.14.236.208)  0.618 ms 72.14.236.206 (72.14.236.206)  0.898 ms 72.14.236.208 (72.14.236.208)  0.872 ms
 9  72.14.239.93 (72.14.239.93)  7.478 ms  7.989 ms  7.466 ms
10  72.14.232.73 (72.14.232.73)  20.002 ms  19.969 ms  19.975 ms
11  209.85.248.228 (209.85.248.228)  30.490 ms 72.14.238.106 (72.14.238.106)  34.463 ms 209.85.248.228 (209.85.248.228)  30.707 ms
12  216.239.46.54 (216.239.46.54)  42.502 ms  42.507 ms  42.487 ms
13  216.239.46.159 (216.239.46.159)  76.578 ms  74.585 ms  74.617 ms
14  209.85.250.126 (209.85.250.126)  80.625 ms  80.584 ms  78.514 ms
15  72.14.238.131 (72.14.238.131)  80.287 ms  80.560 ms  78.842 ms
16  209.85.250.228 (209.85.250.228)  171.997 ms  173.668 ms  170.068 ms
17  66.249.94.93 (66.249.94.93)  238.133 ms  235.851 ms  235.479 ms
18  72.14.233.79 (72.14.233.79)  233.639 ms  239.147 ms  233.707 ms
19  sin04s01-in-f9.1e100.net (173.194.38.137)  236.241 ms  235.608 ms  236.843 ms

Cách đọc kết quả của Traceroute


Dòng đầu tiên cho ta biết các điều kiện mà theo dõi đang hoạt động theo:

traceroute to google.com (173.194.38.137), 30 hops max, 60 byte packets

Nó cung cấp cho server lưu trữ được chỉ định, địa chỉ IP mà DNS trả về cho domain đó, số bước nhảy tối đa để kiểm tra và kích thước của gói tin sẽ được sử dụng.

Số lượng bước nhảy tối đa có thể được điều chỉnh bằng cờ -m . Nếu server lưu trữ bạn đang cố gắng định tuyến còn cách đó hơn 30 bước, bạn có thể cần chỉ định giá trị lớn hơn tại đây. Giá trị tối đa bạn có thể đặt là 255.

traceroute -m 255 obiwan.scrye.net

Bạn có thể điều chỉnh kích thước của gói được gửi đến mỗi bước bằng cách đặt số nguyên sau tên server :

<pre>
traceroute google.com <span class = “highlight”> 70 </span>
</pre>
<pre> theo dõi tới google.com (173.194.38.128), tối đa 30 bước, <span class = “highlight”> gói 70 byte </span>
1 192.241.160.254 (192.241.160.254) 0,364 ms 0,330 ms 0,319 ms
2 192.241.164.237 (192.241.164.237) 0,284 ms 0,343 ms 0,321 ms
</pre>

Sau dòng đầu tiên, mỗi dòng tiếp theo đại diện cho một "hop" hoặc server trung gian mà lưu lượng truy cập của bạn phải đi qua để đến máy tính được đại diện bởi server mà bạn đã chỉ định.

Mỗi dòng có định dạng sau:

hop_number   host_name   (IP_address)  packet_round_trip_times

Đây là một ví dụ về bước nhảy mà bạn có thể thấy:

3  nyk-b6-link.telia.net (62.115.35.101)  0.311 ms  0.302 ms  0.293 ms

Đây là ý nghĩa của từng trường:

  • hop_number : Số lượng tuần tự của số mức độ tách biệt giữa server với máy tính của bạn. Lưu lượng truy cập từ các server có số lượng cao hơn phải đi qua nhiều máy tính hơn để được định tuyến.

  • host_name : Trường này chứa kết quả tra cứu ngược DNS về địa chỉ IP của server , nếu có. Nếu không có thông tin nào được trả về từ truy vấn DNS ngược, địa chỉ IP sẽ được cung cấp.

  • IP_address : Trường này chứa địa chỉ IP cho bước nhảy mạng này.

  • pack_round_trip_times : Phần còn lại của dòng cung cấp thời gian khứ hồi cho một gói đến server và quay lại lần nữa. Theo mặc định, ba gói được gửi đến mỗi server và mỗi lần thử sẽ được nối vào cuối dòng.

    • Nếu bạn muốn thay đổi số lượng gói được kiểm tra đối với từng server , bạn có thể chỉ định một số với tùy chọn -q , như sau:

      <pre> traceroute -q1 google.com
      </pre>

Nếu bạn muốn bỏ qua tra cứu DNS ngược để tăng tốc theo dõi, bạn có thể chuyển cờ -n :

traceroute -n google.com

traceroute to google.com (74.125.235.7), 30 hops max, 60 byte packets
 1  192.241.160.253  0.626 ms  0.598 ms  0.588 ms
 2  192.241.164.241  2.821 ms  2.743 ms  2.819 ms
 3  69.31.95.133  1.470 ms  1.473 ms  1.525 ms

Nếu lộ trình theo dõi của bạn tan thành một số dấu hoa thị (*), thì có vấn đề với đường dẫn đến server .

    15  209.85.248.220 (209.85.248.220)  121.809 ms 72.14.239.12 (72.14.239.12)  76.941 ms 209.85.248.220 (209.85.248.220)  78.946 ms
16  72.14.239.247 (72.14.239.247)  101.001 ms  92.478 ms  92.448 ms
17  * * 209.85.250.124 (209.85.250.124)  175.083 ms
18  * * *
19  * * *

Vấn đề tuyến đường nghĩa là gì?


Nếu nỗ lực theo dõi của bạn dừng lại ở một bước nhảy hoặc nút cụ thể và không thể tìm thấy đường đến server , bạn đã gặp sự cố.

Mặc dù bước nhảy mà tuyến đường không quay trở lại có thể là vị trí của sự cố mạng, nhưng nó không phải lúc nào cũng dễ dàng chẩn đoán.

Do thực tế là mỗi ping đại diện cho một gói khứ hồi và tình huống mà các gói thường sử dụng các đường dẫn khác nhau theo cả hai hướng, nó có thể chỉ ra một vấn đề ở một đường hoàn toàn khác, có thể gần hơn.

Cũng có thể trường hợp đó là vấn đề xảy ra với hop trực tiếp sau khi hop cuối cùng bạn thấy. Rất khó để chẩn đoán vị trí chính xác của vấn đề trừ khi bạn có thể nhận được một lộ trình quay trở lại từ bước nhảy cụ thể đó. Điều này thường không thể thực hiện được bên ngoài mạng của bạn.

Cách sử dụng MTR


Một thay thế động cho chương trình theo dõi là mtr . Kết hợp chức năng ping và theo dõi, mtr cho phép bạn liên tục thăm dò một server từ xa và xem độ trễ và hiệu suất thay đổi như thế nào theo thời gian.

Không giống như traceroute, mtr không được cài đặt theo mặc định trên hầu hết các hệ thống. Bạn có thể lấy nó bằng lệnh các lệnh sau.

Ubuntu / Debian:

sudo apt-get install mtr

CentOS / Fedora:

yum install mtr

Vòm:

pacman -S mtr

Sau khi nó được cài đặt, bạn có thể gọi nó bằng lệnh :

mtr google.com

                       My traceroute  [v0.80]
traceroute (0.0.0.0)                        Tue Oct 22 20:39:42 2013
Resolver: Received error response 2. (server failure)er of fields   q
uit                         Packets               Pings
 Host                     Loss%   Snt   Last   Avg  Best  Wrst StDev
 1. 192.241.160.253        0.0%   371    0.4   0.6   0.1  14.3   1.0
 2. 192.241.164.241        0.0%   371    7.4   2.5   0.1  37.5   4.8
 3. xe-3-0-6.ar2.nyc3.us.  2.7%   371    3.6   2.6   1.1   5.5   1.1
 4. sl-gw50-nyc-.sprintli  0.0%   371    0.7   5.0   0.1  82.3  13.1

Mặc dù kết quả có thể trông giống nhau, nhưng lợi thế lớn hơn theo dõi là kết quả được cập nhật liên tục. Điều này cho phép bạn tích lũy các xu hướng và mức trung bình, đồng thời cho phép bạn xem hiệu suất mạng thay đổi như thế nào theo thời gian.

Nếu bạn chạy một tuyến theo dõi, có khả năng các gói được gửi đến mỗi bước nhảy đã xảy ra để thực hiện chuyến đi mà không có sự cố, ngay cả trong tình huống tuyến bị mất gói không liên tục. Tiện ích mtr cho phép bạn theo dõi tình huống này bằng cách thu thập dữ liệu trong một phạm vi thời gian rộng hơn.

Cũng có thể chạy mtr với tùy chọn --report , tùy chọn này sẽ trả về kết quả của việc gửi 10 gói cho mỗi bước nhảy.

mtr --report google.com

HOST: traceroute                  Loss%   Snt   Last   Avg  Best  Wrst StDev
  1.|-- 192.241.160.254            0.0%    10    1.5   0.9   0.4   1.5   0.4
  2.|-- 192.241.164.237            0.0%    10    0.6   0.9   0.4   2.7   0.7
  3.|-- nyk-b6-link.telia.net      0.0%    10    0.5   0.5   0.2   0.7   0.2
  4.|-- nyk-bb2-link.telia.net     0.0%    10   67.5  18.5   0.8  87.3  31.8

Điều này có thể hữu ích khi bạn không nhất thiết muốn đo lường trong thời gian thực, nhưng bạn muốn có phạm vi dữ liệu lớn hơn so với quy trình theo dõi cung cấp.

Kết luận


Với traceroute và mtr, bạn có thể biết server nào trên đường đến domain hoặc địa chỉ cụ thể đang gây ra sự cố. Điều này có thể hữu ích khi khắc phục sự cố mạng nội bộ và cũng như khi cố gắng cung cấp thông tin để hỗ trợ các thành viên hoặc ISP khi bạn gặp sự cố mạng.

<div class = “author”> Bởi Justin Ellingwood </div>


Tags:

Các tin liên quan