लिनक्स नेटवर्क समस्या निवारण और डिबगिंग


80

समय-समय पर लिनक्स और यूनिक्स उपयोगकर्ताओं को विभिन्न नेटवर्क समस्याओं का सामना करना पड़ा। इन समस्याओं में से कई को यहां और कुछ अन्य समस्या निवारण मंचों पर प्रस्तुत किया गया है, लेकिन वे बहुत ठोस हैं और इसमें बहुत सारी अतिरिक्त तकनीकी जानकारी शामिल है, और कभी-कभी मुख्य बिंदु और छोटी गाड़ी के व्यवहार के वास्तविक कारण को समझना मुश्किल है।

यह प्रश्न पूछकर, मेरा उद्देश्य एक समुदाय विकी पृष्ठ शुरू करना है जो हमारे नेटवर्क समस्या निवारण और डीबगिंग अनुभव को सामान्य करने की अनुमति देता है। मुझे उम्मीद है कि लिनक्स और यूनिक्स उपयोगकर्ता इस पेज का उपयोग करके अपने नेटवर्क की समस्याओं को आसानी से पहचान सकते हैं और हल कर सकते हैं ("विभाजित और जीत")।

इस पृष्ठ के माता-पिता को समस्याओं के निदान के लिए सर्वश्रेष्ठ अभ्यास होना चाहिए । लेकिन यहां हमें उपयोगकर्ता-और कर्नेल-स्थान से नेटवर्क समस्याओं के निवारण पर ध्यान देना चाहिए

मुझे लगता है, अगर तुम:

  1. कंक्रीट उपयोग के उदाहरण और नेटवर्क बग के उदाहरणों के साथ कुछ महान नेटवर्क डायग्नोस्टिक टूल का उपयोग करने के बारे में जानकारी साझा करें, जिन्हें वे पकड़ने में मदद करते हैं।
  2. इस विषय से जुड़े महान नेटवर्क ट्यूटोरियल का लिंक साझा करें
  3. एक सामान्य विधि या नुस्खा के बारे में बताएं जो नेटवर्क समस्याओं के कुछ वर्ग से निपटने की अनुमति देता है
  4. नेटवर्क डीबगिंग और समस्या निवारण के लिए अपने टूल-सेट के बारे में जानकारी साझा करें

यह इस विषय के लिए पूरी तरह से फिट होगा।


मैं varios डायग्नोस्टिक टूल और 12 साल पुराने सरल ट्यूटोरियल के लिंक को साझा करने से शुरू करूँगा । इसके अलावा आर्चलिनक्स ट्यूटोरियल में हमारे विषय के बारे में वास्तविक जानकारी है। और लिनक्स नेटवर्किंग में गोता लगाने के लिए हमें निश्चित रूप से लिनक्स नेटवर्किंग-HOWTO का दौरा करने की आवश्यकता है ।


इस क्यू एंड ए में एक और बात पर विचार करना है, समान आईपी पते के साथ कॉन्फ़िगर किए गए नेटवर्क पर 2 मशीनें: unix.stackexchange.com/questions/85887/…
स्लम

एक अन्य उपयोगी नेटवर्क समस्या निवारण मार्गदर्शिका: cisco.com/en/US/docs/internetworking/troublesourcing/guide/…
Ryne Everett

जवाबों:


118

मुझे लगता है, नेटवर्क समस्या निवारण के सामान्य सिद्धांत हैं:

  1. पता लगाएँ कि टीसीपी / आईपी स्टैक (या कुछ अन्य स्टैक) किस स्तर पर समस्या उत्पन्न करता है।
  2. समझें कि सही सिस्टम व्यवहार क्या है, और सामान्य सिस्टम स्थिति से विचलन क्या है
  3. समस्या को एक वाक्य में या कई शब्दों में व्यक्त करने का प्रयास करें
  4. छोटी गाड़ी प्रणाली, अपने स्वयं के अनुभव और अन्य लोगों के अनुभव (Google, विभिन्न मंच आदि) से प्राप्त जानकारी का उपयोग करके, सफलता (या विफलता) तक समस्या को हल करने का प्रयास करें।
  5. यदि आप असफल होते हैं, तो अन्य लोगों से मदद या कुछ सलाह के बारे में पूछें

