Lệnh tracepath: Kiểm tra hop và MTU đường truyền thay cho traceroute
Trên máy chủ Linux, có thể kiểm tra đường đi (các hop) mà gói tin đi qua đến đích và MTU đường truyền bằng lệnh tracepath mà không cần quyền root. Trên một máy chủ AlmaLinux 9 không cài traceroute, chúng tôi giới hạn số hop là 10 và kiểm tra đường đi đến example.com: đến hop thứ tư đọc được thời gian phản hồi và MTU đường truyền 1500, còn sáu hop sau đó không phản hồi.
Kết quả bên dưới được chạy trên máy chủ AlmaLinux 9.8 (tài khoản root), còn phiên bản traceroute và trạng thái gói được kiểm tra trên máy chủ Debian 12 (tài khoản thường). Địa chỉ IPv6 của hop đầu tiên và các router trung gian đã được thay bằng địa chỉ mẫu dành cho tài liệu, còn thời gian phản hồi và giá trị pmtu được giữ nguyên.
1️⃣ Cách dùng lệnh tracepath
tracepath nhận một tên hoặc địa chỉ IP đích, gửi gói UDP và in ra các hop phản hồi, mỗi hop một dòng theo thứ tự TTL. Số hop tối đa mặc định là 30 và có thể đổi bằng -m.
Với example.com, chúng tôi thêm -m 10 để chỉ kiểm tra đến hop thứ mười.
tracepath -n -m 10 example.com 1?: [LOCALHOST] 0.006ms pmtu 9001
1: fe80::1%eth0 0.077ms pmtu 1500
1: 2001:db8:a::5b 2.627ms asymm 8
2: 2001:db8:a::52 1.473ms asymm 12
3: 2001:db8:b::1e 19.653ms asymm 9
4: 2001:db8:c:: 3.642ms asymm 11
5: no reply
6: no reply
7: no reply
8: no reply
9: no reply
10: no reply
Too many hops: pmtu 1500
Resume: pmtu 1500 Máy chủ này gửi gói tin đến địa chỉ IPv6 của example.com, và thời gian phản hồi xuất hiện đến hop thứ tư. Từ hop thứ năm trở đi liên tục là no reply, nên dòng reached cho biết đã đến đích trong mười hop không xuất hiện, và lệnh mất khoảng 18 giây mới kết thúc.
Khi chạy đến cùng đích mà không có -m, lệnh không kết thúc trong 30 giây. Với đường đi có nhiều hop không phản hồi, hãy dùng -m để giảm số hop cần kiểm tra.
Phiên bản tracepath đã cài được kiểm tra bằng -V; tracepath trên máy chủ này là iputils 20210202.
tracepath -Vtracepath from iputils 202102022️⃣ Cách đọc kết quả tracepath
Mỗi dòng kết quả lần lượt gồm số hop, địa chỉ đã phản hồi và thời gian khứ hồi. Tại điểm MTU đường truyền thay đổi sẽ có pmtu, còn nếu số hop chiều đi và chiều về khác nhau sẽ có asymm. Dưới đây là những gì cần xem trên mỗi dòng.
| Đầu ra | Ý nghĩa |
|---|---|
| 1?: | Cột số hop — số được ước đoán vì không lấy được TTL từ phản hồi sẽ có thêm dấu ? |
| [LOCALHOST] | Dòng của chính máy chủ, trước khi gói tin ra mạng |
| 0.077ms | Thời gian khứ hồi đến hop đó |
| pmtu 1500 | MTU đường truyền (byte) thay đổi tại điểm đó — chỉ có khi thay đổi |
| asymm 8 | Chênh lệch số hop giữa chiều đi và chiều về — tài liệu chính thức cho biết đây không phải giá trị đáng tin |
| no reply | Hop không phản hồi gói tin gửi với TTL đó |
| reached | Dòng đã đến đích |
| Too many hops | Dừng sau khi kiểm tra đến số hop đặt bằng -m |
| Resume: pmtu … hops … back … | MTU của cả đường truyền, số hop đến đích và số hop chiều về ước đoán |
Trong kết quả của example.com, pmtu ở dòng đầu [LOCALHOST] là 9001 và đổi thành 1500 ở hop đầu tiên. Việc dòng TTL 1 xuất hiện hai lần chỉ khác địa chỉ cũng là dạng có trong ví dụ của tài liệu chính thức. Tài liệu giải thích rằng nếu gói đầu tiên bị từ chối ở hop đầu vì MTU đường truyền thì cùng dòng TTL đó sẽ xuất hiện thêm một lần.
Khi đến đích, cuối dòng sẽ có reached, và dòng Resume cuối cùng cho biết số hop đến đích. Khi gửi đến 127.0.0.1, reached xuất hiện chỉ sau một hop, và dòng Resume là [pmtu 65535 hops 1 back 1].
tracepath -n 127.0.0.1 1: 127.0.0.1 0.047ms reached
Resume: pmtu 65535 hops 1 back 1 Đường đi kết thúc bằng Too many hops mà không có reached nghĩa là không nhận được phản hồi từ đích trong số hop đặt bằng -m. Đường đi đến example.com cũng không có reached trong mười hop, nên dòng Resume chỉ còn pmtu mà không có số hop.
3️⃣ Tùy chọn của tracepath
tracepath chỉ có tám tùy chọn: -4, -6, -n, -b, -l, -m, -p và -V, và khi chạy mà không có đích, danh sách này hiện ra dưới dạng cách dùng. Khi chạy không có tùy chọn, lệnh sẽ phân giải địa chỉ phản hồi thành tên; khi gửi đến localhost, cột hop hiện localhost.
tracepath localhost 1?: [LOCALHOST] 0.003ms pmtu 65536
1: localhost 0.048ms reached
1: localhost 0.030ms reached
Resume: pmtu 65536 hops 1 back 1 [tracepath -n] chỉ in địa chỉ IP mà không phân giải tên. Khi thêm -n cho cùng localhost, cột hop đổi thành địa chỉ IPv6 ::1, và đường đi example.com chạy với -n cũng chỉ hiện địa chỉ ở cột hop.
tracepath -n localhost 1?: [LOCALHOST] 0.005ms pmtu 65536
1: ::1 0.039ms reached
1: ::1 0.010ms reached
Resume: pmtu 65536 hops 1 back 1 -b in cả tên và địa chỉ. Khi thêm -b cho 127.0.0.1, địa chỉ nằm trong ngoặc sau tên thành [localhost (127.0.0.1)].
tracepath -b 127.0.0.1 1: localhost (127.0.0.1) 0.050ms reached
Resume: pmtu 65535 hops 1 back 1 -m là tùy chọn đặt số hop tối đa cần kiểm tra, và nhận giá trị từ 0 đến 255. Khi thêm -m 0, chỉ có dòng Too many hops và Resume hiện ngay mà không có dòng hop nào, còn khi nhập 256 thì bị từ chối với [out of range].
tracepath -m 0 127.0.0.1 Too many hops: pmtu 65535
Resume: pmtu 65535 -l là độ dài của gói tin gửi đầu tiên; mặc định là 65535 byte với IPv4 và 128000 byte với IPv6. Khi thêm -l 1500 cho 127.0.0.1, pmtu ở dòng Resume đổi từ 65535 thành 1500.
tracepath -l 1500 -n 127.0.0.1 1: 127.0.0.1 0.028ms reached
Resume: pmtu 1500 hops 1 back 1 -p là tùy chọn đặt cổng UDP đích đầu tiên sẽ gửi đến. Kết quả khi thêm -p 33434 cho 127.0.0.1 giống như khi không thêm.
| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -n | Chỉ in địa chỉ IP, không phân giải tên | |
| -b | In cả tên và địa chỉ | |
| -msố hop | Đặt số hop tối đa cần kiểm tra, mặc định 30 | |
| -lđộ dài | Đặt độ dài gói tin đầu tiên, mặc định IPv4 65535, IPv6 128000 | |
| -V | In phiên bản rồi thoát |
| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -4 | Chỉ gửi tới địa chỉ IPv4 | |
| -6 | Chỉ gửi tới địa chỉ IPv6 | |
| -pCổng | Đặt cổng UDP đích đầu tiên sẽ gửi đến |
4️⃣ Khác biệt giữa tracepath và traceroute
Trên máy chủ không cài được traceroute, hãy kiểm tra đường đi bằng tracepath thay cho traceroute. Máy chủ AlmaLinux 9.8 mà chúng tôi kiểm tra không có gói traceroute, còn tracepath nằm trong gói iputils nên chạy được mà không cần cài thêm.
rpm -q traceroutepackage traceroute is not installedMáy chủ Debian 12 thì ngược lại: traceroute 2.1.2 đã được cài, còn gói iputils-tracepath chứa tracepath thì chưa được cài.
traceroute --versionModern traceroute for Linux, version 2.1.2
Copyright (c) 2016 Dmitry Butskoy, License: GPL v2 or any laterapt-cache policy iputils-tracepathiputils-tracepath:
Installed: (none)
Candidate: 3:20221126-1+deb12u1Như hai máy chủ này, các lệnh có sẵn khác nhau tùy bản phân phối, nên trước tiên hãy kiểm tra máy chủ đang kết nối có lệnh nào. tracepath không cần quyền root và tài khoản nào gửi được gói UDP cũng chạy được. Tệp thực thi tracepath trên máy chủ AlmaLinux 9.8 cũng có quyền rwxr-xr-x và không có quyền bổ sung (capability) nào.
| Hạng mục | tracepath | traceroute |
|---|---|---|
| Máy chủ AlmaLinux 9.8 | Có trong gói iputils, chạy được ngay | Chưa cài |
| Máy chủ Debian 12 | Chưa cài gói iputils-tracepath | Đã cài traceroute 2.1.2 |
| Gói tin gửi đi | UDP | Mặc định UDP, -I là ICMP, -T là TCP |
| Kết quả mỗi hop | Một dòng | Mặc định gửi ba lần, ba thời gian (đổi bằng -q) |
| Số tùy chọn | Tám: -4 -6 -n -b -l -m -p -V | Hơn 20 chỉ riêng màn hình --help đầu tiên |
Nếu cần xem đường đi bằng ICMP hoặc TCP, hay gửi nhiều lần mỗi hop để so sánh thời gian, bạn sẽ phải cài và dùng lệnh traceroute. Với máy chủ khó cài đặt hoặc cần xem cả MTU đường truyền, tracepath là lựa chọn phù hợp.
🔲 Trình mô phỏng lệnh tracepath
Trong trình mô phỏng bên dưới, bạn có thể xem lại đường đi đến example.com chỉ với số hop thay đổi, hoặc tự nhập -n, -b, -m và -l cho localhost và 127.0.0.1 để thấy sự khác biệt.
🔢 FAQ & nội dung đề xuất
Tường lửa
Cài đặt FirewallD trên Linux và thiết lập daemon
Cài đặt và thiết lập daemon của FirewallD, công cụ quản lý quy tắc tường lửa bằng zone và service.
Mạng · Thiết lập
Lệnh netstat và lệnh ifconfig trên Linux
Lệnh netstat và ifconfig để xem cổng đang mở, trạng thái kết nối và thông tin giao diện mạng.
Mạng · DNS
Lệnh nslookup
Lệnh nslookup để hỏi máy chủ DNS xem tên miền được phân giải thành địa chỉ IP nào.
ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.