मुझे लगता है, नेटवर्क समस्या निवारण के सामान्य सिद्धांत हैं:
- पता लगाएँ कि टीसीपी / आईपी स्टैक (या कुछ अन्य स्टैक) किस स्तर पर समस्या उत्पन्न करता है।
- समझें कि सही सिस्टम व्यवहार क्या है, और सामान्य सिस्टम स्थिति से विचलन क्या है
- समस्या को एक वाक्य में या कई शब्दों में व्यक्त करने का प्रयास करें
- छोटी गाड़ी प्रणाली, अपने स्वयं के अनुभव और अन्य लोगों के अनुभव (Google, विभिन्न मंच आदि) से प्राप्त जानकारी का उपयोग करके, सफलता (या विफलता) तक समस्या को हल करने का प्रयास करें।
- यदि आप असफल होते हैं, तो अन्य लोगों से मदद या कुछ सलाह के बारे में पूछें
मेरे लिए, मैं आमतौर पर सभी आवश्यक उपकरणों का उपयोग करके सभी आवश्यक जानकारी प्राप्त करता हूं, और इस जानकारी को अपने अनुभव से मिलान करने का प्रयास करता हूं। यह तय करना कि नेटवर्क स्टैक के किस स्तर में बग की संभावना कम हो जाती है। अन्य लोगों के अनुभव का उपयोग करने से समस्याओं को जल्दी से हल करने में मदद मिलती है, लेकिन अक्सर यह स्थिति की ओर जाता है, कि मैं इसकी समझ के बिना कुछ समस्या को हल कर सकता हूं और अगर यह समस्या फिर से होती है, तो इंटरनेट के बिना इसे फिर से निपटाना मेरे लिए असंभव है।
और सामान्य तौर पर, मुझे नहीं पता कि मैं नेटवर्क समस्याओं को कैसे हल करता हूं। ऐसा लगता है कि मेरे दिमाग में कुछ जादू का काम है 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
) पूरा पैकेट लॉग करेगा।