Wireshark: Phân tích gói tin mạng thiết yếu dành cho chuyên gia CNTT

Networking tutorial - IT technology blog
Networking tutorial - IT technology blog

Wireshark: Phân tích gói tin mạng thiết yếu dành cho chuyên gia CNTT

Để quản lý CNTT hiệu quả, bạn cần hiểu rõ những gì đang diễn ra trong mạng của mình. Cho dù bạn đang xử lý sự cố kết nối, chẩn đoán hiệu suất ứng dụng hay điều tra các sự cố bảo mật, việc kiểm tra lưu lượng mạng thô là rất quan trọng. Đây là một kỹ năng không thể thiếu đối với các chuyên gia CNTT. Wireshark là công cụ tiêu chuẩn trong ngành. Nó cung cấp cái nhìn chi tiết về các gói tin di chuyển qua các giao diện mạng của bạn.

Nhiều chuyên gia CNTT bắt đầu chẩn đoán mạng bằng các công cụ dòng lệnh cơ bản. Các công cụ này rất tốt để kiểm tra nhanh, nhưng chúng có những hạn chế rõ ràng. Tại đây, chúng ta sẽ khám phá cách Wireshark nâng cao đáng kể khả năng chẩn đoán của bạn.

So sánh phương pháp: Công cụ cơ bản so với Kiểm tra gói tin chuyên sâu

Các tiện ích mạng dòng lệnh

  • ping: Lý tưởng để xác minh kết nối cấp độ IP cơ bản và đo thời gian khứ hồi đến một máy chủ.
  • traceroute (hoặc tracert trên Windows): Lập bản đồ đường đi của các gói tin đến một đích, giúp xác định các vấn đề định tuyến hoặc điểm nóng độ trễ.
  • netstat (hoặc ss trên Linux): Hiển thị các kết nối mạng đang hoạt động, bảng định tuyến và thống kê giao diện. Rất hữu ích để xem các cổng nào đang mở và lắng nghe trên máy cục bộ.
  • ipconfig (Windows) / ifconfig (Linux/macOS, mặc dù thường được thay thế bằng ip a): Hiển thị cấu hình giao diện mạng, địa chỉ IP và địa chỉ MAC.

Mặc dù nhanh chóng và đơn giản, các công cụ này chỉ cung cấp cái nhìn tổng quan, cấp cao. Tiện ích của chúng giảm đi nhanh chóng khi vấn đề phức tạp hơn. Chẳng hạn, nếu vấn đề không chỉ đơn giản là ‘không thể tiếp cận máy chủ’ hoặc ‘cổng bị đóng’, các công cụ này sẽ không đủ. Bạn có thể thấy rằng một kết nối thất bại, nhưng không biết tại sao nó thất bại – máy chủ phản hồi quá chậm? Tường lửa có âm thầm loại bỏ các gói tin không? Ứng dụng có gửi các yêu cầu bị lỗi định dạng không?

Wireshark: Công cụ kiểm tra gói tin chuyên sâu

Ngược lại, Wireshark thu thập và phân tích mọi gói tin đi qua giao diện mạng mà bạn đã chọn. Nó diễn giải các chi tiết phức tạp của nhiều giao thức, trình bày chúng dưới dạng dễ đọc. Điều này cho phép bạn tái tạo các cuộc hội thoại, xác định lỗi giao thức, phân tích các vấn đề về thời gian và xem chính xác dữ liệu đang được trao đổi. Hãy coi nó như một tầm nhìn X-quang cho lưu lượng mạng của bạn.

Wireshark: Ưu và nhược điểm

Ưu điểm:

  • Cái nhìn sâu sắc chi tiết: Cung cấp cái nhìn sâu sắc chi tiết, hiển thị mọi bit và byte cho phân tích mạng chuyên sâu nhất.
  • Giải mã giao thức: Hiểu hàng nghìn giao thức, trình bày dữ liệu ở định dạng có cấu trúc, dễ đọc.
  • Lọc mạnh mẽ: Khả năng lọc bắt gói và hiển thị mở rộng cho phép bạn cô lập lưu lượng liên quan một cách hiệu quả.
  • Thiết yếu cho xử lý sự cố: Thiết yếu để chẩn đoán kết nối chập chờn, ứng dụng chậm, các vấn đề tuân thủ giao thức và các bất thường về bảo mật.
  • Đa nền tảng: Có sẵn trên Windows, Linux và macOS.
  • Miễn phí và mã nguồn mở: Dễ dàng truy cập và được hỗ trợ bởi một cộng đồng lớn.

Nhược điểm:

  • Đường cong học tập dốc: Lượng thông tin khổng lồ có thể gây choáng ngợp cho người mới bắt đầu.
  • Hiệu suất bị ảnh hưởng: Bắt nhiều lưu lượng trên một liên kết bận rộn có thể tiêu tốn đáng kể tài nguyên hệ thống.
  • Yêu cầu chế độ Promiscuous: Thường cần quyền hạn cao hơn để bắt tất cả lưu lượng trên một phân đoạn, điều này không phải lúc nào cũng khả thi hoặc mong muốn.
  • Mối lo ngại về quyền riêng tư: Bắt lưu lượng thô có nghĩa là nhìn thấy dữ liệu nhạy cảm nếu nó không được mã hóa. Luôn lưu ý đến các hàm ý đạo đức và pháp lý.
  • Khối lượng dữ liệu: Các bản ghi bắt gói lớn có thể nhanh chóng làm đầy không gian đĩa và khó điều hướng nếu không có bộ lọc phù hợp.

Thiết lập được đề xuất: Chuẩn bị Wireshark

Trước khi bạn có thể phân tích các gói tin, bạn cần cài đặt Wireshark. Việc cài đặt rất đơn giản trên các hệ điều hành chính.

Cài đặt

Linux (dựa trên Debian/Ubuntu):


sudo apt update
sudo apt install wireshark

Trong quá trình cài đặt, bạn có thể sẽ được hỏi liệu người dùng không phải root có nên bắt gói tin hay không. Chọn ‘Yes’ (Có) và sau đó thêm người dùng của bạn vào nhóm wireshark:


sudo usermod -aG wireshark $USER

Bạn sẽ cần đăng xuất và đăng nhập lại để các thay đổi nhóm có hiệu lực.

Windows:

Tải xuống trình cài đặt chính thức từ trang web của Wireshark. Chạy trình cài đặt và làm theo hướng dẫn. Đảm bảo bạn cài đặt NPcap, công cụ này là bắt buộc để bắt gói tin trên Windows.

macOS:

Tải xuống trình cài đặt macOS chính thức từ trang web của Wireshark. Cài đặt nó, và nó sẽ nhắc bạn cài đặt một thư viện bắt gói (thường là Npcap hoặc một trình điều khiển tương tự).

Cấu hình ban đầu và lựa chọn giao diện

Sau khi cài đặt, khởi chạy Wireshark. Màn hình chào mừng liệt kê các giao diện mạng khả dụng. Đây là những điểm mà Wireshark sử dụng để ‘lắng nghe’ lưu lượng. Các giao diện phổ biến bao gồm:

  • eth0 hoặc enpXsY (Linux): Bộ điều hợp Ethernet có dây của bạn.
  • wlan0 hoặc wlpXsY (Linux): Bộ điều hợp không dây của bạn.
  • Ethernet hoặc Wi-Fi (Windows/macOS): Các bộ điều hợp có dây/không dây tương ứng.
  • Loopback (lo hoặc 127.0.0.1): Lưu lượng bắt nguồn và kết thúc trên máy cục bộ của bạn.

Bạn thường sẽ chọn giao diện đang mang lưu lượng mà bạn muốn phân tích. Chẳng hạn, nếu bạn đang xử lý sự cố kết nối internet, bạn sẽ chọn giao diện có dây hoặc không dây chính của mình.

Hướng dẫn triển khai: Phân tích gói tin thực tế với Wireshark

Hãy cùng khám phá một số tình huống phổ biến để xem Wireshark hoạt động như thế nào.

