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

1. Ping: công cụ kiểm tra đầu tiên
Ping hẳn là 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 khắc phục sự cố mạng. Ping lấy tên từ sonar (thiết bị định vị thủy âm) vì nó hoạt động theo cách tương tự. Khi bạn gửi một “ping” đi, nó sẽ nhận được một phản hồi, rất giống với tiếng “ping” của 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 được gọi là ICMP (Internet Control Message Protocol) và chờ đợi phản hồi.
Khi bạn thực thi lệnh ping
, nó sẽ định kỳ gửi một gói tin mỗi giây. Trong cửa sổ terminal, ping hiển thị thời gian khứ hồi (RTT), là tổng thời gian để gửi và nhận phản hồi.
ping 8.8.8.8
Bạn thường sử dụng ping trong các trường hợp sau:
- Xác định một máy chủ (host) có đang hoạt động hay không
- Xác định xem kết nối có độ trễ (latency) cao hay không
- Xác định xem kết nối của bạn có đang hoạt động hay không
Khi kết nối của tôi bị ngắt (thường là Wi-Fi), tôi thường ping một máy chủ đã biết là tốt. Khi ping thất bại, kết quả vẫn chưa chắc chắn, vì bất kỳ phần nào trong kết nối của bạn cũng có thể là thủ phạm. Tuy nhiên, nó nhanh chóng xác định rằng mạng của bạn đang có vấn đề. Bây giờ bạn có thể đào sâu hơn một chút bằng cách sử dụng các công cụ sau.
Ping là một công cụ tiêu chuẩn của GNU 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ể muốn tìm hiểu cách hiểu các số liệu thống kê của ping, vốn không phải là điều hiển nhiên.
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 đang hoạt động ở cấp độ IP. Tuy nhiên, để tạo một 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 này là nguyên nhân gây ra sự cố, và vì vậy chúng ta cần một cách để phát hiện các vấn đề đó.
Quá trình dịch tên miền sang địa chỉ IP được gọi là phân giải DNS (Domain Name System). Khi bạn nhập example.com 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 của bạn để phân giải tên đó thành một địa chỉ IP. Hệ thống này lại gửi yêu cầu đến một máy chủ DNS đã được cấu hình (thường do Nhà cung cấp dịch vụ Internet – ISP của bạn cung cấp). Quá trình này phức tạp hơn thế, nhưng đó là ý chính. Phản hồi là một bản ghi DNS ánh xạ tên miền tới một địa chỉ IP.
Hoàn toàn có thể xảy ra trường hợp bạn có kết nối Internet hoạt động, nhưng bạn 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 bạn không thể truy cập bất kỳ trang web nào trong trình duyệt của mình, đó là dấu hiệu cho thấy quá trình phân giải DNS của bạn đang bị lỗi.
Dig là một công cụ tuyệt vời tiết lộ rất nhiều thông tin DNS cho một máy chủ mong muốn. Ở cấp độ cơ bản nhất, chúng ta có thể sử dụng dig để xem liệu chúng ta có thể phân giải một tên miền hay không. Ví dụ: chạy lệnh sau để xem example.com có địa chỉ IP là gì.
dig example.com
Đôi khi hệ thống hoặc máy chủ DNS của bạn sẽ bộ nhớ đệm (cache) các phản hồi trong một thời gian ngắn, điều đó có nghĩa là nó có thể trả về các giá trị cũ. Tham số +trace
trong ví dụ sau khiến dig bỏ qua bộ đệm và bắt đầu bằng các máy chủ gốc DNS (DNS root servers). DNS là một chủ đề phức tạp nhưng hấp dẫn, và các 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úp đầu ra gọn gàng.
dig +trace +short example.com
Tôi thường xuyên sử dụng lệnh dig
. Đầu tiên tôi sử dụng ping
, và nếu cần thiết, tôi sẽ thực hiện dig
để xác định xem tôi có vấn đề về phân giải DNS hay không. Thông thường, bạn sẽ giải quyết được hầu hết các sự cố mạng của mình đến bước này.
Để cài đặt dig trên Debian, hãy thực hiện lệnh sau.
sudo apt install knot-dnsutils
Để cài đặt dig trên Fedora, hãy thực hiện lệnh sau.
sudo dnf install bind-utils
Để cài đặt dig trên Arch Linux, hãy thực hiện lệnh sau.
sudo pacman -S bind-tools
3. Nmap: khi bạn không chắc liệu máy chủ mục tiêu có cung cấp dịch vụ nào đó hay không
Nmap là công cụ tôi thường dùng để kiểm tra xem một dịch vụ có thể nhận yêu cầu kết nối của tôi hay không — ví dụ, một dịch vụ tự host (self-hosted) hoặc một dịch vụ từ xa trên internet.
map là một công cụ quét cổng (port-scanning), và nó rất nổi tiếng trong giới pentesting (kiểm thử xâm nhập trong 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 khác nhau, mô phỏng nhiều kịch bản. Phần lớn, chúng ta chỉ quan tâm đến TCP vì nó là xương sống của internet. Để bắt đầu một kết nối TCP, các máy tính trước tiên thực hiện cơ chế bắt tay ba bước (three-way handshake). Quá trình này diễn ra theo các bước sau:
- SYN (xin chào): Yêu cầu Đồng bộ hóa (client → server)
- SYN-ACK (xin chào, bạn khỏe không?): Xác nhận Đồng bộ hóa (server → client)
- ACK (tôi khỏe, cảm ơn): Xác nhận (client → server)
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ột máy chủ web trên cổng 80 hoặc 443) và xem máy chủ có phản hồi hay không.
sudo nmap -sS example.com -p 80,443
Các cờ (flags) cho lệnh này như sau:
-sS
: Thực hiện một quét SYN (SYN scan)-p
: Chỉ định các cổng TCP để giao tiếp
Chúng ta gửi một gói tin SYN đến các cổng TCP 80 và 443, 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 của bạn thành các cổng cụ thể, bởi vì nếu không, bạn sẽ quét 1000 cổng đầu tiên (hành vi mặc định), điều này trông có vẻ đáng ngờ.
Điều quan trọng cần lưu ý là đây là các 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ả bằng trình duyệt web—đều gửi đi các yêu cầu như vậy, vì vậy chúng 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.
sudo apt install nmap
Để cài đặt Nmap trên Fedora, hãy thực hiện lệnh sau.
sudo dnf install nmap
Để cài đặt Nmap trên Arch Linux, hãy thực hiện lệnh sau.
sudo pacman -S nmap
4. Wireshark: khi bạn không biết chuyện gì đang xảy ra
Wireshark là một công cụ nghe lén mạng (network sniffer), đây là cách toàn diện nhất để bạn có thể giám sát một mạng. Nói một cách đơn giản, một công cụ nghe lén mạng sẽ ghi lại tất cả các hình thức lưu lượng truy cập đi qua dây cáp mạng. Đây là một công cụ phức tạp, nhưng chúng ta có thể tận dụng được nhiều điều từ nó bằng cách đơn giản là hiểu những kiến thức cơ bản về mạng, như DNS, ICMP, cổng TCP hay địa chỉ IP. Nếu bạn hiểu những điều cơ bản, bạn có thể xác định khi nào có điều gì đó bị hỏng.
Khi tôi 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 toàn bộ lưu lượng truy cập. Tôi sẽ khởi chạy Wireshark và bắt đầu thăm dò mạng bằng các lệnh ping
và các yêu cầu, cố gắng tận dụng những khu vực có thể đã bị hỏng. Wireshark ghi lại lưu lượng truy cập đã thu được vào các tệp packet capture (pcap). Những tệp này cho phép tôi phân tích lưu lượng (thông qua Wireshark) sau này, khi tôi có thể tập trung kỹ 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 “ồn ào” khác. Nếu bạn quan tâm đến các bộ lọc, tài liệu về bộ lọc của Wireshark rất kỹ lưỡng và hữu ích.
Để tiết lộ thêm thông tin về mạng của bạn, bạn có thể cần phải thu thập lưu lượng truy cập trên nhiều nút (nodes). Khía cạnh 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 (router) của mình (nếu có thể) và thu thập lưu lượng truy cập bằng tcpdump (nếu có đủ không gian), sau đó phân tích nó bằng Wireshark hoặc các công cụ khác.
Wireshark mang lại cho tôi toàn bộ khả năng hiển thị (total visibility) trên mạng của mình. Không có nó, tôi chỉ đang đoán mò.
Để cài đặt Wireshark trên Debian, hãy thực hiện lệnh sau.
sudo apt install wireshark
Để cài đặt Wireshark trên Fedora, hãy thực hiện lệnh sau.
sudo dnf install wireshark
Để cài đặt Wireshark trên Arch Linux, hãy thực hiện lệnh sau.
sudo pacman -S wireshark-qt
Các công cụ này cung cấp phạm vi bao phủ đầy đủ cho hầu hết các vấn đề mạng gia đình phổ biến. Với chúng, tôi có thể:
- Nhanh chóng xác định trạng thái kết nối bằng ping
- Xác định các vấn đề phân giải tên bằng dig
- Xác định liệu một dịch vụ từ xa có nên chấp nhận kết nối của tôi hay không bằng Nmap
- Có được cái nhìn toàn diện về lưu lượng mạng của mình bằng Wireshark
Những công cụ này đã phục vụ tôi rất tốt trong nhiều năm để xác định 99% các sự cố mạng khi chúng xảy ra. Tuy nhiên, có nhiều lệnh mạng cơ bản khác mà mọi người dùng Linux nên biết.
5. Kết luận
Xác định và khắc phục sự cố mất mạng trên Linux không còn là thách thức lớn khi bạn nắm vững bốn phương pháp mà chúng tôi đã chia sẻ. Từ việc sử dụng các công cụ như ping và traceroute để kiểm tra kết nối, đến phân tích log hệ thống với journalctl hay giám sát mạng bằng iftop, bạn hoàn toàn có thể chủ động xử lý các vấn đề mạng một cách hiệu quả. Những kỹ thuật này không chỉ giúp bạn tiết kiệm thời gian mà còn đảm bảo hệ thống luôn hoạt động ổn định, đặc biệt trong môi trường làm việc chuyên nghiệp.
Xem thêm: Hướng dẫn cách khắc phục mọi sự cố Wi-Fi dễ dàng trên Windows 11
Nếu bạn đang tìm kiếm các giải pháp công nghệ tối ưu hoặc cần hỗ trợ về phần mềm, phần cứng để nâng cấp hệ thống Linux của mình, hãy ghé thăm COHOTECH – cửa hàng cung cấp các sản phẩm và dịch vụ công nghệ chất lượng cao, luôn sẵn sàng đồng hành cùng bạn trong mọi thử thách công nghệ!
Hãy để lại bình luận bên dưới để chia sẻ kinh nghiệm của bạn khi xử lý sự cố mạng trên Linux hoặc bất kỳ mẹo hay nào mà bạn đã áp dụng. Đừng quên chia sẻ bài viết này đến cộng đồng công nghệ để cùng nhau học hỏi và tối ưu hóa hệ thống nhé!