मेरे लिए, मैं आमतौर पर सभी आवश्यक उपकरणों का उपयोग करके सभी आवश्यक जानकारी प्राप्त करता हूं, और इस जानकारी को अपने अनुभव से मिलान करने का प्रयास करता हूं। यह तय करना कि नेटवर्क स्टैक के किस स्तर में बग की संभावना कम हो जाती है। अन्य लोगों के अनुभव का उपयोग करने से समस्याओं को जल्दी से हल करने में मदद मिलती है, लेकिन अक्सर यह स्थिति की ओर जाता है, कि मैं इसकी समझ के बिना कुछ समस्या को हल कर सकता हूं और अगर यह समस्या फिर से होती है, तो इंटरनेट के बिना इसे फिर से निपटाना मेरे लिए असंभव है।

और सामान्य तौर पर, मुझे नहीं पता कि मैं नेटवर्क समस्याओं को कैसे हल करता हूं। ऐसा लगता है कि मेरे दिमाग में कुछ जादू का काम है SolveNetworkProblem(information_about_system_state, my_experience, people_experience), जो कभी-कभी बिल्कुल सही उत्तर दे सकता है, और कभी-कभी विफल भी हो सकता है (जैसे कि टीसीपी लिनक्स लैपटॉप पर मर जाता है )।

मैं आमतौर पर नेटवर्क डिबगिंग के लिए इस सेट से बर्तनों का उपयोग करता हूं:

  • ifconfig(या ip link, ip addr) - नेटवर्क इंटरफेस के बारे में जानकारी प्राप्त करने के लिए
  • ping- मान्य करने के लिए, यदि लक्ष्य मेजबान मेरी मशीन से सुलभ है। pingबुनियादी डीएनएस डायग्नॉस्टिक्स के लिए भी इस्तेमाल किया जा सकता है - हम आईपी-एड्रेस या इसके होस्टनाम द्वारा पिंग होस्ट कर सकते हैं और फिर तय कर सकते हैं कि डीएनएस काम करता है या नहीं। और फिर tracerouteया tracepathया mtrदेखने के लिए कि वहाँ रास्ते में क्या हो रहा है।
  • dig - सब कुछ डीएनएस का निदान करें
  • dmesg | lessया dmesg | tailया dmesg | grep -i error- समझ लिनक्स कर्नेल कुछ परेशानी के बारे में सोचता है।
  • netstat -antp+ | grep smth- netstat कमांड का मेरा सबसे लोकप्रिय उपयोग, जो टीसीपी कनेक्शन के बारे में जानकारी दिखाता है। अक्सर मैं grep का उपयोग करके कुछ फ़िल्टरिंग करता हूं। नए ssकमांड ( लिनक्स नेटवर्किंग टूल iproute2के नए मानक सूट से) और lsofमें भी देखें lsof -ai tcp -c some-cmd
  • telnet <host> <port> - विभिन्न टीसीपी-सेवाओं (जैसे एसएमटीपी, एचटीटीपी प्रोटोकॉल पर) के साथ संचार करने के लिए बहुत उपयोगी है, हम भी कुछ टीसीपी पोर्ट से कनेक्ट करने के लिए सामान्य अवसर की जांच कर सकते हैं।
  • iptables-save(लिनक्स पर) - पूर्ण iptables तालिकाओं को डंप करने के लिए
  • ethtool - सभी नेटवर्क इंटरफेस कार्ड पैरामीटर (लिंक की स्थिति, गति, ऑफलोड पैरामीटर ...) प्राप्त करें
  • socat- सभी नेटवर्क प्रोटोकॉल (UDP, मल्टीकास्ट, SCTP ...) का परीक्षण करने के लिए स्विस सेना टूल। कुछ -dविकल्पों के साथ विशेष रूप से उपयोगी (टेलनेट से अधिक) ।
  • iperf - बैंडविड्थ की उपलब्धता का परीक्षण करने के लिए
  • openssl( s_client, ocsp, x509...) सभी SSL / TLS / PKI मुद्दों डिबग करने के लिए।
  • wireshark - नेटवर्क ट्रैफ़िक को कैप्चर करने और उनका विश्लेषण करने का शक्तिशाली उपकरण, जो आपको कई नेटवर्क बग्स का विश्लेषण और पकड़ने की अनुमति देता है।
  • iftop - नेटवर्क / राउटर पर बड़े उपयोगकर्ताओं को दिखाएं।
  • iptstate (लिनक्स पर) - फ़ायरवॉल के कनेक्शन ट्रैकिंग का वर्तमान दृश्य।
  • arp(या नया (लिनक्स) ip neigh) - एआरपी-टेबल स्थिति दिखाएं।
  • routeया नया (लिनक्स पर) ip route- राउटिंग टेबल की स्थिति दिखाएं।
  • strace(या truss, dtraceया tuscसिस्टम पर निर्भर करता है) - उपयोगी उपकरण है जो दिखाता है कि सिस्टम कॉल क्या समस्या प्रक्रिया करता है, यह सिस्टम कोड विफल होने पर त्रुटि कोड (ग़लती) भी दिखाता है। यह जानकारी अक्सर सिस्टम के व्यवहार को समझने और किसी समस्या को हल करने के लिए पर्याप्त है। वैकल्पिक रूप से, कुछ नेटवर्किंग फ़ंक्शंस पर ब्रेकप्वाइंट का उपयोग करके gdbआप यह पता लगा सकते हैं कि वे कब बने हैं और किन तर्कों के साथ।
  • लिनक्स पर फ़ायरवॉल मुद्दों की जांच करने के लिए: iptables -nvLदिखाता है कि प्रत्येक नियम ( iptables -Zकाउंटर को शून्य करने के लिए) कितने पैकेट से मेल खाता है । LOGफ़ायरवॉल श्रृंखलाओं में डाला गया लक्ष्य यह देखने के लिए उपयोगी है कि कौन से पैकेट उन तक पहुँचते हैं और कैसे वे पहले से ही वहां पहुंचने पर बदल गए हैं। आगे जाने के लिए NFLOG(साथ जुड़ा हुआ ulogd) पूरा पैकेट लॉग करेगा।

Geez, पूरी तरह से बात करते हैं!
mVChr

7
मैं जोड़ूंगा nmap। एक मशीन पर खुले बंदरगाहों की प्रोफ़ाइल आपको संकेत दे सकती है कि क्या आप लिनक्स या विंडोज सर्वर पर देख रहे हैं, उदाहरण के लिए।
एडम मोन्सन

7
मैं जोड़ूंगा tcpdump। टीसीपी के लिए इसके मानक पैकेट विश्लेषक के रूप में।
झ्वारस

14

"नेटवर्क समस्याओं" की एक आश्चर्यजनक संख्या एक प्रकार या किसी अन्य की DNS समस्याओं को उबालती है। ping -n w.x.y.zहोस्टनाम के DNS रिज़ॉल्यूशन को छोड़ने के लिए प्रारंभिक समस्या निवारण का उपयोग करना चाहिए , और बस आईपी कनेक्टिविटी की जांच करें। उसके बाद, route -nDNS रिज़ॉल्यूशन के बिना डिफ़ॉल्ट आईपी मार्ग की जांच करने के लिए उपयोग करें।

IP कनेक्टिविटी, और मार्ग की पुष्टि करने के बाद, nslookup, hostऔर digजानकारी प्राप्त हो सकते हैं। याद रखें कि "लॉकिंग अप" यह संकेत दे सकता है कि DNS समय समाप्त हो रहे हैं।

के अस्तित्व और सामग्री की जाँच करने के लिए मत भूलना /etc/resolv.conf। डीएचसीपी क्लाइंट हर पट्टे के साथ उस फ़ाइल को बदलते हैं, और कभी-कभी वे इसे गलत पाते हैं, या यदि डिस्क स्थान तंग है, तो अपडेट नहीं हो सकता है।


8

केबल बिछाने की समस्याएं मौजूद हो सकती हैं। यदि आपके पास हार्डवेयर तक पहुंच है, तो सुनिश्चित करें कि केबल सभी में प्लग किए गए हैं और यंत्रवत् रूप से लगे हुए हैं। यदि आप राउटर या ईथरनेट इंटरफेस देख सकते हैं, तो सुनिश्चित करें कि लिंक लाइट्स चालू हैं।

दूर से, आपको ethtoolऔर पर निर्भर रहना होगा 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

"लिंक का पता चला: हाँ" अच्छा है, लेकिन 10Mb / s और हॉफ डुप्लेक्स अच्छे नहीं हैं, क्योंकि उस कंप्यूटर पर एनआईसी बेहतर कर सकता है। मुझे यह पता लगाने की आवश्यकता है कि क्या एनआईसी नासमझ है या केबल है। एक ही राउटर में प्लग किया गया दूसरा कंप्यूटर 100Mb / s, फुल डुप्लेक्स कहता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.