Liên hệProfile
Danh mục

Mục Lục

    Cách dùng tcpdump để bắt gói tin trên Server và view realtime trên local bằng wireshark

    Nguyễn Hưng

    Ngày đăng:

    03/09/2025

    Cập nhật lần cuối:

    03/09/2025

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    03/09/2025

    Cập nhật lần cuối:

    03/09/2025

    Mục lục

    tcpdump thường rất mạnh mẽ cho thao tác dòng lệnh, nhưng phân tích dữ liệu dạng text lại rất phức tạp và tốn nhiều thời gian. Vì vậy, việc kết hợp khả năng bắt gói tin của tcpdump trên server với giao diện trực quan của Wireshark trên máy cá nhân, đồng thời xem realtime, là giải pháp hiệu quả cho quá trình phân tích mạng. Trong bài viết này, mình sẽ chia sẻ cho bạn cách bắt gói tin trên server và view realtime trên Local bằng wireshark chi tiết, hiệu quả.

    Những điểm chính

    • Định nghĩa tcpdump: Là công cụ dòng lệnh trên Linux/Unix để bắt và phân tích gói tin mạng, cho phép ghi, lọc và hiển thị dữ liệu theo thời gian thực hoặc lưu ra file.
    • Cách thức hoạt động của tcpdump: Lắng nghe trên giao diện mạng, bắt gói dữ liệu và hiển thị/ghi lại theo cấu trúc thống nhất.
    • Lợi ích khi sử dụng tcpdump: Xác định nhanh nguyên nhân sự cố mạng, giám sát an ninh, phân tích/tối ưu hiệu suất ứng dụng và là công cụ học tập về giao thức mạng.
    • Hướng dẫn Live capture packet: Kết hợp SSH với tcpdump trên server và Wireshark trên local qua lệnh ssh user@server_ip 'tcpdump -nn -i any -c 10000 -w - "ip and not port 22"' | sudo wireshark -k -i -.
    • Phân tích lệnh: Phần ssh thực thi lệnh trên server; tcpdump bắt gói tin với các tùy chọn và bộ lọc; phần | wireshark nhận dữ liệu và hiển thị trên Wireshark local.
    • Kịch bản nâng cao: Lọc gói tin hiệu quả hơn, xem Real-time, lưu ra file và hướng dẫn thực hiện cho người dùng Windows.
    • Lưu ý quan trọng: Tỷ lệ tcpdump an toàn, có thể lọc gói tin theo nhu cầu, kết hợp với Wireshark trên local để phân tích trực quan và cần cấu hình Firewall, cập nhật phần mềm, bảo mật SSH, sao lưu dữ liệu, giám sát tài nguyên để bảo vệ VPS.
    • Câu hỏi thường gặp: Giải đáp những câu hỏi thường gặp liên quan đến cách bắt gói tin bằng tcpdump.

    tcpdump là gì?

    tcpdump là một công cụ dòng lệnh mạnh mẽ, dùng để bắt và phân tích các gói dữ liệu mạng trên các hệ điều hành Linux/Unix. Công cụ này cho phép ghi lại, lọc cũng như hiển thị các gói tin đang được truyền qua giao diện mạng của máy tính trong thời gian thực hoặc lưu ra file để phân tích bằng phần mềm chuyên dụng như Wireshark.

    Ngoài ra, tcpdump còn hỗ trợ rất nhiều tùy chọn lọc (Theo IP, cổng, giao thức,…), giúp quản trị viên, kỹ sư mạng dễ dàng kiểm tra, theo dõi, phát hiện sự cố hoặc đánh giá bảo mật mạng. Đây là một trong những công cụ kiểm thử, giám sát và phân tích lưu lượng mạng phổ biến nhất hiện nay trên môi trường server không có giao diện đồ họa.

    tcpdump được dùng để bắt và phân tích các gói dữ liệu mạng trên các hệ điều hành Linux/Unix.
    tcpdump được dùng để bắt và phân tích các gói dữ liệu mạng trên các hệ điều hành Linux/Unix.

    Hình thức tồn tại của tcpdump

    Công cụ tcpdump hoạt động và trình bày kết quả theo hai hình thức chính. Khi được thực thi, tcpdump sẽ lắng nghe trên một card mạng được chỉ định, bắt các gói tin phù hợp với một biểu thức logic do người dùng cung cấp và hiển thị một bản tóm tắt trực tiếp trên màn hình theo thời gian thực. Ngoài ra, tcpdump còn cung cấp khả năng lưu lại toàn bộ nội dung của các gói tin đã bắt được vào một file, thường có định dạng .pcap. File này có thể được sử dụng để phân tích sâu hơn sau đó bằng chính lệnh tcpdump với tùy chọn -r hoặc thông qua các công cụ phân tích mạng đồ họa chuyên dụng như Wireshark.

    Trong trường hợp không có tùy chọn giới hạn số lượng gói tin, tcpdump sẽ tiếp tục chạy cho đến khi nhận được tín hiệu ngắt từ người dùng. Sau khi kết thúc quá trình, tcpdump sẽ hiển thị một báo cáo thống kê, bao gồm các thông tin sau:

    • Packet captured: Số lượng gói tin đã được bắt và xử lý.
    • Packet received by filter: Số lượng gói tin được bộ lọc tiếp nhận.
    • Packet dropped by kernel: Số lượng gói tin đã bị nhân hệ điều hành (kernel) bỏ qua, thường do bộ đệm không đủ.
    Thông tin tcpdump hiển thị trong báo cáo thống kê
    Thông tin tcpdump hiển thị trong báo cáo thống kê

    Một số tùy chọn trong lệnh tcpdump

    Tùy chọnMô tả
    Lựa chọn giao diện và gói tin
    -i <interface>Lắng nghe và bắt gói tin trên một giao diện mạng cụ thể.
    -DLiệt kê tất cả các giao diện mạng có sẵn mà tcpdump có thể lắng nghe.
    -c <N>Dừng việc bắt gói tin sau khi đã nhận đủ N gói.
    -s <size>Thiết lập kích thước tối đa của mỗi gói tin được bắt. Sử dụng -s 0 để bắt toàn bộ gói tin.
    -F <tệp_tin>Sử dụng các quy tắc lọc từ một file được chỉ định thay vì nhập trực tiếp trên dòng lệnh.
    Định dạng hiển thị
    -nKhông phân giải địa chỉ IP thành tên miền.
    -nnKhông phân giải địa chỉ IP và cả số cổng thành tên dịch vụ.
    -v, -vv, -vvvHiển thị thông tin chi tiết hơn về gói tin. Mức độ chi tiết tăng dần với -vv -vvv.
    -qHiển thị kết quả một cách ngắn gọn, ít chi tiết hơn.
    -x, -A-x: Hiển thị nội dung gói tin ở định dạng Hexadecimal.
    -A: Hiển thị nội dung gói tin ở định dạng ASCII.
    -eHiển thị địa chỉ MAC (liên kết lớp 2) của người gửi và người nhận trong kết quả.
    -t, -tt-t: Không hiển thị dấu thời gian trên mỗi dòng.
    -tt: Hiển thị dấu thời gian dưới dạng số Unix.
    -NKhông hiển thị phần tên miền đủ điều kiện (FQDN). Ví dụ: host thay vì host.example.com.
    Thao tác với file
    -w <tệp_tin>Ghi lại các gói tin đã bắt được vào một file có định dạng .pcap để phân tích sau.
    -r <tệp_tin>Đọc và phân tích các gói tin từ một file .pcap đã được ghi lại trước đó.
    Nâng cao và tùy chỉnh khác
    -SHiển thị số thứ tự tuyệt đối thay vì tương đối.
    -KKhông thực hiện việc kiểm tra tổng kiểm của các gói tin.
    -B <size>Thiết lập kích thước bộ đệm cho việc bắt gói tin.
    -LLiệt kê các loại liên kết dữ liệu mà giao diện mạng hỗ trợ.
    -y <type>Lựa chọn một loại liên kết dữ liệu cụ thể để bắt gói tin.

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

    tcpdump hoạt động bằng cách lắng nghe trên giao diện mạng của máy tính, nhận diện mọi gói dữ liệu truyền tới hoặc rời khỏi máy và cho phép bạn xem trực tiếp hoặc lưu lại nội dung giao tiếp mạng đó để phân tích sau. Bạn có thể sử dụng lệnh lọc để chỉ bắt các gói tin phù hợp với nhu cầu, qua đó giúp dễ dàng kiểm tra, gỡ lỗi hoặc phân tích mạng. Ngoài ra, tcpdump còn có thể lưu lại dữ liệu thành file để phân tích sau bằng các công cụ khác như Wireshark.

    tcpdump hoạt động bằng cách lắng nghe trên giao diện mạng của máy tính
    tcpdump hoạt động bằng cách lắng nghe trên giao diện mạng của máy tính (Nguồn: Internet)

    Các lợi ích khi sử dụng tcpdump

    • Công cụ tcpdump giúp bạn xác định nhanh nguyên nhân của các vấn đề mạng thông qua việc phân tích dữ liệu thô.
    • tcpdump hỗ trợ hiệu quả việc giám sát an ninh bằng cách phát hiện các hoạt động mạng bất thường như quét cổng hoặc các kết nối trái phép.
    • Việc sử dụng tcpdump cho phép bạn phân tích và tối ưu hóa hiệu suất ứng dụng bằng cách kiểm tra độ trễ và tình trạng mất gói tin.
    • Công cụ tcpdump đóng vai trò như một phương tiện học tập giá trị, giúp bạn hiểu sâu hơn về cách các giao thức mạng vận hành trên thực tế.
    Các lợi ích khi sử dụng tcpdump
    Các lợi ích khi sử dụng tcpdump

    Tìm hiểu định dạng chung của một dòng giao thức Tcpdump

    Khi tcpdump thu thập và hiển thị thông tin về một gói tin TCP, mỗi dòng đầu ra sẽ tuân theo một cấu trúc thống nhất. Việc hiểu rõ cấu trúc này là yếu tố then chốt để bạn có thể diễn giải chính xác luồng giao tiếp mạng. Một dòng thông tin TCP điển hình có định dạng chung như sau:

    [Timestamp] [Protocol] [Source IP].[Source Port] > [Destination IP].[Destination Port]: [Flags], [Sequence Numbers], [Window Size], [Options], [Data Length]

    Mỗi thành phần trong định dạng này cung cấp một thông tin quan trọng về gói tin:

    • 1. Dấu thời gian: Trường đầu tiên của dòng ghi lại thời điểm chính xác khi gói tin được thu thập bởi card mạng, với độ chính xác đến micro giây.
    • 2. Thông tin giao thức và nguồn/đích: Phần tiếp theo xác định giao thức lớp mạng (Thường là IP hoặc IPv6), theo sau là địa chỉ IP nguồn và cổng nguồn, ngăn cách bởi dấu >, sau đó là địa chỉ IP đích và cổng đích.
    • 3. Cờ TCP (Flags): Mục Flags là một chỉ báo quan trọng về trạng thái và mục đích của gói tin trong một phiên kết nối TCP. Mỗi ký tự đại diện cho một cờ điều khiển khác nhau:
      • [S] (SYN): Gói tin dùng để khởi tạo một kết nối mới.
      • [P] (PUSH): Gói tin yêu cầu hệ điều hành của bên nhận đẩy dữ liệu lên cho ứng dụng ngay lập tức.
      • [F] (FIN): Gói tin dùng để yêu cầu đóng một kết nối.
      • [R] (RST): Gói tin dùng để đặt lại một kết nối một cách đột ngột, thường do lỗi.
      • [.] (Dấu chấm): Ký tự này là một cách viết tắt, thể hiện rằng cờ ACK (Acknowledgement) đã được thiết lập, xác nhận rằng dữ liệu đã được nhận.
    • 4. Số thứ tự và số xác nhận: Các số seqack là cơ chế cốt lõi đảm bảo tính toàn vẹn và đúng trình tự của dữ liệu trong giao thức TCP.
    • 5. Kích thước cửa sổ: Trường win thể hiện kích thước của cửa sổ nhận của bên gửi, tính bằng byte, thông báo cho bên nhận biết còn bao nhiêu dung lượng bộ đệm trống, đóng vai trò chính trong cơ chế kiểm soát luồng của TCP.
    • 6. Độ dài dữ liệu: Cuối cùng, trường length chỉ định độ dài của phần dữ liệu thực tế được vận chuyển trong gói tin.
    Tìm hiểu định dạng chung của một dòng giao thức Tcpdump
    Tìm hiểu định dạng chung của một dòng giao thức Tcpdump

    Các công cụ cần chuẩn bị

    Để thực hiện kỹ thuật này, bạn cần đảm bảo có sẵn các công cụ sau:

    • Trên Server:
      • tcpdump: Công cụ bắt gói tin dòng lệnh tiêu chuẩn trên hầu hết các hệ điều hành Linux.
      • Quyền truy cập SSH vào server.
    • Trên máy Local (Máy tính cá nhân):
      • Wireshark: Công cụ phân tích gói tin đồ họa hàng đầu.
      • Một SSH client (Terminal trên macOS/Linux hoặc PuTTY/WSL trên Windows).

    Hướng dẫn chi tiết cách bắt gói tin realtime

    Để live capture packet trên Server và view realtime trên máy local bằng wireshark, bạn sử dụng lệnh sau:

    ssh user@server_ip 'tcpdump -nn -i any -c 10000 -w - "ip and not port 22"' | sudo wireshark -k -i -

    Bây giờ, bạn hãy phân tích chi tiết dòng lệnh này.

    Bước 1: Phía Server – Thực thi tcpdump qua SSH

    Phần ssh user@server_ip '...' chịu trách nhiệm thực thi lệnh bắt gói tin trên máy chủ từ xa.

    • ssh user@server_ip: Khởi tạo một kết nối SSH đến server với userserver_ip tương ứng.
    • 'tcpdump ...': Lệnh được đặt trong dấu nháy đơn sẽ được thực thi trên server ngay sau khi kết nối thành công. Dưới đây là các tùy chọn của tcpdump:
      • -nn: Tùy chọn -nn giúp giữ nguyên địa chỉ IP và số port ở dạng số, không chuyển đổi thành tên miền hoặc tên dịch vụ, nhờ đó tốc độ hiển thị kết quả bắt gói dữ liệu sẽ nhanh và chính xác hơn do không phải chờ tra cứu DNS hoặc dịch vụ.
      • -i any: Lắng nghe trên tất cả các card mạng, nếu bạn muốn chỉ định một card mạng cụ thể (Ví dụ: card mạng public), bạn có thể dùng -i eth0.
      • -c 10000: tcpdump sẽ kết thúc sau khi capture đủ 10,000 packets.
      • -w -: Yêu cầu tcpdump ghi output ra luồng tiêu chuẩn, ký hiệu là -, thay vì ghi ra file .pcap để có thể chuyển hướng dữ liệu đi nơi khác.
      • "ip and not port 22": Là một bộ lọc để loại trừ chính traffic của phiên SSH mà chúng ta đang sử dụng (Thường chạy trên port 22). Nếu không có bộ lọc này, bạn sẽ tạo ra một vòng lặp vô hạn và làm nhiễu kết quả phân tích.
    Bước 1: Phía Server - Thực thi tcpdump qua SSH
    Phía Server thực thi tcpdump qua SSH

    Bước 2: Phía Local – Dùng Wireshark để lọc dữ liệu

    Phần | wireshark ... nhận dữ liệu từ tcpdump và hiển thị.

    • | (Pipeline): Là một toán tử của shell, có chức năng lấy toàn bộ standard output của lệnh bên trái (ssh...) và truyền đi để làm standard input cho lệnh bên phải (wireshark...).
    • wireshark: Khởi chạy ứng dụng Wireshark.
    • -k: Bắt đầu phiên bắt gói tin ngay lập tức.
    • -i -: Yêu cầu Wireshark đọc dữ liệu từ luồng tiêu chuẩn (standard input) với ký hiệu là -, thay vì từ một card mạng hay một file.
    Phía Local dùng Wireshark để lọc dữ liệu
    Phía Local dùng Wireshark để lọc dữ liệu

    Khi chạy lệnh, một cửa sổ Wireshark sẽ bật lên và bạn sẽ thấy các gói tin từ server xuất hiện trực tiếp, sẵn sàng để bạn phân tích.

    Cửa sổ Wireshark sẽ bật lên và bạn sẽ thấy các gói tin từ server xuất hiện trực tiếp.
    Cửa sổ Wireshark sẽ bật lên và bạn sẽ thấy các gói tin từ server xuất hiện trực tiếp.

    Kinh nghiệm

    Wireshark hỗ trợ nhiều tính năng thống kê cũng như phân tích rất tiện lợi khi lượng packet lớn. Với trường hợp bị tấn công DDoS phức tạp, Wireshark sẽ là giải pháp tốt mà bạn nên dùng để phân tích nhanh traffic trên server và ra phương án xử lý.

    Các kịch bản nâng cao và tùy chỉnh

    1. Lọc gói tin hiệu quả hơn

    Bạn có thể thay đổi bộ lọc của tcpdump để chỉ bắt những gì mình cần, giúp giảm nhiễu và tập trung vào vấn đề:

    • Lọc theo IP: host 1.2.3.4
    • Lọc theo cổng: port 443
    • Lọc theo giao thức: icmp hoặc arp
    • Kết hợp bộ lọc: host 8.8.8.8 and port 53 (Bắt gói tin DNS đến và đi từ server 8.8.8.8)

    Ví dụ: Để bắt gói tin ping (ICMP) đến server, bạn dùng lệnh sau:

    ssh user@server_ip 'tcpdump -nn -i any -U -s0 -w - "icmp"' | wireshark -k -i -

    2. Xem Real-time và lưu ra File

    Nếu muốn vừa phân tích trực tiếp, vừa lưu lại một bản .pcap để xem lại sau, bạn có thể dùng lệnh tee với cú pháp như sau:

    ssh user@server_ip 'tcpdump -i any -U -s0 -w - "not port 22"' | tee captured_from_server.pcap | wireshark -k -i -

    Lệnh tee sẽ sao chép luồng dữ liệu đi qua, một bản ghi ra file captured_from_server.pcap và một bản tiếp tục được đưa đến Wireshark.

    3. Dành cho người dùng Windows

    Nếu dùng Windows, bạn cần có PuTTY (Sử dụng plink.exe) hoặc WSL (Windows Subsystem for Linux).

    • Với PuTTY: Bạn cần đảm bảo đường dẫn đến plink.exeWireshark.exe là chính xác.
    • Powershell:
    & "C:\Program Files\PuTTY\plink.exe" -ssh -l user server_ip "tcpdump -i any -U -s0 -w - 'not port 22'" | & "C:\Program Files\Wireshark\Wireshark.exe" -k -i -
    • Với WSL: Dòng lệnh hoàn toàn tương tự như trên Linux.

    Câu hỏi thường gặp

    Tại sao nên dùng tcpdump thay vì Wireshark trực tiếp trên server?

    Tcpdump phù hợp với các server không có giao diện đồ họa, tiêu tốn rất ít tài nguyên, có khả năng lọc gói tin mạnh mẽ. Việc kết hợp với Wireshark trên máy cá nhân giúp bạn phân tích dữ liệu trực quan, tiết kiệm thời gian, tránh việc upload file lớn về local.

    Dùng lệnh tcpdump có an toàn không?

    Câu trả lời là Có. Lệnh hướng dẫn chỉ thực hiện thao tác đọc và xuất dữ liệu các gói tin mạng, không có tác động ghi hoặc làm thay đổi hệ thống.

    Có thể chỉ bắt gói tin của một giao thức/cổng nhất định không?

    Câu trả lời là Có. Bạn thay đổi bộ lọc trong lệnh tcpdump, ví dụ:
    – Theo IP: host 1.2.3.4
    – Theo cổng: port 443
    – Theo giao thức: icmp
    Kết hợp điều kiện bằng toán tử and, or, not tuỳ mục đích theo dõi.

    Kết luận

    Kỹ thuật kết hợp ssh, tcpdumpwireshark là một kỹ năng quan trọng đối với bất kỳ ai làm việc với hệ thống mạng, giúp việc gỡ lỗi phức tạp trên server từ xa trở nên trực quan và hiệu quả hơn. Bằng việc sử dụng thành thạo lệnh trên, bạn có thể nhanh chóng xác định và giải quyết các sự cố mạng, từ đó tiết kiệm được rất nhiều thời gian và công sức.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách sử dụng lệnh du Linux để kiểm tra lỗi full inode chi tiết
    Cách sử dụng lệnh du Linux để kiểm tra lỗi full inode chi tiết

    Du Linux là một công cụ dòng lệnh mạnh mẽ trong Linux, cho phép bạn xem tổng dung lượng đĩa đã sử dụng theo cấp độ thư mục. Bên cạnh việc kiểm tra dung lượng thông thường, công cụ này còn là chìa khóa để chẩn đoán và xử lý lỗi "full inode", một tình…

    17/10/2025

    Cách xóa dữ liệu trên hosting cực nhanh và đơn giản
    Cách xóa dữ liệu trên hosting cực nhanh và đơn giản

    Khi dung lượng hosting bị đầy hoặc tốc độ website giảm sút, việc xóa dữ liệu là một giải pháp cần thiết. Bài viết này mình sẽ cung cấp hướng dẫn chi tiết, từng bước cách xóa dữ liệu trên hosting an toàn và hiệu quả, giúp bạn giải phóng không gian lưu trữ và…

    17/10/2025

    Hướng dẫn chọn Hosting cho WordPress tốt nhất: Tối ưu tốc độ và độ ổn định
    Hướng dẫn chọn Hosting cho WordPress tốt nhất: Tối ưu tốc độ và độ ổn định

    Chọn hosting cho WordPress là quá trình lựa chọn dịch vụ lưu trữ web phù hợp để cài đặt và vận hành một website WordPress. Tuy nhiên, nhiều người khi mới bắt đầu thường gặp phải tình trạng website chậm, hay gặp lỗi và không biết nên lựa loại hosting nào phù hợp cho nền…

    08/10/2025

    VPS cấu hình khủng là gì? Lợi ích, cách chọn và trường hợp sử dụng
    VPS cấu hình khủng là gì? Lợi ích, cách chọn và trường hợp sử dụng

    VPS cấu hình khủng là giải pháp máy chủ ảo mạnh mẽ, được thiết kế để đáp ứng các nhu cầu về hiệu suất và ổn định cao cho website, ứng dụng hay các tác vụ đòi hỏi tài nguyên lớn. Trong bài viết này, mình sẽ cùng bạn khám phá về định nghĩa, các…

    06/10/2025