Bence ağ sorunlarının genel prensipleri:
- Sorunun hangi düzeyde TCP / IP yığını (veya başka bir yığının) ortaya çıktığını öğrenin .
- Doğru sistem davranışının ne olduğunu ve normal sistem durumundan sapmanın ne olduğunu anlamak
- Sorunu bir cümleyle veya birkaç kelimeyle ifade etmeye çalışın
- Buggy sisteminden edinilen bilgileri kullanarak, kendi deneyimlerinizi ve diğer kişilerin deneyimlerini (google, çeşitli forum, vb.) Kullanarak sorunu başarıya (veya başarısızlığa) kadar çözmeye çalışın.
- Eğer başarısız olursa, diğer insanlara yardım veya bazı tavsiyeler hakkında danışın
Bana gelince, gerekli olan tüm araçları kullanarak genellikle gerekli tüm bilgileri ediniyorum ve bu bilgileri deneyimlerimle eşleştirmeye çalışıyorum. Hangi düzeyde ağ yığınının hatayı içerdiğine karar vermek, olası değişkenleri ortadan kaldırmaya yardımcı olur. Başkalarının deneyimini kullanmak sorunları hızlı bir şekilde çözmeye yardımcı olur, ancak çoğu zaman duruma yol açar, bazı problemleri anlamadan çözebilirim ve eğer bu sorun tekrar ortaya çıkarsa, İnternet olmadan tekrar çözmem imkansızdır.
Ve genel olarak ağ problemlerini nasıl çözdüğümü bilmiyorum. Beynimde SolveNetworkProblem(information_about_system_state, my_experience, people_experience)
, bazen tam olarak doğru cevabı verebilen ve bazen de başarısız olabilen bir sihir işlevi varmış gibi görünüyor (burada olduğu gibi, TCP bir Linux dizüstü bilgisayarında ölür ).
Ağ hata ayıklaması için genellikle bu kümedeki util öğelerini kullanırım:
ifconfig
(veya ip link
, ip addr
) - ağ arayüzleri hakkında bilgi edinmek için
ping
- Hedef ana makinemden erişilebilir olup olmadığını doğrulamak için. ping
Ayrıca, temel DNS teşhisi için de kullanılabilir - IP adresini veya ana bilgisayar adıyla ana bilgisayara ping atıp DNS'nin çalışıp çalışmadığına karar verebiliriz. Ve sonra traceroute
ya tracepath
da mtr
oradaki yolda neler olup bittiğini görmek için.
dig
- Her şeyi DNS teşhis
dmesg | less
veya dmesg | tail
veya dmesg | grep -i error
- Linux çekirdeğinin bir sorun hakkında ne düşündüğünü anlamak için.
netstat -antp
+ | grep smth
- TCP bağlantıları hakkında bilgi gösteren en popüler netstat komutunu kullanırım. Genellikle grep kullanarak bir miktar filtre uygularım. Ayrıca yeni ss
komutuna ( iproute2
yeni standart Linux ağ araçları grubundan) ve içinde lsof
de bakın lsof -ai tcp -c some-cmd
.
telnet <host> <port>
- Çeşitli TCP servisleriyle (örn. SMTP, HTTP protokolleri) iletişim kurmak için çok kullanışlıdır, ayrıca bazı TCP portlarına bağlanmak için genel fırsatı kontrol edebiliriz.
iptables-save
(Linux'ta) - tüm iptables tablolarını doldurmak için
ethtool
- tüm ağ arayüz kartı parametrelerini alın (bağlantının durumu, hız, boşaltma parametreleri ...)
socat
- tüm ağ protokollerini test etmek için İsviçre ordusu aracı (UDP, çok noktaya yayın, SCTP ...). Özellikle birkaç -d
seçenekle faydalıdır (telnet'ten çok) .
iperf
- bant genişliği kullanılabilirliğini test etmek için
openssl
( s_client
, ocsp
, x509
...) tüm SSL / TLS / PKI sorunları hata ayıklamak için.
wireshark
- Birçok ağ hatasını analiz etmenize ve yakalamanıza olanak tanıyan ağ trafiğini yakalamak ve analiz etmek için güçlü bir araç.
iftop
- ağdaki / yönlendiricilerdeki büyük kullanıcıları gösterin.
iptstate
(Linux'ta) - güvenlik duvarının bağlantı izlemesinin geçerli görünümü.
arp
(veya yeni (Linux) ip neigh
) - ARP tablosu durumunu gösterir.
route
veya daha yenisi (Linux'ta) ip route
- yönlendirme tablosu durumunu gösterir.
strace
(veya truss
, dtrace
veya tusc
sisteme bağlı olarak) - sorunlu işlemi hangi sistemin ne yaptığını gösteren yararlı bir araçtır, ayrıca sistem çağrıları başarısız olduğunda hata kodlarını da gösterir (errno). Bu bilgi genellikle sistem davranışını anlamak ve bir problemi çözmek için yeterli diyor. Alternatif olarak, bazı ağ işlevlerinde kesme noktaları kullanmak, gdb
ne zaman ve hangi argümanlarla yapıldığını öğrenmenize izin verebilir.
- Linux'taki güvenlik duvarı sorunlarını araştırmak için:
iptables -nvL
her kural tarafından kaç paketin eşleştiğini gösterir ( iptables -Z
sayaçları sıfırlamak için). LOG
Güvenlik duvarı zincirlerine ilave hedef paketleri onlara ulaşmak ve nasıl oraya gittiklerinde zaten transforme edildiği görmek faydalıdır. Daha fazla bilgi almak için NFLOG
(ilişkili ulogd
) tam paketi kaydeder.