1. Bắt gói tin (Capturing Traffic)

Sau khi chọn giao diện của bạn, bạn có thể bắt đầu bắt gói tin ngay lập tức bằng cách nhấp vào biểu tượng vây cá màu xanh lam "Start capturing packets" (Bắt đầu bắt gói tin) hoặc điều hướng đến Capture > Start. Bạn sẽ thấy một luồng gói tin nếu mạng của bạn đang hoạt động. Để dừng, nhấp vào biểu tượng hình vuông màu đỏ "Stop capturing packets" (Dừng bắt gói tin).

2. Sử dụng bộ lọc bắt gói (Capture Filters)

Bộ lọc bắt gói, sử dụng cú pháp BPF, được áp dụng trước khi các gói tin được ghi vào tệp bắt gói. Điều này làm giảm cả kích thước tệp và chi phí hệ thống. Chúng được nhập vào thanh bộ lọc phía trên danh sách giao diện trên màn hình chào mừng.

Vấn đề: Máy của bạn chậm, và bạn nghi ngờ một ứng dụng gây nhiều lưu lượng đang giao tiếp với một máy chủ cụ thể (ví dụ: 192.168.1.100).

Nguyên nhân gốc rễ: Lưu lượng quá mức đến/đi từ máy chủ đó, hoặc có thể là việc sử dụng giao thức không mong muốn.

Giải pháp: Chỉ bắt gói tin liên quan đến máy chủ đó.


host 192.168.1.100

Hoặc, nếu bạn chỉ quan tâm đến lưu lượng web đến/đi từ máy chủ đó:


host 192.168.1.100 and port 80

Áp dụng bộ lọc này trước khi bắt đầu bắt gói. Bạn sẽ chỉ thấy các gói tin phù hợp với tiêu chí này trong quá trình bắt gói trực tiếp của mình.

3. Sử dụng bộ lọc hiển thị (Display Filters)

Bộ lọc hiển thị, sử dụng cú pháp riêng của Wireshark, được áp dụng sau khi các gói tin đã được bắt. Tính năng này cực kỳ mạnh mẽ cho việc phân tích hậu kỳ.

Vấn đề: Bạn có một tệp bắt gói lớn và cần nhanh chóng tìm tất cả các yêu cầu HTTP.

Nguyên nhân gốc rễ: Quá nhiều nhiễu từ các giao thức khác.

Giải pháp: Áp dụng bộ lọc hiển thị HTTP.


http

Hoặc, để chỉ xem các truy vấn và phản hồi DNS:


dns

Bạn có thể kết hợp các bộ lọc bằng cách sử dụng các toán tử logic (and, or, not).

Vấn đề: Một ứng dụng web đang gặp sự cố kết nối chập chờn, đặc biệt là với các gói tin reset TCP.

Nguyên nhân gốc rễ: Nguồn gói tin TCP RST không xác định, có thể là tường lửa hoặc một máy chủ quá tải.

Giải pháp: Lọc các gói tin reset TCP để xác định người gửi.


tcp.flags.reset == 1

Sau đó, kiểm tra địa chỉ IP nguồn và đích. Điều này giúp xác định chính xác nơi các gói tin reset bắt nguồn.

4. Theo dõi luồng TCP/UDP (Following TCP/UDP Streams)

Một trong những tính năng hữu ích nhất của Wireshark là khả năng tái tạo các cuộc hội thoại. Nhấp chuột phải vào một gói tin TCP hoặc UDP và chọn "Follow > TCP Stream" (Theo dõi luồng TCP) hoặc "Follow > UDP Stream" (Theo dõi luồng UDP). Thao tác này sẽ mở một cửa sổ mới hiển thị toàn bộ quá trình trao đổi dữ liệu giữa hai điểm cuối cho kết nối cụ thể đó. Điều này vô giá để xem các yêu cầu/phản hồi HTTP, lệnh FTP hoặc bất kỳ dữ liệu lớp ứng dụng nào.

Vấn đề: Một ứng dụng đang gửi dữ liệu không mong muốn hoặc xác thực không đúng cách.

