Cách sử dụng lệnh traceroute trên Linux

Bạn có thể sử dụng Linux đường theo dõi lệnh để phát hiện bước chậm trong hành trình của gói mạng và khắc phục sự cố kết nối mạng chậm chạp. Chúng tôi sẽ chỉ cho bạn cách thực hiện!

Cách thức hoạt động của traceroute

Khi bạn đánh giá cao cách đường theo dõi hoạt động, nó làm cho việc hiểu kết quả dễ dàng hơn nhiều. Đường đi của gói mạng càng phức tạp để đến đích của nó, thì càng khó xác định nơi nào có thể xảy ra hiện tượng chậm.

Mạng cục bộ (LAN) của một tổ chức nhỏ có thể tương đối đơn giản. Nó có thể sẽ có ít nhất một máy chủ và một hoặc hai bộ định tuyến. Sự phức tạp tăng lên trên một mạng diện rộng (WAN) giao tiếp giữa các địa điểm khác nhau hoặc thông qua internet. Sau đó gói mạng của bạn gặp (và được chuyển tiếp và định tuyến bởi) rất nhiều phần cứng, như bộ định tuyến và cổng.

Các tiêu đề của siêu dữ liệu trên các gói dữ liệu mô tả độ dài của nó, nó đến từ đâu, nó đi đâu, giao thức mà nó đang sử dụng, v.v. Đặc tả của giao thức xác định tiêu đề. Nếu bạn có thể xác định giao thức, bạn có thể xác định điểm bắt đầu và kết thúc của mỗi trường trong tiêu đề và đọc siêu dữ liệu.

đường theo dõi sử dụng bộ giao thức TCP / IP và gửi các gói Giao thức Datagram Người dùng. Tiêu đề chứa trường Thời gian tồn tại (TTL), trường này chứa giá trị số nguyên tám bit. Bất chấp những gì tên gợi ý, nó đại diện cho một số lượng, không phải một thời lượng.

Một gói tin đi từ điểm gốc đến điểm đích của nó thông qua một bộ định tuyến. Mỗi khi gói đến một bộ định tuyến, nó sẽ giảm bộ đếm TTL. Nếu giá trị TTL từng đạt đến một, bộ định tuyến nhận gói sẽ giảm giá trị và thông báo rằng giá trị đó bây giờ là 0. Sau đó, gói tin bị loại bỏ và không được chuyển tiếp đến bước tiếp theo của hành trình vì nó đã “hết thời gian chờ”.

Bộ định tuyến sẽ gửi lại bản tin Internet Message Control Protocol (ICMP) Time Exceeded về nguồn gốc của gói tin để cho nó biết gói tin đã hết thời gian chờ. Thông báo Time Exceeded chứa tiêu đề gốc và 64 bit đầu tiên của dữ liệu gói ban đầu. Điều này được định nghĩa trên trang sáu của Yêu cầu Bình luận 792.

Vì thế nếu đường theo dõi gửi một gói ra ngoài, nhưng sau đó đặt giá trị TTL thành một, gói đó sẽ chỉ đến được với bộ định tuyến đầu tiên trước khi bị loại bỏ. Nó sẽ nhận được một thông báo ICMP time vượt quá từ bộ định tuyến và nó có thể ghi lại thời gian cần thiết cho chuyến đi khứ hồi.

Sau đó, nó lặp lại bài tập với TTL được đặt thành 2, sẽ không thành công sau hai bước nhảy. đường theo dõi tăng TTL lên ba và thử lại. Quá trình này lặp lại cho đến khi đạt đến đích hoặc thử nghiệm số bước nhảy tối đa (30, theo mặc định).

Một số bộ định tuyến không chơi tốt

Một số bộ định tuyến có lỗi. Họ cố gắng chuyển tiếp các gói có TTL bằng 0 thay vì loại bỏ chúng và tăng thông báo vượt quá thời gian ICMP.

Theo Cisco, một số Nhà cung cấp dịch vụ Internet (ISP) giới hạn số lượng tin nhắn ICMP mà bộ định tuyến của họ chuyển tiếp.

Một số thiết bị được định cấu hình không bao giờ gửi gói ICMP. Điều này thường để đảm bảo thiết bị không thể vô tình bị ép buộc tham gia vào hoạt động từ chối dịch vụ phân tán, giống như một cuộc tấn công smurf.

theo dõi có thời gian chờ mặc định cho các câu trả lời là năm giây. Nếu nó không nhận được phản hồi trong vòng năm giây đó, nỗ lực sẽ bị hủy bỏ. Điều này có nghĩa là phản hồi từ các bộ định tuyến rất chậm sẽ bị bỏ qua.

Cài đặt theo dõi

theo dõi đã được cài đặt trên Fedora 31 nhưng phải được cài đặt trên Manjaro 18.1 và Ubuntu 18.04. Để cài đặt theo dõi trên Manjaro sử dụng lệnh sau:

sudo pacman -Sy traceroute

Để cài đặt theo dõi trên Ubuntu, sử dụng lệnh sau:

sudo apt-get install traceroute

Sử dụng theo dõi

Như chúng tôi đã đề cập ở trên, traceroute's mục đích là để gợi ra một phản hồi từ bộ định tuyến tại mỗi bước từ máy tính của bạn đến đích. Một số có thể kín tiếng và không cho đi, trong khi những người khác có thể sẽ làm đổ hạt đậu mà không chút e ngại.

Ví dụ, chúng tôi sẽ chạy một theo dõi đến trang web của Lâu đài Blarney ở Ireland, nơi có Đá Blarney nổi tiếng. Truyền thuyết kể rằng nếu bạn hôn Đá Blarney, bạn sẽ được ban phước với “món quà của cái rọ”. Chúng ta hãy hy vọng các bộ định tuyến mà chúng ta gặp phải trên đường đi là phù hợp.

Chúng tôi gõ lệnh sau:

traceroute www.blarneycastle.ie

Dòng đầu tiên cung cấp cho chúng tôi thông tin sau:

  • Điểm đến và địa chỉ IP của nó.
  • Số bước nhảy theo dõi sẽ cố gắng trước khi bỏ cuộc.
  • Kích thước của gói UDP mà chúng tôi đang gửi.

Tất cả các dòng khác chứa thông tin về một trong các bước nhảy. Tuy nhiên, trước khi tìm hiểu chi tiết, chúng ta có thể thấy có 11 bước nhảy giữa máy tính của chúng tôi và trang web của Lâu đài Blarney. Hop 11 cũng cho chúng tôi biết rằng chúng tôi đã đến đích.

Định dạng của mỗi dòng nhảy như sau:

  • Tên của thiết bị hoặc địa chỉ IP nếu thiết bị không tự nhận dạng.
  • Địa chỉ IP.
  • Thời gian diễn ra một vòng cho mỗi bài kiểm tra trong số ba bài kiểm tra. Nếu dấu hoa thị ở đây, điều đó có nghĩa là không có phản hồi cho bài kiểm tra đó. Nếu thiết bị hoàn toàn không phản hồi, bạn sẽ thấy ba dấu hoa thị và không có tên thiết bị hoặc địa chỉ IP.

Hãy xem lại những gì chúng tôi nhận được bên dưới:

  • Hợp 1: Cổng gọi đầu tiên (không có ý định chơi chữ) là Bộ định tuyến DrayTek Vigor trên mạng cục bộ. Đây là cách các gói UDP của chúng tôi rời khỏi mạng cục bộ và truy cập internet.
  • Hợp 2: Thiết bị này không phản hồi. Có lẽ nó đã được cấu hình để không bao giờ gửi các gói ICMP. Hoặc, có lẽ nó đã phản hồi nhưng quá chậm, vì vậytheo dõi hết giờ.
  • Hợp 3: Một thiết bị đã phản hồi, nhưng chúng tôi không nhận được tên của nó, chỉ có địa chỉ IP. Lưu ý rằng có một dấu hoa thị trong dòng này, có nghĩa là chúng tôi không nhận được phản hồi cho cả ba yêu cầu. Điều này có thể cho thấy mất gói.
  • Hops 4 và5: Nhiều bước nhảy ẩn danh hơn.
  • Hợp 6: Có rất nhiều văn bản ở đây vì một thiết bị từ xa khác đã xử lý từng yêu cầu trong số ba yêu cầu UDP của chúng tôi. Tên và địa chỉ IP (khá dài) cho mỗi thiết bị đã được in. Điều này có thể xảy ra khi bạn gặp phải một mạng “đông dân cư” mà trên đó có rất nhiều phần cứng để xử lý khối lượng lớn lưu lượng truy cập. Bước nhảy này nằm trong một trong những ISP lớn nhất ở Vương quốc Anh. Vì vậy, sẽ là một phép lạ nhỏ nếu cùng một phần cứng từ xa xử lý ba yêu cầu kết nối của chúng tôi.
  • Hợp 7: Đây là bước nhảy các gói UDP của chúng tôi được thực hiện khi chúng rời khỏi mạng ISP.
  • Hợp 8: Một lần nữa, chúng tôi nhận được một địa chỉ IP nhưng không phải tên thiết bị. Cả ba bài kiểm tra đều trả về thành công.
  • Hops 9và 10: Thêm hai bước nhảy vô danh.
  • Hợp 11: Chúng tôi đã đến trang web của Lâu đài Blarney. Lâu đài nằm ở Cork, Ireland, nhưng theo vị trí địa lý địa chỉ IP, trang web là ở London.

Vì vậy, nó là một túi hỗn hợp. Một số thiết bị phát bóng, một số phản hồi nhưng không cho chúng tôi biết tên của chúng và những thiết bị khác vẫn hoàn toàn ẩn danh.

Tuy nhiên, chúng tôi đã đến đích, chúng tôi biết còn 11 bước nữa và thời gian khứ hồi cho hành trình là 13,773 và 14,715 mili giây.

Ẩn tên thiết bị

Như chúng ta đã thấy, đôi khi việc bao gồm tên thiết bị dẫn đến một màn hình lộn xộn. Để giúp xem dữ liệu dễ dàng hơn, bạn có thể sử dụng -n (không có ánh xạ) tùy chọn.

Để làm điều này với ví dụ của chúng tôi, chúng tôi nhập như sau:

traceroute -n blarneycastle.ie

Điều này giúp bạn dễ dàng chọn ra số lượng lớn cho thời gian khứ hồi có thể chỉ ra một nút cổ chai.

Hop 3 đang bắt đầu có chút nghi ngờ. Lần trước, nó chỉ phản hồi hai lần, và lần này, nó chỉ phản hồi một lần. Tất nhiên, trong trường hợp này, nó nằm ngoài tầm kiểm soát của chúng tôi.

Tuy nhiên, nếu bạn đang điều tra mạng công ty của mình, sẽ rất đáng để tìm hiểu sâu hơn một chút về nút đó.

Đặt giá trị thời gian chờ của lộ trình theo dõi

Có lẽ nếu chúng tôi kéo dài khoảng thời gian chờ mặc định (năm giây), chúng tôi sẽ nhận được nhiều phản hồi hơn. Để làm điều này, chúng tôi sẽ sử dụng -w (thời gian chờ) để thay đổi nó thành bảy giây. (Lưu ý rằng đây là một số dấu phẩy động.)

Chúng tôi gõ lệnh sau:

traceroute -w 7.0 blarneycastle.ie

Điều đó không tạo ra nhiều khác biệt, vì vậy các câu trả lời có thể đã hết thời gian. Có thể những bước nhảy ẩn danh đang được giữ bí mật một cách có chủ đích.

Đặt số lần kiểm tra

Theo mặc định, theo dõi gửi ba gói UDP cho mỗi bước nhảy. Chúng ta có thể sử dụng -q (số lượng truy vấn) để điều chỉnh điều này lên hoặc xuống.

Để tăng tốc độ theo dõi kiểm tra, chúng tôi nhập như sau để giảm số lượng gói thăm dò UDP mà chúng tôi gửi đến một:

traceroute -q 1 blarneycastle.ie

Điều này sẽ gửi một đầu dò duy nhất cho mỗi bước nhảy.

Đặt giá trị TTL ban đầu

Chúng ta có thể đặt giá trị ban đầu của TTL thành giá trị khác và bỏ qua một số bước. Thông thường, các giá trị TTL được đặt thành một cho tập thử nghiệm đầu tiên, hai giá trị cho tập thử nghiệm tiếp theo, v.v. Nếu chúng tôi đặt nó thành năm, thử nghiệm đầu tiên sẽ cố gắng chuyển sang bước năm và bỏ qua bước từ một đến bốn.

Vì chúng tôi biết trang web của Lâu đài Blarney cách máy tính này 11 bước, chúng tôi nhập như sau để chuyển thẳng đến Hop 11:

traceroute -f 11 blarneycastle.ie

Điều đó cung cấp cho chúng tôi một báo cáo tốt đẹp, cô đọng về trạng thái của kết nối đến điểm đến.

Hãy cân nhắc

đường theo dõi là một công cụ tuyệt vời để điều tra định tuyến mạng, kiểm tra tốc độ kết nối hoặc xác định tắc nghẽn. Windows cũng có một tracert lệnh có chức năng tương tự.

Tuy nhiên, bạn không muốn tấn công các thiết bị không xác định bằng torrent các gói UDP và hãy thận trọng với việc bao gồm đường theo dõi trong các kịch bản hoặc các công việc không cần giám sát.

Tải đường theo dõi có thể đặt trên một mạng có thể ảnh hưởng xấu đến hiệu suất của nó. Trừ khi bạn đang ở trong một loại tình huống đã được khắc phục ngay bây giờ, bạn có thể muốn sử dụng nó ngoài giờ làm việc bình thường.