Bạn muốn tìm hiểu cách sử dụng lệnh traceroute
trong Linux để theo dõi đường đi của gói tin? Bài viết này sẽ cung cấp cho bạn hướng dẫn chi tiết từ A đến Z, bao gồm cú pháp lệnh, các tùy chọn, cách giải thích kết quả và ví dụ thực tế. Hãy bắt đầu khám phá ngay!
Traceroute là gì?
Traceroute là một công cụ mạng quan trọng giúp theo dõi đường đi của gói tin từ máy tính của bạn đến một đích cụ thể. Traceroute hữu ích để chẩn đoán sự cố mạng, xác định vị trí tắc nghẽn và đánh giá hiệu suất mạng.
Linux cung cấp hai công cụ traceroute
phổ biến:
- traceroute: Đây là công cụ traceroute mặc định trên hầu hết các bản phân phối Linux.
- mtr: MTR là công cụ traceroute nâng cao hơn, cung cấp thêm thông tin như thời gian ping và mất gói tin cho mỗi hop.
Traceroute hoạt động như thế nào?
Traceroute là một công cụ mạng giúp theo dõi đường đi của một gói tin từ thiết bị của bạn đến một đích cụ thể. Traceroute hoạt động bằng cách gửi một chuỗi các gói tin ICMP (Internet Control Message Protocol) đến đích, mỗi gói có giá trị Thời gian sống (TTL) được tăng dần.
Giá trị TTL là số lần một gói tin có thể được chuyển tiếp bởi bộ định tuyến trước khi bị loại bỏ. Khi một gói tin được gửi, chúng sẽ đi qua một loạt các bộ định tuyến trên đường đến đích. Mỗi bộ định tuyến sẽ giảm giá trị TTL của gói tin đi 1. Khi giá trị TTL đạt 0, bộ định tuyến sẽ gửi thông báo ICMP Time Exceeded trở lại thiết bị nguồn.
Traceroute sử dụng thông tin này để xây dựng bản đồ đường đi của gói tin. Bản đồ này cho thấy các bộ định tuyến mà gói tin đã đi qua và thời gian cần thiết để đi qua mỗi bộ định tuyến.
Dưới đây là các bước chi tiết về cách thức hoạt động của traceroute
:
- Thiết bị nguồn gửi một gói tin ICMP với giá trị TTL là 1.
- Gói tin đi qua bộ định tuyến đầu tiên. Bộ định tuyến giảm giá trị TTL của gói tin đi 1 và chuyển tiếp gói tin đến bộ định tuyến tiếp theo.
- Quá trình này được lặp lại cho đến khi gói tin đến đích hoặc giá trị TTL đạt 0.
- Khi giá trị TTL đạt 0, bộ định tuyến sẽ gửi thông báo ICMP Time Exceeded trở lại thiết bị nguồn.
- Thiết bị nguồn ghi lại địa chỉ IP của bộ định tuyến đã gửi thông báo Time Exceeded và thời gian cần thiết để gói tin đến bộ định tuyến đó.
- Thiết bị nguồn gửi một gói tin ICMP khác với giá trị TTL là 2.
- Quá trình này được lặp lại cho đến khi gói tin đến đích hoặc
traceroute
hoàn thành.
Traceroute cung cấp các thông tin sau:
- Địa chỉ IP của mỗi bộ định tuyến trên đường đi của gói tin
- Tên miền của mỗi bộ định tuyến (nếu có)
- Thời gian cần thiết để gói tin đi qua mỗi bộ định tuyến
- Mất gói tin cho mỗi bộ định tuyến (tùy chọn)
Nếu bạn là người mới bắt đầu sử dụng Linux, có thể còn chưa quen với các thao tác và lệnh trên hệ điều hành này. Tìm hiểu ngay các câu lệnh trong Linux cơ bản sẽ giúp bạn thao tác cũng như làm việc hiệu quả hơn.
Hướng cài đặt lệnh traceroute trong Linux
Traceroute thường được cài đặt sẵn trên hầu hết các bản phân phối Linux. Để kiểm tra xem bạn có traceroute
hay không, hãy mở terminal và nhập lệnh sau:
traceroute -h
Nếu traceroute
được cài đặt, bạn sẽ thấy danh sách các tùy chọn có sẵn. Nếu không, bạn cần cài đặt chúng bằng trình quản lý gói của hệ thống.
Ví dụ, trên Ubuntu/Debian, bạn có thể sử dụng lệnh sau:
sudo apt install traceroute
MTR có thể không được cài đặt sẵn trên hệ thống của bạn. Để cài đặt MTR, hãy sử dụng lệnh thích hợp cho trình quản lý gói của bạn.
Ví dụ, trên Ubuntu/Debian, bạn có thể sử dụng lệnh sau:
sudo apt install mtr
Xác minh cài đặt
Sau khi cài đặt, bạn có thể xác minh cài đặt bằng cách chạy lệnh traceroute
hoặc mtr
với một đích cụ thể. Ví dụ, để theo dõi đường đi của gói tin đến trang web https://www.google.com/, bạn có thể sử dụng lệnh sau:
traceroute google.com
Hoặc:
mtr google.com
Lệnh sẽ hiển thị danh sách các hop (router) mà gói tin phải đi qua để đến đích, cùng với thời gian ping và mất gói tin cho mỗi hop.
Ví dụ về lệnh traceroute trong Linux
Xét một ví dụ sau:
traceroute www.testingwordpress.com
Dòng đầu tiên cung cấp các thông tin như sau:
- Đích và địa chỉ IP của nó.
- Số lượng bước nhảy mà traceroute thực hiện trước khi dừng.
- Kích thước gói tin UDP đang gửi.
Các dòng khác chứa thông tin về từng bước nhảy. Trước hết ta có thể thấy output hiển thị 11 bước nhảy từ máy tính đến website blarneycastle.ie. Ở bước nhảy 11 ta cũng có thể quan sát được rằng packet đã đến được đích cần tới.
Mỗi dòng chứa thông tin bước nhảy có định dạng như sau:
- Tên hoặc địa chỉ IP của thiết bị.
- Địa chỉ IP.
- Thời gian hoàn thành một vòng đi cho mỗi lần test. Nếu có dấu * thì không có phản hồi gì cho lần thử này. Nếu thiết bị không phản hồi ở mọi lần thử thì ta sẽ nhận ba dấu *, cùng với đó thì tên thiết bị và địa chỉ IP cũng không được xác định.
Bây giờ hãy cùng kiểm tra kỹ hơn thông tin của từng bước nhảy:
- Bước 1: Cổng gọi đầu tiên là DrayTek Vigor Router trên mạng cục bộ. Đây cũng chính là cách mà các gói tin UDP đi khỏi mạng cục bộ để vào internet.
- Bước 2: Thiết bị không phản hồi, có thể vì thiết bị này được cấu hình để không gửi packet ICMP hoặc thời gian phản hồi quá chậm.
- Bước 3: Có một thiết bị phản hồi nhưng ta không nhận được tên mà chỉ có địa chỉ IP của nó. Có một dấu * ở trong dòng này nên có một thiết bị đã không gửi phản hồi về.
- Bước 4 và 5: Cũng không có phản hồi gì.
- Bước 6: Một thiết bị thừ xa đã xử lý từng yêu cầu trong các UDP request. Trong đó phần tên và địa chỉ IP của từng thiết bị cũng được in ra trên màn hình. Hiện tượng này có thể xảy ra nếu ta gặp một mạng có số lượng phần cứng khá nhiều để xử lý traffic lớn.
- Bước 7: Bước nhảy thực hiện hỏi UDP packet khi nó rời khỏi mạng ISP vừa rồi.
- Bước 8: Chỉ có địa chỉ IP mà không có tên thiết bị.
- Bước 9 và 10: Không nhận được phản hồi.
- Bước 11: Cho biết ta đã đến được website đích.
Có thể thấy rằng gói tin trên internet có thể gặp rất nhiều trường hợp và muôn kiểu thiết bị khác nhau. Một số thiết bị có thể phản hồi nhưng không cho biết tên, nhiều thiết bị thậm chí còn không đưa ra phản hồi gì. Nhưng nói chung thì ta vẫn đến được đích trong 11 bước nhảy (ở ví dụ trên).
Hướng dẫn sử dụng lệnh traceroute trong Linux
Lệnh traceroute
là một công cụ mạnh mẽ để chẩn đoán sự cố mạng và đánh giá hiệu suất mạng. Bằng cách sử dụng các tùy chọn khác nhau, bạn có thể tùy chỉnh hành vi của traceroute
để thu thập thông tin chi tiết phù hợp với nhu cầu của mình. Cụ thể dưới đây là một số cách sử dụng traceroute
cụ thể
Ẩn tên thiết bị
Ta có thể ẩn bớt tên thiết bị để dễ đọc dữ liệu hơn với option -n (no mapping):
traceroute -n www.testingwordpress.com
Bây giờ ta có thể dễ dàng lọc ra những giá trị thời gian hoàn tất chuyến đi lớn để xác định xem đó có phải vị trí nghẽn cổ chai hay không. Có thể để ý tại bước nhảy 3 thì chỉ còn hai thiết bị phản hồi (ở phần trước là 3 thiết bị). Khi đó ta có thể nghiên cứu sâu hơn tại vị trí này để xác định lỗi.
Đặt giá trị timeout cho traceroute
Nếu ta tăng thời gian timeout mặc định (5 giây) thì sẽ nhận được nhiều phản hồi hơn. Cụ thể, hãy sử dụng option -w (wait time) rồi truyền thời gian vào lệnh như sau:
traceroute -w 7.0 www.testingwordpress.com
Đặt số lần test
Theo mặc định thì traceroute sẽ gửi ba packet UDP đến mỗi bước nhảy. Ta có thể dùng option -q (number of queries) để điều chỉnh số lượng này.
Nếu muốn tăng tốc độ kiểm tra bằng traceroute thì hãy nhập lệnh dưới đây để giảm số lượng UDP ta cần gửi:
traceroute -q 1 www.testingwordpress.com
Đặt giá trị TTL ban đầu
Giá trị TTL mặc định là 1, ta có thể tăng giá trị này để bỏ qua một số bước nhảy nếu cần. Ta đã biết được để đến website Blarney Castle thì cần tổng cộng 11 bước nhảy. Bây giờ hãy thử chỉnh giá trị TTL thành 11:
traceroute -f 11 blarneycastle.ie
Khi đó gói tin sẽ đến ngay được đích mà không cần thực hiện các bước nhảy trung gian.
Lời kết
Traceroute là một công cụ rất mạnh mẽ để kiểm tra việc định tuyến mạng, xem tốc độ kết nối, xác định vị trí nghẽn cổ chai,… Tuy nhiên, ta chỉ nên sử dụng lệnh traceroute cho những công việc cần thiết để tránh gửi quá nhiều gói tin UDP đến những thiết bị lạ.