+1

Tư duy debug khi không "ping" được và chùm lệnh linux liên quan network

Mayfest2023

Chào mọi người, Có lẽ làm coder thì có nhiều lúc sẽ gặp phải vấn đề không kết nối đến server hay 1 địa chỉ IP nào đó, khi đó mọi người sẽ "ping" thử và không biết làm gì tiếp theo. Vậy mình viết bài viết này chia sẻ cho các bạn các hướng để kiểm tra và debug lỗi này. Ngoài ra các command linux cung cấp đi kèm cũng khá hữu ích để các bạn ngâm cứu các vấn đề liên quan đến network.

Bước 1: Kiểm tra vật lý

Đây là bước đầu tiên khi tìm nguyên nhân, cũng là kinh nghiệm của mình khi dev trên các phần cứng tự phát triển thì vấn đề đầu tiên là phần cứng phải ổn định đã, sau đó phần mềm mới tự tin phát triển được. Do đó ở bước này mình sẽ đi kiểm tra 2 thứ, đó là:

  • Xem thử dây mạng/dây quang có bị đứt gãy gì không?
  • Đèn ở cổng ethernet đó có sáng hay không.

Bước 2: Kiểm tra trạng thái cổng mạng/sfp

Sau khi kiểm tra dây mạng ở bước 1 rồi thì bước 2 mình tiến tới kiểm tra cổng mạng, kiểu đi lần lần từ ngoài vào trong ấy. Bước này sẽ kiểm tra cấu hình của interface đó đúng hay chưa.

  • Gõ lệnh: ethtool ten_interface
  • Lệnh này sẽ kiểm tra được cấu hình của interface đó, cơ bản có 3 thứ cần xem: auto-negotiation, speed và duplex, nếu khác với switch trung gian hoặc server thì cần cấu hình lại. image.png

Bước 3: Kiểm tra IP

Bước này anh chị em hay gõ nè, khá là quen thuộc với mọi người.

  • Gõ lệnh ifconfig hoặc ip link
  • Lệnh này để kiểm tra có bị mất địa chỉ IP hay không, IP có cùng dải với IP mình ping tới hay không, link có up không. Nếu 1 trong các yếu tố trên bị thiếu thì cần cấu hình lại (dùng luôn lệnh ifconfig)
  • Kiểm tra số gói TX/RX xem thử mất gói tin 1 chiều hay 2 chiều.

Bước 4: Kiểm tra route

Sau khi kiểm tra cấu hình đúng rồi, địa chỉ nhà (IP) đúng rồi thì chuyển qua kiểm tra đường đi đã được vẽ ra chưa.

  • Gõ lệnh ip route show
  • Lệnh này để xem thử có route hay không, nếu chưa thì add route để được định tuyến.

Bước 5: Kiểm tra xem bị mất kết nối ở đoạn nào trên đường định tuyến

Đường đi ở bước 4 được vẽ rồi mà không đi được nữa thì chỉ có thể do bị thằng nào chặn trên đường thôi, dùng lệnh sau để check nha: sử dụng 1 trong 2 lệnh sau:

  • traceroute <destination> -tracepath <destination> Bước này nếu thấy có bị chặn trong hệ thống mạng của mình thì tìm cách mở firewall hoặc iptables nhé, còn nếu ở ngoài hệ thống mạng của mình thì đổi DNS hoặc do server thôi 😄

Bước 6:

Bước cuối cùng nếu không được nữa thì reset máy tính/server 😄

Bonus

Ngoài ra list các lệnh sau khá hay ho liên quan đến network các bạn có thể tham khảo:

1. netstat 
2. nslookup
3. host
4. hostname
5. whois
6. arp
7. tcpdump
8. lshw
9. ...

Hết rùi, cảm ơn anh chị em đã đón đọc nha 😄


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí