Cách sử dụng tcpdump và 6 ví dụ

Cách sử dụng tcpdump và 6 ví dụ

Bạn đang cố gắng nắm bắt các gói dữ liệu để phân tích lưu lượng truy cập trên mạng của mình? Có thể bạn là quản trị viên máy chủ đã gặp sự cố và muốn theo dõi dữ liệu được truyền trên mạng. Bất kể tình huống là gì, tiện ích tcpdump Linux là thứ bạn cần.





Trong bài viết này, chúng ta sẽ thảo luận chi tiết về lệnh tcpdump, cùng với một số hướng dẫn về cách cài đặt và sử dụng tcpdump trên hệ thống Linux của bạn.





Lệnh tcpdump là gì?

Tcpdump là một công cụ giám sát mạng mạnh mẽ cho phép người dùng lọc các gói và lưu lượng trên mạng một cách hiệu quả. Bạn có thể nhận được thông tin chi tiết liên quan đến TCP / IP và các gói được truyền trên mạng của bạn. Tcpdump là một tiện ích dòng lệnh, có nghĩa là bạn có thể chạy nó trên các máy chủ Linux mà không cần màn hình.





Quản trị viên hệ thống cũng có thể tích hợp tiện ích tcpdump với cron để tự động hóa các tác vụ khác nhau như ghi nhật ký. Vì nhiều tính năng của nó làm cho nó khá linh hoạt, tcpdump hoạt động như một công cụ khắc phục sự cố cũng như một công cụ bảo mật.

Cách cài đặt tcpdump trên Linux

Mặc dù hầu hết thời gian bạn sẽ thấy tcpdump được cài đặt sẵn trên hệ thống của mình, nhưng một số bản phân phối Linux không đi kèm với gói. Do đó, bạn có thể phải cài đặt thủ công tiện ích trên hệ thống của mình.



Bạn có thể kiểm tra xem tcpdump đã được cài đặt trên hệ thống của mình hay chưa bằng cách sử dụng cái mà chỉ huy.

which tcpdump

Nếu đầu ra hiển thị một đường dẫn thư mục ( / usr / bin / tcpdump ), thì hệ thống của bạn đã cài đặt gói. Tuy nhiên, nếu không, bạn có thể thực hiện dễ dàng bằng cách sử dụng trình quản lý gói mặc định trên hệ thống của mình.





Để cài đặt tcpdump trên các bản phân phối dựa trên Debian, chẳng hạn như Ubuntu:

sudo apt-get install tcpdump

Cài đặt tcpdump trên CentOS cũng dễ dàng.





sudo yum install tcpdump

Trên các bản phân phối dựa trên Arch:

sudo pacman -S tcpdump

Để cài đặt trên Fedora:

sudo dnf install tcpdump

Lưu ý rằng gói tcpdump yêu cầu libcap như một phần phụ thuộc, vì vậy hãy đảm bảo rằng bạn cũng cài đặt nó trên hệ thống của mình.

Ví dụ về Tcpdump để nắm bắt các gói mạng trên Linux

Bây giờ bạn đã cài đặt thành công tcpdump trên máy Linux của mình, đã đến lúc theo dõi một số gói tin. Vì tcpdump yêu cầu quyền của người dùng cấp trên để thực hiện hầu hết các hoạt động, bạn sẽ phải thêm sudo các lệnh của bạn.

1. Liệt kê tất cả các giao diện mạng

Để kiểm tra giao diện mạng nào khả dụng để nắm bắt, hãy sử dụng -NS gắn cờ bằng lệnh tcpdump.

tcpdump -D

Vượt qua - danh sách-giao diện cờ như một đối số sẽ trả về cùng một kết quả.

tcpdump --list-interfaces

Đầu ra sẽ là danh sách tất cả các giao diện mạng có trên hệ thống của bạn.

Sau khi nhận được danh sách các giao diện mạng, đã đến lúc giám sát mạng của bạn bằng cách bắt các gói tin trên hệ thống của bạn. Mặc dù bạn có thể chỉ định giao diện nào bạn muốn sử dụng, không tí nào lệnh đối số tcpdump để nắm bắt các gói mạng bằng bất kỳ giao diện hoạt động nào.

tcpdump --interface any

Hệ thống sẽ hiển thị kết quả sau.

Lorem ipsum dolor sit amet, consectetur

Có liên quan: Mô hình kết nối hệ thống mở là gì?

2. Định dạng đầu ra tcpdump

Bắt đầu từ dòng thứ ba, mỗi dòng của đầu ra biểu thị một gói tin cụ thể được bắt bởi tcpdump. Đây là kết quả đầu ra của một gói tin đơn lẻ trông như thế nào.

17:00:25.369138 wlp0s20f3 Out IP localsystem.40310 > kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 33

Hãy nhớ rằng không phải tất cả các gói đều được nắm bắt theo cách này, nhưng đây là định dạng chung theo sau của hầu hết chúng.

Đầu ra chứa các thông tin sau.

  1. Dấu thời gian của gói đã nhận
  2. Tên giao diện
  3. Luồng gói
  4. Tên của giao thức mạng
  5. Địa chỉ IP và chi tiết cổng
  6. Cờ TCP
  7. Số thứ tự của dữ liệu trong gói
  8. Dữ liệu ack
  9. Kích thước cửa sổ
  10. Độ dài gói

Trường đầu tiên ( 17: 00: 25.369138 ) hiển thị dấu thời gian khi hệ thống của bạn gửi hoặc nhận gói tin. Thời gian ghi lại được trích xuất từ ​​giờ địa phương của hệ thống của bạn.

xóa bộ nhớ đệm microsoft edge mà không cần mở

Trường thứ hai và thứ ba biểu thị giao diện được sử dụng và luồng của gói tin. Trong đoạn mã trên, wlp0s20f3 là tên của giao diện không dây và Ngoài là luồng gói tin.

Trường thứ tư bao gồm thông tin liên quan đến tên giao thức mạng. Nói chung, bạn sẽ tìm thấy hai giao thức- IPIP6 , trong đó IP biểu thị IPV4 và IP6 là cho IPV6.

Trường tiếp theo chứa địa chỉ IP hoặc tên của hệ thống nguồn và đích. Địa chỉ IP được theo sau bởi số cổng.

Trường thứ sáu trong đầu ra bao gồm cờ TCP. Có nhiều cờ khác nhau được sử dụng trong đầu ra tcpdump.

Tên cờGiá trịSự miêu tả
THỊ GIÁCNSKết nối đã bắt đầu
KẾT THÚCNSKết nối xong
PDữ liệu được đẩy
RSTNSKết nối được đặt lại
ALAS.Nhìn nhận

Đầu ra cũng có thể chứa sự kết hợp của một số cờ TCP. Ví dụ, CỜ [f.] là viết tắt của một gói FIN-ACK.

Di chuyển xa hơn trong đoạn mã đầu ra, trường tiếp theo chứa số thứ tự ( seq 196: 568 ) của dữ liệu trong gói. Gói đầu tiên luôn có giá trị nguyên dương và các gói tiếp theo sử dụng số thứ tự tương đối để cải thiện luồng dữ liệu.

Trường tiếp theo chứa số xác nhận ( ack 1 ), hoặc số Ack đơn giản. Gói được bắt trong máy của người gửi có 1 là số xác nhận. Ở đầu bên nhận, số Ack là giá trị của gói tin tiếp theo.

Trường thứ chín trong đầu ra phù hợp với kích thước cửa sổ ( giành chiến thắng 309 ), là số byte có sẵn trong bộ đệm nhận. Có một số trường khác tuân theo kích thước cửa sổ, bao gồm Kích thước phân đoạn tối đa (MSS).

Trường cuối cùng ( chiều dài 33 ) chứa độ dài của gói tổng thể được tcpdump bắt.

3. Giới hạn số lượng gói tin đã chụp

Trong khi chạy lệnh tcpdump lần đầu tiên, bạn có thể nhận thấy rằng hệ thống tiếp tục bắt các gói mạng cho đến khi bạn truyền tín hiệu ngắt. Bạn có thể ghi đè hành vi mặc định này bằng cách chỉ định số lượng gói bạn muốn nắm bắt trước bằng cách sử dụng -NS lá cờ.

tcpdump --interface any -c 10

Lệnh nói trên sẽ bắt mười gói tin từ bất kỳ giao diện mạng nào đang hoạt động.

4. Lọc gói tin dựa trên trường

Khi bạn đang khắc phục sự cố, việc tải một khối văn bản lớn trên thiết bị đầu cuối của bạn không làm cho việc đó trở nên dễ dàng hơn. Đó là lúc tính năng lọc trong tcpdump phát huy tác dụng. Bạn có thể lọc các gói theo nhiều trường khác nhau bao gồm máy chủ lưu trữ, giao thức, số cổng, v.v.

Để chỉ nắm bắt các gói TCP, hãy nhập:

tcpdump --interface any -c 5 tcp

Tương tự, nếu bạn muốn lọc đầu ra bằng số cổng:

tcpdump --interface any -c 5 port 50

Lệnh được đề cập ở trên sẽ chỉ lấy các gói được truyền qua cổng được chỉ định.

Để nhận chi tiết gói cho một máy chủ cụ thể:

tcpdump --interface any -c 5 host 112.123.13.145

Nếu bạn muốn lọc các gói được gửi hoặc nhận bởi một máy chủ cụ thể, hãy sử dụng src hoặc Vân vân đối số với lệnh.

tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145

Bạn cũng có thể sử dụng các toán tử logic hoặc để kết hợp hai hoặc nhiều biểu thức với nhau. Ví dụ, để lấy các gói thuộc về IP nguồn 112.123.13.145 và sử dụng cổng 80 :

tcpdump --interface any -c 10 src 112.123.13.145 and port 80

Các biểu thức phức tạp có thể được nhóm lại với nhau bằng cách sử dụng dấu ngoặc đơn như sau:

tcpdump --interface any -c 10 '(src 112.123.13.145 or src 234.231.23.234) and (port 45 or port 80)'

5. Xem Nội dung của Gói

Bạn có thể dùng -ĐẾN-NS cờ bằng lệnh tcpdump để phân tích nội dung của gói mạng. Các -ĐẾN cờ là viết tắt của ASCII định dạng và -NS biểu thị hệ thập lục phân định dạng.

Để xem nội dung của gói mạng tiếp theo được hệ thống bắt:

tcpdump --interface any -c 1 -A
tcpdump --interface any -c 1 -x

Liên quan: Mất gói là gì và cách khắc phục nguyên nhân?

6. Lưu dữ liệu Capture vào một tệp

Nếu bạn muốn lưu dữ liệu chụp cho mục đích tham khảo, tcpdump luôn sẵn sàng trợ giúp bạn. Chỉ cần vượt qua -trong gắn cờ với lệnh mặc định để ghi đầu ra vào một tệp thay vì hiển thị nó trên màn hình.

tcpdump --interface any -c 10 -w data.pcap

Các .pcap phần mở rộng tệp là viết tắt của chụp gói tin dữ liệu. Bạn cũng có thể đưa ra lệnh nói trên ở chế độ tiết bằng cách sử dụng -v lá cờ.

tcpdump --interface any -c 10 -w data.pcap -v

Để đọc một .pcap tập tin bằng tcpdump, sử dụng -NS cờ theo sau là đường dẫn tệp. Các -NS viết tắt của Đọc .

sử dụng đĩa windows 10 ở mức 100%
tcpdump -r data.pcap

Bạn cũng có thể lọc các gói mạng từ dữ liệu gói được lưu trong tệp.

tcpdump -r data.pcap port 80

Giám sát lưu lượng mạng trên Linux

Nếu bạn đã được giao nhiệm vụ quản lý một máy chủ Linux, thì lệnh tcpdump là một công cụ tuyệt vời để đưa vào kho vũ khí của bạn. Bạn có thể dễ dàng khắc phục các sự cố liên quan đến mạng bằng cách bắt các gói được truyền trên mạng của bạn trong thời gian thực.

Nhưng trước khi tất cả những điều đó, thiết bị của bạn phải được kết nối với internet. Đối với những người mới bắt đầu sử dụng Linux, ngay cả việc kết nối với Wi-Fi qua dòng lệnh cũng có thể hơi khó khăn. Nhưng nếu bạn đang sử dụng các công cụ phù hợp, thì chỉ trong tích tắc.

Đăng lại Đăng lại tiếng riu ríu E-mail Cách kết nối với Wi-Fi thông qua thiết bị đầu cuối Linux với Nmcli

Bạn muốn kết nối với mạng Wi-Fi thông qua dòng lệnh Linux? Đây là những gì bạn cần biết về lệnh nmcli.

Đọc tiếp
Chủ đề liên quan
  • Linux
  • Bảo vệ
  • Pháp y mạng
Giới thiệu về tác giả Deepesh Sharma(Đã xuất bản 79 bài báo)

Deepesh là Junior Editor cho Linux tại MUO. Anh ấy viết các hướng dẫn thông tin về Linux, nhằm mục đích cung cấp trải nghiệm thú vị cho tất cả những người mới đến. Không chắc về phim, nhưng nếu bạn muốn nói về công nghệ, anh ấy là người của bạn. Khi rảnh rỗi, bạn có thể bắt gặp anh ấy đọc sách, nghe các thể loại âm nhạc khác nhau hoặc chơi guitar.

Xem thêm từ Deepesh Sharma

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký