Termshark: Phân tích gói tin ‘chuẩn Wireshark’ ngay trên Linux Terminal

Network tutorial - IT technology blog
Network tutorial - IT technology blog

Cơn ác mộng debug mạng qua SSH

Tôi từng kẹt giữa một sự cố dở khóc dở cười. Đó là khi cụm server dịch vụ của công ty bỗng dưng gặp lỗi kết nối chập chờn vào lúc 2 giờ sáng. Anh em trong team nghi ngờ firewall chặn nhầm hoặc quá trình bắt tay (handshake) TLS có vấn đề.

Lúc đó, tôi chỉ có quyền truy cập qua SSH. Công cụ sẵn có duy nhất là tcpdump. Tuy nhiên, dữ liệu đổ ra màn hình như một ma trận chữ nghĩa rối rắm. Để soi kỹ từng layer từ Ethernet đến HTTP, tôi buộc phải lưu file .pcap, dùng scp tải về máy cá nhân rồi mới mở bằng Wireshark.

Quy trình này cực kỳ tốn thời gian. Việc nhảy qua lại giữa Terminal và giao diện GUI khiến tôi dễ mất tập trung. Trong những tình huống hệ thống đang “cháy”, mỗi phút chờ tải file đều cực kỳ quý giá.

Tại sao tcpdump đôi khi là chưa đủ?

tcpdump là một huyền thoại, điều đó không cần bàn cãi. Nhưng khi cần đào sâu vào nội dung gói tin, nó lộ rõ vài điểm yếu khiến anh em kỹ thuật ức chế:

  • Rối mắt: Dạng text phẳng khiến việc phân tách các header giao thức trở nên khó khăn.
  • Thiếu linh hoạt: Bạn không thể dùng phím mũi tên để cuộn và kiểm tra nhanh từng gói tin.
  • Theo dõi luồng (Stream tracking) khó khăn: Việc bám theo một luồng TCP trên tcpdump là một thử thách thực sự nếu bạn không thuộc lòng các filter phức tạp.

Nhiều người chọn X11 Forwarding để đẩy giao diện Wireshark về máy local. Tuy nhiên, nếu ping cao trên 100ms, giao diện sẽ lag đến mức không thể thao tác.

Ba hướng tiếp cận phổ biến hiện nay

Để phân tích mạng trên môi trường dòng lệnh (CLI), chúng ta thường có 3 lựa chọn:

  1. Truyền thống: Xuất file .pcap bằng tcpdump rồi tải về máy. Cách này chậm và rườm rà.
  2. Sử dụng TShark: Phiên bản CLI của Wireshark. Nó rất mạnh nhưng hiển thị vẫn còn khô khan.
  3. Sử dụng Termshark: Đây chính là giải pháp tối ưu mà tôi muốn giới thiệu.

Termshark: Giao diện Wireshark thu nhỏ trong túi áo

Termshark là một Terminal UI (TUI) dành cho tshark, được viết bằng ngôn ngữ Go. Nó tái hiện hoàn hảo bố cục 3 khung hình kinh điển của Wireshark: Danh sách gói, chi tiết layer và dữ liệu Hex. Công cụ này chạy mượt mà qua SSH, không cần GUI và chiếm rất ít tài nguyên hệ thống.

Cài đặt nhanh trên Linux

Nếu máy bạn đã có môi trường Go, việc cài đặt chỉ mất vài giây:

go install github.com/gcla/termshark/v2/cmd/termshark@latest

Hoặc tải trực tiếp bản build sẵn từ GitHub để dùng ngay:

curl -LO https://github.com/gcla/termshark/releases/download/v2.4.0/termshark_2.4.0_linux_x64.tar.gz
tar -zxvf termshark_2.4.0_linux_x64.tar.gz
sudo mv termshark_2.4.0_linux_x64/termshark /usr/local/bin/

Lưu ý quan trọng: Đừng quên cài tshark trước vì đây là engine cốt lõi bên dưới:

sudo apt update && sudo apt install -y tshark

Ứng dụng thực tế trong công việc

Tôi thường dùng Termshark theo hai kịch bản điển hình dưới đây.

1. Bắt gói tin trực tiếp theo thời gian thực

Để kiểm tra traffic trên card mạng eth0, bạn chỉ cần gõ:

sudo termshark -i eth0

Giao diện sẽ hiện ra ngay lập tức. Bạn dùng phím Tab để chuyển giữa các khung và nhấn / để lọc filter. Ví dụ, nhập http.request.method == "POST" để tìm các yêu cầu gửi dữ liệu lên server.

2. Soi file log pcap có sẵn

Khi nhận được file log từ đồng nghiệp, tôi thường kiểm tra nhanh tại chỗ thay vì tải về máy:

termshark -r debug_capture.pcap

Hệ thống phím tắt cần nhớ

Để thao tác chuyên nghiệp như một “pro-user”, bạn nên thuộc lòng các phím sau:

  • Tab: Di chuyển qua lại giữa 3 khung hình.
  • Enter: Mở rộng hoặc đóng các chi tiết trong layer gói tin.
  • /: Kích hoạt thanh tìm kiếm filter (cú pháp y hệt Wireshark).
  • f: Tính năng Follow stream, cực hữu ích để xem toàn bộ nội dung trao đổi client-server.
  • q: Thoát chương trình nhanh chóng.

Kinh nghiệm thực chiến: Bài toán MTU

Tôi từng xử lý một ca khó liên quan đến lỗi MTU (Maximum Transmission Unit). Gói tin bị phân mảnh và bị drop tại một hop trung gian. Nhờ Termshark, tôi lọc nhanh icmp và soi thẳng vào flag Don't Fragment trong IP header ngay trên server gateway.

Nếu dùng cách cũ, tôi mất ít nhất 15 phút để tải file và phân tích. Với Termshark, mọi thứ xong xuôi trong chưa đầy 3 phút. Công cụ này cực nhẹ, chỉ tiêu tốn vài chục MB RAM, khác xa với mức hàng trăm MB của Wireshark bản GUI.

Lời kết

Termshark không thay thế hoàn toàn Wireshark, nhất là khi bạn cần vẽ biểu đồ phức tạp. Tuy nhiên, để debug nhanh và xử lý sự cố tại hiện trường, đây là công cụ vô đối. Hãy thử cài nó lên Jump Host hoặc Server Staging. Bạn sẽ sớm yêu cảm giác múa phím phân tích mạng mà không cần đụng đến con chuột.

Share: