4 cách xác định sự cố mất mạng không thể tránh khỏi trên Linux

Tác giả Starlink, T.Mười 16, 2025, 09:00:06 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Khởi động lại bộ định tuyến hoặc máy tính chỉ có thể giải quyết được một phần vấn đề. Bạn cần xác định nguyên nhân gây ra sự cố để khắc phục.

Bạn đã bao nhiêu lần khắc phục sự cố mạng bằng cách khởi động lại bộ định tuyến hoặc máy tính? Cách này hiệu quả trong trường hợp khẩn cấp, nhưng không giải quyết được các vấn đề dai dẳng; thay vào đó, bạn phải xác định nguyên nhân gốc rễ. Tôi có bốn công cụ thường dùng để xác định chính xác hầu hết các sự cố mạng trên Linux.


1. Ping: Điểm dừng chân đầu tiên

Ping hẳn đã quen thuộc với hầu hết mọi người, và nó luôn là công cụ đầu tiên để bắt đầu xử lý sự cố mạng. Ping lấy tên từ sonar vì hoạt động tương tự. Khi bạn gửi lệnh ping, nó sẽ nhận được phản hồi, tương tự như ping sonar khi nó phản xạ âm thanh từ các vật thể. Ping gửi một gói tin đặc biệt gọi là ICMP (Giao thức Tin nhắn Điều khiển Internet) và chờ phản hồi.

Khi bạn thực hiện lệnh ping, nó sẽ định kỳ gửi một gói tin mỗi giây. Trong cửa sổ terminal, lệnh ping hiển thị thời gian khứ hồi (RTT), tức là tổng thời gian cần thiết để gửi và nhận phản hồi.

Mã nguồn [Chọn]
ping 8.8.8.8   

Bạn thường sử dụng ping trong các trường hợp sau:

    Xác định xem máy chủ có hoạt động không
    Xác định xem kết nối có độ trễ cao không
    Xác định xem kết nối của bạn có hoạt động không

Khi kết nối mạng của tôi bị gián đoạn (thường là Wi-Fi), tôi thường ping đến một máy chủ được biết là hoạt động tốt. Khi ping thất bại, kết quả không rõ ràng, vì bất kỳ phần nào của kết nối đều có thể là nguyên nhân. Tuy nhiên, nó nhanh chóng xác định rằng mạng của bạn đang gặp sự cố. Giờ đây, bạn có thể tìm hiểu sâu hơn bằng các công cụ sau.

Ping là một công cụ GNU tiêu chuẩn và là một phần của mọi hệ thống Linux. Tuy nhiên, để sử dụng nó, bạn có thể cần tìm hiểu cách hiểu các thông số ping, vốn không dễ nhận biết.

2. Dig: Khi Ping hoạt động nhưng trang web của bạn vẫn không tải được

Khi ping hoạt động thành công, điều đó có nghĩa là bạn có kết nối hoạt động ở cấp độ IP. Tuy nhiên, để kết nối thành công, các ứng dụng như trình duyệt web cần phải dịch tên miền sang địa chỉ IP. Đôi khi quá trình dịch đó chính là thủ phạm, vì vậy chúng ta cần một cách để phát hiện các sự cố như vậy.

Quá trình dịch tên miền sang địa chỉ IP được gọi là phân giải DNS (Hệ thống Tên miền). Khi bạn nhập   Đăng nhập để xem liên kết vào thanh URL của trình duyệt web, trình duyệt sẽ gửi yêu cầu đến hệ thống để phân giải tên miền thành địa chỉ IP. Hệ thống sau đó sẽ gửi yêu cầu đến máy chủ DNS đã được cấu hình (thường do ISP của bạn cung cấp). Quá trình này phức tạp hơn thế, nhưng cốt lõi của nó là như vậy. Phản hồi là một bản ghi DNS ánh xạ tên miền sang địa chỉ IP.

Hoàn toàn có khả năng bạn có kết nối internet hoạt động nhưng không thể phân giải tên miền. Ví dụ: nếu bạn chạy lệnh ping và nhận được phản hồi nhưng không thể truy cập bất kỳ trang web nào trên trình duyệt, thì đó là dấu hiệu cho thấy khả năng phân giải DNS của bạn bị lỗi.

