Hướng dẫn dùng lệnh traceroute trên Linux Image Hướng dẫn dùng lệnh traceroute trên Linux

Bài viết này hướng dẫn dùng lệnh traceroute trên hệ điều hành Linux.

1. Giới thiệu traceroute

traceroute là một công cụ xác định đường đi được sử dụng để đến đích của một gói tin. Công cụ này sử dụng giao thức ICMP, nhưng không giống như ping, xác định mọi bộ định tuyến trong đường đi. Lệnh traceroute rất hữu ích khi xử lý sự cố mạng vì nó có thể giúp chúng ta sác định vị trí các sự cố trong kết nối mạng. traceroute thường hoạt động bằng cách gửi một loạt các gói yêu cầu echo ICMP đến đích.

Trong Linux, theo mặc định traceroute sử dụng các gói UDP ở port(33434 - 33534). Lệnh traceroute thể hiển thị các tuyến đường thực hiện và chỉ IP và hostname của các router trên mạng

1.1. Nguyên lý hoạt động của traceroute

Lệnh traceroute hoạt động bằng cách gửi các gói có giá trị TTL bắt đầu từ 1 và sau đó tăng từng lần một. Mỗi khi bộ định tuyến nhận được gói, nó sẽ kiểm tra trường TTL, nếu trường TTL là 1 thì nó sẽ loại bỏ gói và gửi gói lỗi ICMP chứa địa chỉ IP của nó và đây là yêu cầu của traceroute. Vì vậy, traceroute tăng dần tìm nạp IP của tất cả các bộ định tuyến giữa nguồn và đích.

2. Cài đặt traceroute

Lệnh traceroute có sẵn trên hầu hết các bản phân phối Linux. Nếu không được cài đặt sẳn chúng ta thực hiện như sau:

  • Đối với bản phân phối Debian/Ubuntu:

    apt-get install traceroute
    
  • Đối với với bản phân phối RHEL/CentOS:

    yum install traceroute
    

3. Sử dụng traceroute

3.1. Theo dõi đường đi đến máy chủ

Để theo dõi đường đi địa chỉ IP hoặc tên của máy chủ bạn muốn kết nối. Sử dụng cú pháp như bên dưới:

[root@test1 ~]# traceroute google.com
traceroute to google.com (216.58.200.14), 30 hops max, 60 byte packets
 1  gw-102-96-126-130.static.host.vn (102.96.126.130)  1.135 ms  1.337 ms  1.587 ms
 2  210.211.114.109 (210.211.114.109)  2.986 ms  3.047 ms  3.129 ms
 3  210.211.112.241 (210.211.112.241)  0.825 ms  0.814 ms 210.211.112.237 (210.211.112.237)  0.765 ms
 4  115.84.180.41 (115.84.180.41)  1.994 ms 115.84.180.45 (115.84.180.45)  0.806 ms 115.84.180.41 (115.84.180.41)  1.942 ms
 5  localhost (27.68.236.110)  0.944 ms  0.944 ms  0.872 ms
 6  localhost (27.68.236.109)  29.499 ms  32.649 ms  32.589 ms
 7  localhost (27.68.250.210)  28.877 ms  28.868 ms  28.841 ms
 8  74.125.242.34 (74.125.242.34)  44.900 ms * 108.170.254.226 (108.170.254.226)  74.014 ms
 9  216.239.35.168 (216.239.35.168)  42.105 ms 216.239.50.192 (216.239.50.192)  31.823 ms 216.239.35.168 (216.239.35.168)  42.189 ms
10  172.253.66.78 (172.253.66.78)  55.441 ms  55.382 ms 74.125.242.35 (74.125.242.35)  41.020 ms
11  216.239.35.168 (216.239.35.168)  41.984 ms 72.14.232.220 (72.14.232.220)  41.589 ms 216.239.35.154 (216.239.35.154)  65.106 ms
12  216.239.63.214 (216.239.63.214)  69.887 ms 108.170.241.65 (108.170.241.65)  66.678 ms 108.170.241.97 (108.170.241.97)  58.832 ms
13  209.85.240.9 (209.85.240.9)  52.684 ms 216.239.62.241 (216.239.62.241)  64.269 ms 209.85.240.9 (209.85.240.9)  52.608 ms
14  hkg12s11-in-f14.1e100.net (216.58.200.14)  46.108 ms  55.572 ms 108.170.241.65 (108.170.241.65)  66.295 ms

Kết quả cho thấy:

  • Dòng đầu tiên hiển thị tên máy chủ và ip đích, số bước nhảy tối đa đến máy chủ traceroute sẽ thử và kích thước của các gói byte được gửi.
  • Sau đó, mỗi dòng liệt kê một bước nhảy để đến đích. Tên máy chủ được cung cấp, theo sau là ip của tên máy chủ, theo sau là thời gian roudtrip cần cho một gói để đến máy chủ và quay lại máy tính khởi tạo.

Ví dụ sau đây cho thấy tracerouterằng không đến đích.

[root@test1 ~]# traceroute google.com
traceroute to google.com (216.58.200.14), 30 hops max, 60 byte packets
 1  gw-102-96-126-130.static.host.vn (102.96.126.130)  1.135 ms  1.337 ms  1.587 ms
 2  210.211.114.109 (210.211.114.109)  2.986 ms  3.047 ms  3.129 ms
 3  210.211.112.241 (210.211.112.241)  0.825 ms  0.814 ms 210.211.112.237 (210.211.112.237)  0.765 ms
 4  115.84.180.41 (115.84.180.41)  1.994 ms 115.84.180.45 (115.84.180.45)  0.806 ms 115.84.180.41 (115.84.180.41)  1.942 ms
 5  localhost (27.68.236.110)  0.944 ms  0.944 ms  0.872 ms
 6  localhost (27.68.236.109)  29.499 ms  32.649 ms  32.589 ms
 7  localhost (27.68.250.210)  28.877 ms  28.868 ms  28.841 ms
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
...

Trong ví dụ này, các dấu sao hiển thị mất gói. Điều này có thể có nghĩa là mất mạng, lưu lượng lớn dẫn đến tắc nghẽn mạng hoặc tường lửa làm giảm lưu lượng. Lệnh traceroute cho thấy không đến đích được.

3.2. Cách theo dõi đường đi bằng IPv6

Để theo dõi tuyến đến máy chủ mạng bằng giao thức IPv6, hãy sử dụng tùy chọn -6 thực hiện như bên dưới.

[root@localhost ~]# traceroute -6n ipv6.google.com
traceroute to ipv6.google.com (2404:6800:4003:c03::66), 30 hops max, 80 byte packets
 1  * * *
 2  2400:8901:1011::1  0.994 ms 2400:8901:1111::1  1.015 ms  1.009 ms
 3  2001:cb0:2102:2:f::1  1.446 ms  1.881 ms  1.890 ms
 4  * * *
 5  * * *
 6  * * *
 7  2403:e800:ff00:110::2  169.493 ms  170.370 ms  169.890 ms
 8  2001:4860:1:1:0:121d:0:9  169.858 ms  169.135 ms  169.092 ms
 9  2001:4860:0:1004::e  170.143 ms 2001:4860:0:1007::f  170.028 ms 2001:4860:0:1005::f  170.337 ms
10  2001:4860::c:4001:13cf  180.581 ms  179.847 ms  179.692 ms
11  2001:4860::c:4001:155a  169.808 ms  169.748 ms  169.664 ms
12  2001:4860::c:4001:35e  198.010 ms 2001:4860::c:4001:35d  170.170 ms  169.879 ms
13  2001:4860::c:4000:d475  169.800 ms 2001:4860::c:4000:d474  171.112 ms  169.961 ms
14  2001:4860::31:4000:d362  170.260 ms  170.259 ms  170.053 ms
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * 2404:6800:4003:c03::66  169.932 ms

3.3. Tắt tính năng ánh xạ địa chỉ IP và tên miền

Lệnh traceroute cung cấp một tùy chọn -n tắt tính năng ánh xạ địa chỉ IP và tên miền.Ví dụ sau đây minh họa điều này:

[root@test1 ~]# traceroute -n google.com
traceroute to google.com (216.58.221.238), 30 hops max, 60 byte packets
 1  102.96.126.130  0.713 ms  1.821 ms  2.027 ms
 2  210.211.114.109  2.975 ms  3.033 ms  3.158 ms
 3  210.211.112.237  1.038 ms  1.036 ms  1.122 ms
 4  115.84.180.41  1.680 ms  1.667 ms 115.84.180.45  1.562 ms
 5  27.68.236.110  0.868 ms  0.980 ms  1.073 ms
 6  27.68.236.109  36.358 ms  35.866 ms  32.263 ms
 7  27.68.250.210  28.605 ms  28.587 ms  28.537 ms
 8  * 108.170.240.172  67.091 ms *
 9  72.14.232.100  50.615 ms 108.170.235.206  53.051 ms  53.022 ms
