Tôi nghĩ rằng, các nguyên tắc chung của xử lý sự cố mạng là:
- Tìm hiểu ở cấp độ ngăn xếp TCP / IP (hoặc một số ngăn xếp khác) xảy ra sự cố.
- Hiểu hành vi hệ thống chính xác là gì và độ lệch so với trạng thái hệ thống bình thường là gì
- Cố gắng diễn đạt vấn đề bằng một câu hoặc bằng nhiều từ
- Sử dụng thông tin thu được từ hệ thống lỗi, kinh nghiệm của chính bạn và kinh nghiệm của người khác (google, diễn đàn khác nhau, v.v.), cố gắng giải quyết vấn đề cho đến khi thành công (hoặc thất bại)
- Nếu bạn thất bại, hãy hỏi người khác về sự giúp đỡ hoặc một số lời khuyên
Đối với tôi, tôi thường có được tất cả thông tin cần thiết bằng cách sử dụng tất cả các công cụ cần thiết và cố gắng khớp thông tin này với kinh nghiệm của tôi. Quyết định cấp độ ngăn xếp mạng nào chứa lỗi giúp cắt bỏ các biến thể không mong muốn. Sử dụng kinh nghiệm của người khác giúp giải quyết vấn đề nhanh chóng, nhưng thường dẫn đến tình huống, tôi có thể giải quyết một số vấn đề mà không hiểu và nếu vấn đề này xảy ra lần nữa, tôi không thể giải quyết lại nếu không có Internet.
Và nói chung, tôi không biết làm thế nào tôi giải quyết các vấn đề mạng. Dường như có một số chức năng ma thuật trong não tôi được đặt tên SolveNetworkProblem(information_about_system_state, my_experience, people_experience)
, đôi khi có thể trả lại chính xác câu trả lời đúng và đôi khi cũng có thể thất bại (như ở đây TCP chết trên máy tính xách tay Linux ).
Tôi thường sử dụng các tiện ích từ bộ này để gỡ lỗi mạng:
ifconfig
(hoặc ip link
, ip addr
) - để lấy thông tin về giao diện mạng
ping
- để xác thực, nếu máy chủ đích có thể truy cập được từ máy của tôi. ping
cũng có thể được sử dụng cho chẩn đoán DNS cơ bản - chúng tôi có thể ping máy chủ theo địa chỉ IP hoặc theo tên máy chủ của nó và sau đó quyết định xem DNS có hoạt động hay không. Và sau đó traceroute
hoặc tracepath
hoặc mtr
để xem những gì đang diễn ra trên đường tới đó.
dig
- chẩn đoán mọi thứ DNS
dmesg | less
hoặc dmesg | tail
hoặc dmesg | grep -i error
- để hiểu nhân Linux nghĩ gì về một số rắc rối.
netstat -antp
+ | grep smth
- cách sử dụng lệnh netstat phổ biến nhất của tôi, hiển thị thông tin về các kết nối TCP. Thường thì tôi thực hiện một số bộ lọc bằng grep. Xem thêm ss
lệnh mới (từ bộ công cụ mạng Linux tiêu chuẩniproute2
mới ) và như trong .lsof
lsof -ai tcp -c some-cmd
telnet <host> <port>
- rất hữu ích để liên lạc với các dịch vụ TCP khác nhau (ví dụ: trên giao thức SMTP, HTTP), chúng tôi cũng có thể kiểm tra cơ hội chung để kết nối với một số cổng TCP.
iptables-save
(trên Linux) - để kết xuất các bảng iptables đầy đủ
ethtool
- nhận tất cả các tham số thẻ giao diện mạng (trạng thái của liên kết, tốc độ, thông số giảm tải ...)
socat
- công cụ quân đội Thụy Sĩ để kiểm tra tất cả các giao thức mạng (UDP, multicast, SCTP ...). Đặc biệt hữu ích (hơn cả telnet) với một vài -d
lựa chọn.
iperf
- để kiểm tra tính khả dụng của băng thông
openssl
( s_client
, ocsp
, x509
...) để gỡ lỗi tất cả các vấn đề SSL / TLS / PKI.
wireshark
- công cụ mạnh mẽ để nắm bắt và phân tích lưu lượng mạng, cho phép bạn phân tích và bắt được nhiều lỗi mạng.
iftop
- hiển thị người dùng lớn trên mạng / bộ định tuyến.
iptstate
(trên Linux) - chế độ xem hiện tại của theo dõi kết nối của tường lửa.
arp
(hoặc mới (Linux) ip neigh
) - hiển thị trạng thái bảng ARP.
route
hoặc mới hơn (trên Linux) ip route
- hiển thị trạng thái bảng định tuyến.
strace
(hoặc truss
, dtrace
hoặc tusc
tùy thuộc vào hệ thống) - là công cụ hữu ích cho biết các cuộc gọi hệ thống nào xử lý sự cố, nó cũng hiển thị mã lỗi (errno) khi cuộc gọi hệ thống thất bại. Thông tin này thường nói đủ để hiểu hành vi hệ thống và giải quyết vấn đề. Ngoài ra, sử dụng điểm dừng trên một số chức năng kết nối mạng gdb
có thể cho phép bạn tìm hiểu khi nào chúng được tạo và với đối số nào.
- để điều tra các vấn đề về tường lửa trên Linux:
iptables -nvL
hiển thị có bao nhiêu gói được khớp với mỗi quy tắc ( iptables -Z
bằng không các bộ đếm). Các LOG
mục tiêu đưa vào chuỗi tường lửa rất hữu ích để xem những gói tin tiếp cận họ và cách họ đã được biến đổi khi họ đạt được điều đó. Để có thêm NFLOG
(liên kết với ulogd
) sẽ đăng nhập gói đầy đủ.