Nguyên nhân gốc rễ: Dữ liệu tải trọng (payload) hoặc tiêu đề xác thực bị định dạng sai.

Giải pháp: Theo dõi luồng TCP để xem chính xác dữ liệu lớp ứng dụng được trao đổi. Bạn thường có thể thấy các tiêu đề HTTP, dữ liệu POST hoặc thông tin cụ thể khác của giao thức. Điều này tiết lộ chính xác những gì ứng dụng đang gửi hoặc nhận.

5. Phân tích các vấn đề về hiệu suất

Wireshark cung cấp các số liệu thống kê có thể tiết lộ các nút thắt cổ chai về hiệu suất.

  • Biểu đồ I/O (I/O Graph): Đi tới Statistics > I/O Graph. Điều này trực quan hóa tốc độ gói tin theo thời gian, giúp bạn phát hiện các đợt tăng đột biến hoặc lưu lượng cao liên tục.
  • Các cuộc hội thoại (Conversations): Đi tới Statistics > Conversations. Điều này cho thấy các điểm cuối nào đang giao tiếp nhiều nhất, giúp xác định các máy khách hoặc máy chủ gây nhiều lưu lượng.
  • Biểu đồ luồng TCP (TCP Stream Graphs): Đối với các luồng TCP, nhấp chuột phải vào một gói tin và đi tới Statistics > TCP Stream Graphs > Round Trip Time (Thời gian khứ hồi) hoặc Throughput (Thông lượng). Các biểu đồ này rất tuyệt vời để trực quan hóa độ trễ và tốc độ dữ liệu hiệu quả trong một kết nối cụ thể.

Kinh nghiệm cá nhân: Tôi nhớ có lần một ứng dụng web nội bộ thỉnh thoảng rất chậm. Người dùng phàn nàn rằng các trang tải mất rất nhiều thời gian, nhưng các số liệu máy chủ lại có vẻ bình thường. Các phương pháp xử lý sự cố tiêu chuẩn không mang lại kết quả nào. Tôi đã triển khai Wireshark trên máy chủ web. Tôi bắt gói tin trong một khoảng thời gian được báo cáo là chậm.

Việc lọc tcp.analysis.retransmission ngay lập tức làm nổi bật nhiều lần truyền lại TCP hướng tới máy chủ cơ sở dữ liệu của chúng tôi. Vấn đề không phải là cơ sở dữ liệu. Thayronidazole đó, một cạc mạng bị lỗi trên máy chủ web đã âm thầm loại bỏ các gói tin đi. Điều này dẫn đến sự chậm trễ khi TCP truyền lại các phân đoạn bị mất. Cái nhìn sâu sắc của Wireshark ở đây đã giúp tiết kiệm hàng giờ điều tra vô ích vào mã ứng dụng hoặc các truy vấn cơ sở dữ liệu. Tôi đã áp dụng phương pháp này trong môi trường sản xuất nhiều lần, và kết quả luôn ổn định.

Cái nhìn sâu sắc ở cấp độ này là nơi Wireshark vượt trội. Nó cho phép bạn vượt ra ngoài các triệu chứng và khám phá nguyên nhân gốc rễ thực sự.

Kết luận

Wireshark là một công cụ mạnh mẽ, mặc dù phức tạp, dành cho bất kỳ ai trong lĩnh vực CNTT. Nó cung cấp cái nhìn rõ ràng về hoạt động mạng. Điều này cho phép chẩn đoán chính xác các vấn đề mà nếu không sẽ khó xác định.

Bằng cách hiểu các khả năng của nó—bắt gói, lọc và phân tích dữ liệu gói tin—bạn sẽ có được một kỹ năng quan trọng. Điều này sẽ giúp bạn giải quyết ngay cả những vấn đề mạng và ứng dụng khó nhằn nhất. Bắt đầu với các bộ lọc đơn giản, sau đó dần dần khám phá các tính năng nâng cao. Bạn sẽ sớm thấy Wireshark không thể thiếu trong bộ công cụ của mình.

Share: