Linux ağında sorun giderme ve hata ayıklama


80

Zaman zaman Linux ve Unix kullanıcıları çeşitli ağ problemleriyle karşılaştı. Bu sorunların birçoğu burada ve bazılarında sorun giderme forumlarında sunulmuştur, ancak çok somutturlar ve birçok ek teknik bilgi içerirler, ve bazen buggy sistemi davranışının asıl konusunu ve asıl nedenini anlamak oldukça zordur.

Bu soruyu sorarak niyetim, ağ sorun giderme ve hata ayıklama deneyimimizi genelleştirmeye izin veren bir topluluk wiki sayfası başlatmaktır . Linux ve Unix kullanıcılarının bu sayfayı kullanarak ağ sorunlarını daha kolay tanıyıp çözebildiğini ("böl ve yönet") umuyorum.

Sorunları teşhis etmek için bu sayfanın ebeveyni En iyi uygulama olmalıdır . Ama burada sorun giderme odaklanmalıdır ağ sorunları gelen kullanıcı ve çekirdek alanı.

Sanırım eğer sen:

  1. Bazı harika ağ tanılama araçlarının kullanımıyla ilgili bilgileri, somut kullanım örnekleri ve yakalamaya yardımcı oldukları ağ hataları örnekleri ile paylaşın.
  2. Bağlantıyı, bu konuyla bağlantılı harika ağ eğitimine yönlendirin
  3. Bazı ağ problemleri sınıfının üstesinden gelmeyi sağlayan genel bir yöntem veya tariften bahsedin
  4. Ağ hata ayıklama ve sorun giderme için araç setinizle ilgili bilgileri paylaşın

bu konu için mükemmel bir uyum sağlar.


Bağlantıyı varios tanılama araçlarına ve 12 yıllık basit öğreticiyle paylaşmaya başlayacağım . Ayrıca, archlinux dersinde konumuz hakkında gerçek bilgiler var. Ve Linux ağlarına dalmak için kesinlikle Linux Ağ-NASIL'ı ziyaret etmemiz gerekir .


Bu soru-cevap, ağ üzerinde aynı IP adresiyle yapılandırılmış 2 makinenin dikkate alınması gereken başka bir şey daha var: unix.stackexchange.com/questions/85887/… .
slm

Başka bir yararlı ağ sorun giderme kılavuzu: cisco.com/tr/US/docs/internetworking/troublesho/guide/…
Ryne Everett

Yanıtlar:


118

Bence ağ sorunlarının genel prensipleri:

  1. Sorunun hangi düzeyde TCP / IP yığını (veya başka bir yığının) ortaya çıktığını öğrenin .
  2. Doğru sistem davranışının ne olduğunu ve normal sistem durumundan sapmanın ne olduğunu anlamak
  3. Sorunu bir cümleyle veya birkaç kelimeyle ifade etmeye çalışın
  4. 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.
  5. 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. pingAyrı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 tracerouteya tracepathda mtroradaki yolda neler olup bittiğini görmek için.
  • dig - Her şeyi DNS teşhis
  • dmesg | lessveya dmesg | tailveya 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 sskomutuna ( iproute2yeni standart Linux ağ araçları grubundan) ve içinde lsofde 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ç -dseç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.
  • routeveya daha yenisi (Linux'ta) ip route- yönlendirme tablosu durumunu gösterir.
  • strace(veya truss, dtraceveya tuscsisteme 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, gdbne zaman ve hangi argümanlarla yapıldığını öğrenmenize izin verebilir.
  • Linux'taki güvenlik duvarı sorunlarını araştırmak için: iptables -nvLher kural tarafından kaç paketin eşleştiğini gösterir ( iptables -Zsayaçları sıfırlamak için). LOGGü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.

Tanrım, hakkında konuş!
mVChr

7
Eklerdim nmap. Bir makinedeki açık bağlantı noktalarının profili, örneğin bir Linux'a mı yoksa Windows sunucusuna mı bakacağınız konusunda hızlı bir şekilde size ipuçları verebilir.
Adam Monsen

7
Eklerdim tcpdump. TCP için standart paket analizörü olarak.
jhvaras

14

Şaşırtıcı sayıda "ağ sorunu", bir ya da başka türdeki DNS sorunlarına neden olmaktadır. İlk sorun giderme işlemi ping -n w.x.y.z, bir ana bilgisayar adının DNS çözünürlüğünü dışlamak için kullanmalı ve IP bağlantısını kontrol etmelisiniz. Bundan sonra route -n, varsayılan IP yolunu DNS çözünürlüğü olmadan kontrol etmek için kullanın .

IP bağlantısı ve yönlendirme doğruladıktan sonra nslookup, hostve digbilgi sağlayabilir. "Kilitlemenin", DNS zaman aşımlarının gerçekleştiğini gösterebileceğini unutmayın.

Varlığını ve içeriğini kontrol etmeyi unutmayın /etc/resolv.conf. DHCP istemcileri bu dosyayı her kiralama işleminde değiştirir ve bazen yanlış kullanırlar veya disk alanı kısıtlıysa bir güncelleme gerçekleşmeyebilir.


8

Kablolama sorunları olabilir. Donanıma erişiminiz varsa, tüm kabloların takılı ve mekanik olarak takılı olduğundan emin olun. Yönlendiricileri veya ethernet arayüzlerini görebiliyorsanız, bağlantı ışıklarının açık olduğundan emin olun.

Uzaktan, sen bağlıdır zorunda ethtoolve mii-tool.

[root@flask ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
        Advertised pause frame use: Symmetric
        Advertised auto-negotiation: Yes
        Speed: 10Mb/s
        Duplex: Half
        Port: MII
        PHYAD: 24
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x00000001 (1)
                               drv
        Link detected: yes

"Bağlantı algılandı: evet" iyi, ancak 10Mb / s ve Half duplex iyi değil, çünkü bilgisayardaki NIC daha iyisini yapabilir. NIC'in kabardığını veya kablo olup olmadığını öğrenmem gerekiyor. Aynı yönlendiriciye bağlı başka bir bilgisayar 100Mb / s, Tam çift yönlü diyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.