Traceroute là gì?

Traceroute là công cụ network diagnostic cho phép bạn theo dõi đường đi của các gói数据包 (packets) từ máy tính của bạn đến một destination host qua mạng IP. Kết quả của traceroute cho thấy tất cả các điểm trung gian (hops) mà gói tin đi qua, cùng với thời gian phản hồi của mỗi hop.

Traceroute là công cụ không thể thiếu cho DevOps và System Administrator khi cần debug network issues, kiểm tra latency problems, hoặc xác định điểm tắc nghẽn trong mạng.

Cách Traceroute Hoạt Động

Traceroute sử dụng cơ chế TTL (Time To Live) trong IP header để khám phá các hops trên đường đi:

    Bước 1: Gửi gói tin với TTL = 1 – Gói tin sẽ bị drop ở router đầu tiên, router gửi về ICMP Time Exceeded messageBước 2: Gửi gói tin với TTL = 2 – Router thứ hai phản hồiBước 3: Tiếp tục tăng TTL cho đến khi đến được destination hoặc đạt maximum hops (thường là 30)Bước 4: Khi đến destination, nó gửi ICMP Port Unreachable (Linux) hoặc Echo Reply (Windows)

Mỗi hop represents một router hoặc device trung gian mà gói tin đi qua. Thời gian phản hồi (RTT – Round Trip Time) cho biết độ trễ đến từng device.

Cú Pháp Cơ Bản

# Cú pháp cơ bản
traceroute [OPTIONS] destination

# Ví dụ đơn giản
traceroute google.com

# Với IPv6
traceroute -6 ipv6.google.com

# Với IP address
traceroute 8.8.8.8

Các Tùy Chọn Phổ Biến

Tùy ChọnMô Tả
-nKhông phân giải DNS, hiển thị IP addresses thay vì hostnames
-m <max_hops>Số lượng hops tối đa để thử (default: 30)
-w <time>Thời gian chờ phản hồi mỗi probe (default: 5s)
-q <nqueries>Số lượng probes gửi cho mỗi hop (default: 3)
-ISử dụng ICMP Echo thay vì UDP datagrams
-TSử dụng TCP SYN probes
-p <port>Destination port (cho UDP và TCP)

Ví Dụ Thực Tế

1. Trace đến Google

$ traceroute google.com
traceroute to google.com (142.250.185.206), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  1.234 ms  1.089 ms  0.975 ms
 2  10.0.0.1 (10.0.0.1)  5.432 ms  5.211 ms  4.987 ms
 3  * * *
 4  108.170.252.1 (108.170.252.1)  12.456 ms  12.123 ms  11.987 ms
 5  142.250.185.206 (142.250.185.206)  13.234 ms  13.012 ms  12.876 ms

2. Trace không phân giải DNS (-n)

$ traceroute -n google.com
traceroute to google.com (142.250.185.206), 30 hops max, 60 byte packets
 1  192.168.1.1  1.234 ms  1.089 ms  0.975 ms
 2  10.0.0.1  5.432 ms  5.211 ms  4.987 ms
 3  * * *
 4  108.170.252.1  12.456 ms  12.123 ms  11.987 ms
 5  142.250.185.206  13.234 ms  13.012 ms  12.876 ms

3. Trace với TCP (-T)

$ traceroute -T -p 443 google.com
traceroute to google.com (142.250.185.206), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  1.234 ms  1.089 ms  0.975 ms
 2  10.0.0.1 (10.0.0.1)  5.432 ms  5.211 ms  4.987 ms
...

Đọc Kết Quả Traceroute

Mỗi dòng trong kết quả traceroute đại diện cho một hop. Thông tin quan trọng:

Thành PhầnÝ Nghĩa
Hop numberThứ tự của router trung gian
Hostname (IP)Địa chỉ của router – có thể là DNS resolved hoặc IP thuần túy
RTT (3 giá trị)Round Trip Time của 3 probes – cho biết độ ổn định và latency
* * *Không nhận được phản hồi – có thể firewall block hoặc router không reply

Phân tích RTT: Nếu một hop có RTT cao hơn đáng kể so với hop trước đó, đó có thể là điểm tắc nghẽn. Nếu RTT dao động lớn (ví dụ: 10ms, 50ms, 200ms), network có thể có vấn đề về jitter.

Sử Dụng Traceroute Để Debug Network

1. Xác Định Firewall Block

$ traceroute -I 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.1.1  1.234 ms
 2  * * *
 3  * * *
 4  * * *
# Nếu tất cả đều timeout (* * *), có thể có firewall block

2. Kiểm Tra High Latency

$ traceroute -n google.com
traceroute to google.com (142.250.185.206), 30 hops max, 60 byte packets
 1  192.168.1.1  1.234 ms  1.089 ms  0.975 ms
 2  10.0.0.1  5.432 ms  5.211 ms  4.987 ms
 3  100.45.67.89  250.456 ms  248.321 ms  245.678 ms  # Điểm có latency cao
 4  108.170.252.1  12.456 ms  12.123 ms  11.987 ms
 5  142.250.185.206  13.234 ms  13.012 ms  12.876 ms

3. Trace DNS Server

$ traceroute -n 8.8.8.8  # Google DNS
$ traceroute -n 1.1.1.1   # Cloudflare DNS

Traceroute Trên Windows (tracert)

Windows sử dụng lệnh tracert thay vì traceroute. Cú pháp và output tương tự nhưng sử dụng ICMP Echo requests thay vì UDP.

# Windows Command Prompt
C:\> tracert google.com

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

  1    <1 ms    <1 ms    <1 ms  192.168.1.1
  2     5 ms     4 ms     4 ms  10.0.0.1
  3     *        *        *     Request timed out.
  4    12 ms    11 ms    11 ms  108.170.252.1
  5    13 ms    13 ms    12 ms  142.250.185.206

Trace complete.
Tùy Chọn WindowsMô Tả
-dKhông phân giải DNS
-h <max_hops>Số hops tối đa
-w <time>Thời gian chờ timeout (ms)

Công Cụ Thay Thế và Bổ Sung

1. MTR (My Traceroute)

MTR kết hợp traceroute và ping, cho phép bạn xem statistics liên tục cho mỗi hop. Rất hữu ích để phát hiện network issues không ổn định.

# Cài đặt MTR
sudo apt install mtr

# Sử dụng MTR
mtr google.com

# Output mẫu:
#  HOST: localhost              Loss%   Snt   Last   Avg  Best  Wrst StDev
#  1. 192.168.1.1              0.0%    10    1.2    1.4   0.9   2.1   0.3
#  2. 10.0.0.1                0.0%    10    5.4    5.2   4.9   6.1   0.4
#  3. ???                     0.0%    10    0.0    0.0   0.0   0.0   0.0
#  4. 108.170.252.1           0.0%    10   12.5   12.3  11.9  13.2   0.4
#  5. 142.250.185.206         0.0%    10   13.2   13.1  12.8  14.0   0.3

2. Tracepath

Tracepath tương tự traceroute nhưng không requires root privileges. Nó cũng tự động tìm MTU trên đường đi.

$ tracepath google.com
 1?: [LOCALHOST]                      pmtu 1500
 1:  192.168.1.1                        1.234ms
 2:  10.0.0.1                           5.432ms
 3:  no reply
 4:  108.170.252.1                     12.456ms
 5:  142.250.185.206                   13.234ms reached
     Resume: pmtu 1500 hops 5 back 5

3. tcptraceroute

tcptraceroute sử dụng TCP SYN packets thay vì UDP hoặc ICMP. Hữu ích khi firewall block ICMP/UDP và bạn cần trace đến một service cụ thể như port 80 hoặc 443.

# Cài đặt tcptraceroute
sudo apt install tcptraceroute

# Trace đến web server
tcptraceroute google.com 443

Best Practices Cho DevOps

    Luôn dùng -n khi debug production - DNS resolution có thể làm chậm kết quả và không cần thiết khi bạn đã biết IPSo sánh từ nhiều nguồn - Trace từ server và từ workstation để xác định vấn đề ở đâuDùng MTR cho analysis dài hạn - MTR cung cấp statistics tốt hơn cho việc phát hiện intermittent issuesDocument kết quả - Lưu lại traceroute results để so sánh khi network thay đổiKết hợp với ping và telnet - Traceroute cho biết path, ping cho biết reachability, telnet cho biết port availability

Kết Luận

Traceroute là công cụ fundamental cho bất kỳ DevOps engineer nào. Nó giúp bạn nhanh chóng xác định điểm tắc nghẽn, high latency, hoặc firewall blocks trong network path. Kết hợp với DNSTCP/IP knowledge, bạn sẽ có bộ công cụ hoàn chỉnh để debug mạng hiệu quả.

Để tìm hiểu thêm về các công cụ network khác, tham khảo bài viết về Firewall và cách cấu hình network security.

Các Câu Hỏi Thường Gặp (FAQ)

1. Tại sao một số hops hiển thị dấu * * *?

Dấu * * * có nghĩa là không nhận được phản hồi trong thời gian timeout. Nguyên nhân phổ biến: router được cấu hình không reply ICMP Time Exceeded messages (để tránh disclosure về network topology), firewall block, hoặc router quá bận không xử lý kịp. Điều này không nhất thiết có nghĩa là hop đó down - có thể nó đang hoạt động nhưng không reply probes.

2. Sự khác nhau giữa traceroute và tracert là gì?

Traceroute (Linux/Unix/Mac) gửi UDP datagrams với incremental TTL values. Tracert (Windows) gửi ICMP Echo requests. Windows version thường cho kết quả nhanh hơn nhưng có thể bị firewall block dễ hơn. Mặc dù có sự khác biệt về protocol, chức năng cơ bản giống nhau.

3. Làm sao để trace qua firewall?

Nếu ICMP và UDP bị firewall block, thử sử dụng tcptraceroute với TCP SYN probes đến một port cụ thể (như 80 hoặc 443). Hoặc sử dụng tùy chọn -T trên Linux để gửi TCP packets thay vì UDP.

4. Tại sao RTT (thời gian phản hồi) tăng dần theo hops?

RTT tăng dần theo hops là bình thường vì mỗi hop thêm độ trễ xử lý và transmission. Tuy nhiên, nếu một hop có RTT tăng đột ngột (ví dụ: từ 5ms lên 50ms), đó có thể là dấu hiệu của network congestion hoặc device có vấn đề tại hop đó.

5. MTR tốt hơn traceroute ở điểm nào?

MTR (My Traceroute) chạy liên tục và hiển thị statistics trung bình, loss percentage, và standard deviation cho mỗi hop. Trong khi traceroute chỉ cho snapshot một thời điểm, MTR giúp phát hiện intermittent issues (ví dụ: packet loss 5% không thể thấy trong 3 probes của traceroute nhưng rõ ràng trong 100 probes của MTR).

Chào các bạn mình là Quốc Hùng , mình sinh ra thuộc cung song tử ,song tử luôn khẳng định chính mình ,luôn luôn phấn đấu vượt lên phía trước ,mình sinh ra và lớn lên tại vùng đất võ cổ truyền ,đam mê của mình là coder ,ngày đi học tối về viết blog ...