10  216.239.63.214  102.007 ms 172.253.66.78  82.498 ms 108.170.240.242  44.799 ms
11  216.239.35.150  56.527 ms 209.85.142.202  56.440 ms 216.239.35.150  56.059 ms
12  172.253.66.78  82.847 ms 108.170.241.1  44.668 ms 172.253.66.78  82.669 ms
13  216.239.35.150  56.041 ms 108.170.233.1  81.867 ms 216.239.35.150  55.880 ms
14  216.58.221.238  69.951 ms 108.170.241.1  44.763 ms 108.170.241.33  53.487 ms

Qua ví dụ trên chúng ta không thấy có tên máy chủ được hiển thị trong kết quả đầu ra.

3.4. Cấu hình thời gian chờ phản hồi

Để cấu hình thời gian chờ phản hồi trong traceroute sử dụng tùy chọn -w. Trong ví dụ sau, khoản thời gian phản hồi là 0.01s.

[root@test1 ~]# traceroute -w 0.01 google.com
traceroute to google.com (172.217.25.14), 30 hops max, 60 byte packets
 1  gw-102-96-126-130.static.host.vn (102.96.126.130)  0.646 ms  1.206 ms  1.416 ms
 2  210.211.114.109 (210.211.114.109)  3.001 ms  2.976 ms  3.201 ms
 3  210.211.112.237 (210.211.112.237)  0.953 ms  0.927 ms  0.971 ms
 4  115.84.180.45 (115.84.180.45)  1.183 ms  1.351 ms 115.84.180.41 (115.84.180.41)  1.519 ms
 5  localhost (27.68.236.110)  0.977 ms  0.789 ms  0.919 ms
 6  localhost (27.68.236.109)  30.008 ms  30.194 ms *
 7  * * *
 8  * * *
 9  * * *
...
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *

Qua ví dụ trên chúng ta thấy traceroute đã thử 30 lần và sau đó kết thúc vì không nhận được gói ICMP nào trong 0,01 giây.

3.5. Cấu hình số lượng truy vấn trên mỗi hop

Lệnh traceroute sẽ gửi 3 gói mỗi lần nhảy để cung cấp 3 lần khứ hồi. Giá trị mặc định 3 này có thể định cấu hình bằng tùy chọn -q. Tùy chọn này cho phép giá trị mới của số lượng gói trên mỗi hop.

[root@test1 ~]# traceroute -n -q 6 google.com
traceroute to google.com (216.58.200.14), 30 hops max, 60 byte packets
 1  102.96.126.130  1.453 ms  1.617 ms  1.928 ms  2.107 ms  2.405 ms  2.676 ms
 2  210.211.114.109  3.796 ms  3.772 ms  3.908 ms  3.963 ms  4.028 ms  4.125 ms
 3  210.211.112.237  0.877 ms 210.211.112.241  0.970 ms  1.025 ms  1.018 ms 210.211.112.237  0.740 ms 210.211.112.241  0.829 ms
 4  115.84.180.41  1.611 ms 115.84.180.45  0.974 ms  1.000 ms  0.952 ms 115.84.180.41  1.338 ms  1.586 ms
 5  27.68.236.110  0.939 ms  0.791 ms  1.097 ms  1.070 ms  0.877 ms  0.946 ms
 6  27.68.236.109  35.103 ms  30.284 ms  30.270 ms  28.726 ms  28.735 ms  28.464 ms
 7  27.68.250.210  28.424 ms  28.517 ms  28.466 ms  28.882 ms  28.789 ms  28.734 ms
 8  * * 108.170.254.227  31.643 ms 108.170.240.242  44.672 ms 74.125.242.34  44.853 ms 108.170.240.242  44.827 ms
 9  216.239.35.174  32.582 ms 108.170.232.170  31.744 ms 72.14.235.60  67.874 ms 216.239.35.174  32.371 ms 108.170.235.206  53.002 ms 216.239.35.154  64.116 ms
10  216.239.63.214  69.261 ms 108.170.240.164  66.004 ms 108.170.254.227  30.972 ms 74.125.242.34  44.903 ms 216.239.63.214  69.719 ms  69.532 ms
11  216.239.63.217  69.994 ms  69.740 ms  69.782 ms 72.14.232.222  31.088 ms 216.239.35.154  64.058 ms 72.14.232.222  29.012 ms
12  108.170.241.97  56.180 ms 108.170.241.65  66.378 ms 216.239.63.214  69.426 ms  69.566 ms  69.579 ms  69.475 ms
13  209.85.240.11  44.915 ms 209.85.142.27  48.475 ms 209.85.240.9  44.969 ms 209.85.142.27  55.064 ms 209.85.240.9  45.084 ms 209.85.142.27  56.407 ms
14  216.58.200.14  45.015 ms  45.157 ms  44.928 ms  45.696 ms  55.744 ms  44.926 ms

3.6. Cấu hình giá trị TTL để bắt đầu

Lệnh traceroute chấp nhận giá trị TTL mà bạn muốn bắt đầu. Theo mặc định, giá trị của nó là 1, có nghĩa là nó bắt đầu với bộ định tuyến đầu tiên trong đường dẫn nhưng sử dụng tùy chọn -f có thể đặt giá trị mới của trường TTL.

[root@test1 ~]# traceroute -n google.com
traceroute to google.com (216.58.199.110), 30 hops max, 60 byte packets
 1  102.96.126.130  2.855 ms  3.070 ms  3.387 ms
 2  * * *
 3  210.211.112.237  0.865 ms  0.860 ms  0.933 ms
 4  115.84.180.41  1.459 ms  1.464 ms 115.84.180.45  1.172 ms
 5  27.68.236.110  0.818 ms  0.966 ms  0.770 ms
 6  27.68.236.109  32.474 ms  31.046 ms  31.027 ms
 7  27.68.250.210  28.820 ms  28.861 ms  28.851 ms
 8  * 74.125.242.35  28.300 ms 108.170.254.226  63.898 ms
 9  108.170.233.64  31.301 ms 72.14.235.60  74.300 ms 108.170.237.232  46.440 ms
10  172.253.66.78  45.909 ms 108.170.240.242  44.717 ms 108.170.254.226  64.027 ms
11  72.14.235.60  80.393 ms 72.14.232.222  42.415 ms 72.14.232.220  32.767 ms
12  172.253.66.78  45.914 ms 108.170.241.33  45.838 ms 172.253.66.78  45.622 ms
13  72.14.239.95  65.596 ms 72.14.233.169  46.078 ms 209.85.142.202  45.181 ms
14  108.170.241.1  44.746 ms 216.58.199.110  51.646 ms 108.170.241.33  45.624 ms
[root@test1 ~]# traceroute -n -f 10 google.com
traceroute to google.com (216.58.199.110), 30 hops max, 60 byte packets
10  172.253.66.78  45.787 ms 216.239.63.214  77.202 ms 74.125.242.35  51.737 ms
11  72.14.232.222  51.190 ms 216.239.35.168  45.402 ms  45.396 ms
12  172.253.66.78  45.609 ms 108.170.241.33  45.868 ms 108.170.241.1  44.781 ms
13  74.125.251.10  52.517 ms 72.14.239.95  65.658 ms 209.85.142.202  45.382 ms
14  108.170.241.1  44.733 ms  44.714 ms 216.58.199.110  51.709 ms

Qua ví dụ trên chúng ta thấy khi sử dụng tùy chọn -f với giá trị 10, chỉ dòng thứ 10 đến cuối cùng được hiển thị.

3.7. Cấu hình thay đổi số lượng TTL

Time To Live xác định có bao nhiêu router lệnh traceroute sẽ theo dõi trên đường đến đích của nó. Giá trị TTL mặc định là 30, có nghĩa là, chỉ có 30 hop được theo dõi theo mặc định.

Để thay đổi giá trị TTL chúng ta sử dụng tùy chọn -m.

Ví dụ: Nếu bạn muốn 5 hop đầu tiên trên đường đến đích của google.com, hãy chạy lệnh sau:

[root@test1 ~]# traceroute -n -m 5 google.com
traceroute to google.com (216.58.197.110), 5 hops max, 60 byte packets
 1  102.96.126.130  2.172 ms  2.392 ms  2.679 ms
 2  * * *
 3  210.211.112.241  1.084 ms 210.211.112.237  1.074 ms 210.211.112.241  1.055 ms
 4  115.84.180.41  1.722 ms  1.934 ms 115.84.180.45  1.124 ms
 5  27.68.236.110  1.022 ms  1.159 ms  0.894 ms