Dig là một công cụ tuyệt vời giúp tiết lộ rất nhiều thông tin DNS cho máy chủ mong muốn. Ở mức cơ bản nhất, chúng ta có thể sử dụng dig để xem liệu có thể phân giải tên miền hay không. Ví dụ: chạy lệnh sau để xem   Đăng nhập để xem liên kết có địa chỉ IP là bao nhiêu.

Mã nguồn [Chọn]
dig example.com   

Đôi khi hệ thống hoặc máy chủ DNS của bạn sẽ lưu trữ phản hồi trong bộ nhớ đệm trong một khoảng thời gian ngắn, nghĩa là nó có thể trả về các giá trị cũ. Tham số "+trace" trong ví dụ sau sẽ khiến dig bỏ qua bộ nhớ đệm và bắt đầu với các máy chủ gốc DNS. DNS là một chủ đề phức tạp nhưng hấp dẫn, và máy chủ gốc về cơ bản là nơi bắt đầu tất cả quá trình phân giải DNS trên internet. Tham số "+short" chỉ giữ cho đầu ra sạch sẽ.

Mã nguồn [Chọn]
dig +trace +short example.com   

Tôi thường xuyên sử dụng lệnh dig. Đầu tiên, tôi dùng lệnh ping, và nếu cần, tôi sẽ chạy lệnh dig để xác định xem có vấn đề về phân giải DNS hay không. Thông thường, đến bước này, bạn sẽ giải quyết được hầu hết các sự cố mạng.

Để cài đặt dig trên Debian, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo apt install knot-dnsutils   
Để cài đặt dig trên Fedora, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo dnf install bind-utils   
Để cài đặt dig trên Arch Linux, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo pacman -S bind-tools   
3. Nmap: Khi bạn không chắc chắn liệu mục tiêu của bạn có lưu trữ dịch vụ hay không

Nmap là công cụ tôi sử dụng để kiểm tra xem một dịch vụ có thể nhận được yêu cầu kết nối của tôi hay không—ví dụ: dịch vụ tự lưu trữ hoặc dịch vụ từ xa trên Internet.

Nmap là một công cụ quét cổng và rất nổi tiếng trong lĩnh vực kiểm thử thâm nhập (bảo mật máy tính). Nó cực kỳ linh hoạt và có thể thực hiện nhiều loại yêu cầu mạng, mô phỏng nhiều tình huống khác nhau. Phần lớn, chúng tôi chỉ quan tâm đến TCP vì nó là xương sống của Internet. Để khởi tạo kết nối TCP, trước tiên máy tính thực hiện bắt tay ba bước. Quá trình này bao gồm các bước sau:

    SYN (hello): Yêu cầu đồng bộ hóa (máy khách→máy chủ)
    SYN-ACK (xin chào, bạn khỏe không?): Xác nhận đồng bộ hóa (máy chủ → máy khách)
    ACK (tốt, cảm ơn): Xác nhận (máy khách→máy chủ)

Chúng ta chỉ quan tâm đến bước 1: đồng bộ hóa. Chúng ta muốn gửi yêu cầu đồng bộ hóa đến một cổng cụ thể (ví dụ: máy chủ web trên cổng 80 hoặc 443) và xem máy chủ có phản hồi không.

Mã nguồn [Chọn]
sudo nmap -sS example.com -p 80,443   

Các cờ cho lệnh như sau:

    "-sS": Thực hiện quét SYN
    "-p": Chỉ định các cổng TCP để giao tiếp với

Chúng tôi gửi một gói SYN đến các cổng TCP 80 và 443, đây là các cổng dịch vụ HTTP và HTTPS.

Đừng quên sử dụng cờ "-p" để thu hẹp phạm vi quét xuống các cổng cụ thể, vì nếu không, bạn sẽ quét 1000 cổng đầu tiên (hành vi mặc định), trông có vẻ đáng ngờ.

Điều quan trọng cần lưu ý là đây chỉ là những yêu cầu đồng bộ hóa TCP đơn giản, và mọi kết nối TCP bạn thực hiện—kể cả với trình duyệt web—đều gửi đi những yêu cầu như vậy, nên chúng hoàn toàn vô hại. Chỉ cần sử dụng cờ "-p" để tránh đồng bộ hóa với nhiều cổng.

Để cài đặt Nmap trên Debian, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo apt install nmap   
Để cài đặt Nmap trên Fedora, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo dnf install nmap   
Để cài đặt Nmap trên Arch Linux, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo pacman -S nmap   
Nếu bạn muốn tìm hiểu thêm, chúng tôi có hướng dẫn trình bày những điều cơ bản về Nmap, chẳng hạn như cách thực hiện quét.

4. Wireshark: Khi bạn không biết chuyện gì đang xảy ra

Wireshark là một công cụ đánh hơi mạng, là cách toàn diện nhất để bạn giám sát mạng. Nói một cách đơn giản, một công cụ đánh hơi mạng ghi lại tất cả các dạng lưu lượng truyền qua đường truyền. Đây là một công cụ phức tạp, nhưng chúng ta có thể khai thác rất nhiều lợi ích từ nó chỉ bằng cách hiểu những kiến thức cơ bản về mạng, chẳng hạn như DNS, ICMP, cổng TCP hoặc địa chỉ IP. Nếu bạn hiểu những kiến thức cơ bản này, bạn có thể xác định được khi nào có sự cố.

Khi không chắc chắn về những gì đang xảy ra trên mạng của mình, tôi có thể sử dụng Wireshark để ghi lại tất cả lưu lượng. Tôi sẽ khởi động Wireshark và bắt đầu thăm dò mạng bằng các lệnh ping và yêu cầu, cố gắng tận dụng những khu vực có thể bị lỗi. Wireshark ghi lại lưu lượng đã ghi vào các tệp bắt gói tin (pcap). Các tệp này cho phép tôi phân tích lưu lượng (thông qua Wireshark) sau, khi tôi có thể tập trung hơn.

Wireshark cung cấp nhiều bộ lọc nâng cao cho phép tôi tập trung vào các gói tin có thuộc tính cụ thể và loại trừ các lưu lượng nhiễu khác. Nếu bạn quan tâm đến bộ lọc, tài liệu hướng dẫn về bộ lọc của Wireshark rất đầy đủ và hữu ích.

Để biết thêm thông tin về mạng của bạn, bạn có thể cần ghi lại lưu lượng truy cập trên nhiều nút. Điểm hữu ích nhất của tệp pcap là nhiều công cụ phân tích mạng hỗ trợ chúng; tcpdump cũng hỗ trợ chúng. Bạn có thể đăng nhập vào bộ định tuyến (nếu có thể) và ghi lại lưu lượng truy cập bằng tcpdump (nếu có đủ dung lượng), sau đó phân tích bằng Wireshark hoặc các công cụ khác.

Wireshark cho tôi khả năng hiển thị toàn diện mạng lưới của mình. Nếu không có nó, tôi chỉ có thể đoán mò.

Để cài đặt Wireshark trên Debian, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo apt install wireshark   
Để cài đặt Wireshark trên Fedora, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo dnf install wireshark   
Để cài đặt Wireshark trên Arch Linux, hãy thực hiện lệnh sau.

Mã nguồn [Chọn]
sudo pacman -S wireshark-qt   
Những công cụ này cung cấp đủ khả năng xử lý hầu hết các sự cố mạng gia đình thường gặp. Với chúng, tôi có thể:

    Nhanh chóng xác định trạng thái kết nối bằng lệnh ping
    Xác định các vấn đề giải quyết tên với dig
    Xác định xem dịch vụ từ xa có nên chấp nhận kết nối của tôi với Nmap không
    Có được cái nhìn toàn diện về lưu lượng mạng của tôi với Wireshark

Những công cụ này đã giúp tôi rất nhiều trong những năm qua khi xác định được 99% sự cố mạng khi chúng xảy ra. Tuy nhiên, vẫn còn rất nhiều lệnh mạng cơ bản khác mà mọi người dùng Linux nên biết.