कनेक्शन से इनकार करने के कारणों के क्या कारण हो सकते हैं?


114

मैं C में एक सर्वर प्रोग्राम लिखने की कोशिश कर रहा हूं, एक अन्य क्लाइंट का उपयोग करके, मुझे यह त्रुटि तब मिलती है जब मैं उदाहरण के लिए पोर्ट 2080 के माध्यम से कनेक्ट करने का प्रयास करता हूं।

connection refused

इस त्रुटि के क्या कारण हो सकते हैं?


सर्वर की गलती के कारण मुझे यह त्रुटि मिली, जहां मैंने अपनी वेबसाइट होस्ट की थी। सर्वर अभी भी pingएड हो सकता है , downforeveryoneorjustme.com ने दिखाया कि यह सिर्फ मैं ही नहीं हूं और मैं अब भी इसे FTP के जरिए एक्सेस कर सकता हूं। कुछ मिनटों के बाद गलतियों को हल किया गया।
मार्टिन थोमा

2
@moose: पिंग आपको यह नहीं बताता है कि क्या एक विशिष्ट पोर्ट सुगम विज्ञापन है, केवल यह कि क्या आईपी पता उपलब्ध है। लेकिन connect()एक विशिष्ट आईपी और पोर्ट उपयोग के लिए तैयार होने पर निर्भर करता है।
रेमी लेबेउ

सर्वर फॉल्ट में कनेक्शन अस्वीकृत के बारे में एक विहित प्रश्न है ।
राडवल्द

यहाँ कनेक्शन अस्वीकृत की एक संक्षिप्त व्याख्या है ।
राबिनुन

मुझे उबंटू पर एक कनेक्शन देने से इनकार कर दिया गया क्योंकि मैं 'लोकलहोस्ट' पर कनेक्शन प्राप्त करने की कोशिश कर रहा था, लेकिन 'लोकलहोस्ट' को मेरी मशीन पर ठीक से कॉन्फ़िगर नहीं किया गया था। 'लोकलहोस्ट' को '' (पायथन) में बदलने से समस्या हल हो गई।
user1097111

जवाबों:


93

कई कारण हो सकते हैं, लेकिन सबसे आम हैं:

  1. गंतव्य मशीन पर पोर्ट खुला नहीं है।

  2. पोर्ट गंतव्य मशीन पर खुला है, लेकिन इसके लंबित कनेक्शनों का बैकलॉग भरा हुआ है।

  3. क्लाइंट और सर्वर के बीच एक फ़ायरवॉल पहुँच को रोक रहा है (स्थानीय फ़ायरवॉल को भी देखें)।

फायरवॉल के लिए जाँच करने के बाद और वह पोर्ट खुला है, कनेक्टिविटी का परीक्षण करने के लिए आईपी / पोर्ट से कनेक्ट करने के लिए टेलनेट का उपयोग करें। यह आपके एप्लिकेशन से किसी भी संभावित समस्या को दूर करता है।


7
फायरवॉल आमतौर पर टाइमआउट की त्रुटियां देगा, क्योंकि कनेक्ट (SYN) पैकेट को छोड़ दिया गया है। कनेक्शन अस्वीकार कर दिया गया क्योंकि सर्वर ने SYN पैकेट प्राप्त और अस्वीकार कर दिया है।
RedPandaCurios

15
हमेशा नहीं, क्योंकि पैकेट को छोड़ने के बजाय फायरवॉल को अस्वीकार करने के लिए कॉन्फ़िगर किया जा सकता है।
अ'र

कनेक्ट () गलत सर्वर आईपी पते और क्लाइंट प्रोग्राम में पोर्ट नंबर कॉन्फ़िगरेशन के साथ भी परिणाम 111 हो जाएगा।
smRaj

इसके अतिरिक्त: जब आपको https जमा करने की आवश्यकता होती है, लेकिन आपने http: // ... निर्दिष्ट किया है तो यह त्रुटि भी हो सकती है।
Fico

4
@ ar. आपको बैकलॉग की स्थिति कैसे पता चलेगी?
नवीन वर्मा

75

त्रुटि का अर्थ है कि सुनने वाले सॉकेट का ओएस इनबाउंड कनेक्शन अनुरोध को मान्यता देता है लेकिन इसे जानबूझकर अस्वीकार कर दिया गया है।

मान लें कि एक मध्यवर्ती फ़ायरवॉल नहीं मिल रहा है, ओएस के इनबाउंड कनेक्शन अनुरोध को अस्वीकार करने के लिए केवल दो कारण हैं (जो मुझे पता है)। एक कारण पहले ही कई बार उल्लेख किया जा चुका है - श्रवण मार्ग जुड़ा हुआ है खुला नहीं है।

एक और कारण है जिसका अभी तक उल्लेख नहीं किया गया है - श्रवण बंदरगाह वास्तव में खुला है और सक्रिय रूप से उपयोग किया जा रहा है, लेकिन कतारबद्ध इनबाउंड कनेक्शन अनुरोधों की अपनी अधिकतम सीमा तक पहुंच गया है, इसलिए इनबाउंड कनेक्शन अनुरोध को कतार में रखने के लिए कोई कमरा उपलब्ध नहीं है। पल। सर्वर कोड ने स्वीकार नहीं किया है () पर्याप्त समय अभी तक नई कतार आइटम के लिए उपलब्ध स्लॉट्स समाशोधन समाप्त करने के लिए नहीं।

एक-एक पल रुकें और दोबारा कनेक्शन का प्रयास करें। दुर्भाग्य से, "पोर्ट बिल्कुल खुला नहीं है" और "पोर्ट खुला है लेकिन अभी बहुत व्यस्त है" के बीच अंतर करने का कोई तरीका नहीं है। वे दोनों एक ही सामान्य त्रुटि कोड का उपयोग करते हैं।


4
यहाँ भी एक किनारे का मामला बताया गया है: softlab.ntua.gr/facilities/documentation/unix/unix-socket-faq/… । मूल रूप से यदि आप अपने ग्राहक / सर्वर ऐप का परीक्षण कर रहे हैं, और आप भोली दृष्टिकोण का उपयोग कर रहे हैं जैसा कि 3.6 में उल्लेख किया गया है, तो "कनेक्शन ने इनकार कर दिया" त्रुटि हो सकती है, और यह उपरोक्त दो से अलग मामला है।
इर्नेस्टो

इसको उभारने की जरूरत है। एक बार स्पष्ट कारण (कुछ भी नहीं सुनने) का समाधान किया गया है, तो यह वास्तव में सबसे अधिक संभावित स्पष्टीकरण है, और इसे ठीक करना एक जटिल मामला हो सकता है।
ग्राहम निकोल्स

यदि कतारबद्ध इनबाउंड अनुरोधों का बैकलॉग अधिकतम हो गया है, तो हम इसे कैसे ठीक कर सकते हैं?
एसीटर

IP द्वारा बैकलॉग कतारबद्ध है? मैं एक EC2 उदाहरण और अपने स्थानीय मशीन से टेलनेट email-smtp.eu-west-1.amazonaws.com 25 का उपयोग करते हुए, EC2 उदाहरण टेलनेट कॉल कनेक्शन है, जबकि अपने स्थानीय मशीन से यह काम करता है से इनकार कर दिया दे रहा है की कोशिश की
dresh

"कुछ भी नहीं सुन रहा है" शायद मशीन के ऊपर होने के कारण है लेकिन सर्वर (सॉफ्टवेयर) जैसे कि अपाचे नहीं चल रहा है।
ttulinsky

24

यदि आप किसी अन्य होस्ट के लिए टीसीपी कनेक्शन खोलने का प्रयास करते हैं और त्रुटि देखते हैं "कनेक्शन ने इनकार कर दिया," इसका मतलब है कि

  1. आपने दूसरे होस्ट को TCP SYN पैकेट भेजा है।
  2. तब आपको जवाब में एक टीसीपी आरएसटी पैकेट मिला।

आरएसटी टीसीपी पैकेट पर थोड़ा सा है जो इंगित करता है कि कनेक्शन रीसेट होना चाहिए। आमतौर पर इसका मतलब है कि दूसरे होस्ट ने आपके कनेक्शन का प्रयास किया है और आपके टीसीपी कनेक्शन को सक्रिय रूप से मना कर रहा है, लेकिन कभी-कभी एक हस्तक्षेप करने वाला फ़ायरवॉल आपके टीसीपी SYN पैकेट को अवरुद्ध कर सकता है और आपको टीसीपी आरएसटी वापस भेज सकता है।

Https://tools.ietf.org/html/rfc793 पृष्ठ 69 देखें :

SYN-RECEIVED STATE

यदि RST बिट सेट है

यदि इस कनेक्शन को एक निष्क्रिय OPEN (यानी लिस्टेन राज्य से आया) के साथ शुरू किया गया था, तो इस कनेक्शन को लिस्टेन राज्य में लौटाएं और वापस लौटें। उपयोगकर्ता को सूचित करने की आवश्यकता नहीं है। यदि यह कनेक्शन एक सक्रिय OPEN (यानी SYN-SENT राज्य से आया था) के साथ शुरू किया गया था, तो कनेक्शन से इनकार कर दिया गया था, उपयोगकर्ता को "कनेक्शन से इनकार कर दिया" संकेत दें। किसी भी स्थिति में, पुनरावर्तन कतार पर सभी खंडों को हटा दिया जाना चाहिए। और सक्रिय खुले मामले में, बंद स्थिति में प्रवेश करें और टीसीबी को हटा दें, और वापस लौटें।


11

कनेक्शन से इनकार करने का मतलब है कि जिस पोर्ट से आप जुड़ने की कोशिश कर रहे हैं, वह वास्तव में खुला नहीं है।

तो या तो आप गलत आईपी पते से, या गलत पोर्ट से कनेक्ट हो रहे हैं, या सर्वर गलत पोर्ट पर सुन रहा है, या वास्तव में नहीं चल रहा है।

नेटवर्क बाइट ऑर्डर में बाइंडिंग या कनेक्ट करते समय एक सामान्य गलती पोर्ट नंबर को निर्दिष्ट नहीं कर रही है ...


4
यह कई संभावित स्थितियों में से एक है जो त्रुटि का कारण बन सकती है।
रेमी लेबेऊ

1
पोर्ट खुला हो सकता है, लेकिन यह त्रुटि अभी भी हो सकती है।
इगोरगानापोलस्की

6

सर्वर की ओर देखें कि वह 2080 पोर्ट पर सुन रहा है। पहले उस सर्वर को टेलनेट जारी करके इसकी पुष्टि करने की कोशिश करें:

टेलनेट लोकलहोस्ट 2080

यदि यह सुन रहा है, तो यह प्रतिक्रिया करने में सक्षम है।


3

1. अपना सर्वर स्टेटस चेक करें।

बंदरगाह स्थिति का परीक्षण करें।

उदाहरण के लिए 3306 netstat -nupl|grep 3306

3. अपने फ़ायरवॉल का परीक्षण करें। उदाहरण के लिए 3306 जोड़ें

vim /etc/sysconfig/iptables
# add
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

netstat -a ने मदद की
फिलिप

1

यद्यपि यह आपकी स्थिति के लिए मामला नहीं लगता है, कभी-कभी एक कनेक्शन से इनकार करने से त्रुटि भी संकेत कर सकती है कि आपके नेटवर्क पर एक आईपी पता संघर्ष है। आप चलकर संभावित आईपी संघर्षों की खोज कर सकते हैं:

 arp-scan -I eth0 -l | grep <ipaddress>

तथा

arping <ipaddress>

इस AskUbuntu प्रश्न में कुछ और जानकारी भी है।


0

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


0

मुझे अपने काम के कंप्यूटर के साथ भी यही समस्या है। समस्या यह है कि जब आप लोकलहोस्ट में प्रवेश करते हैं तो यह प्रॉक्सी के पते पर जाता है न कि स्थानीय पते पर जिसे आपको बाईपास करना चाहिए इस कदम का पालन करना चाहिए

Chrome => सेटिंग्स => प्रॉक्सी सेटिंग्स बदलें => लैन सेटिंग्स => स्थानीय पते के लिए बाईपास प्रॉक्सी सर्वर की जांच करें।


0

उबंटू में, sudo ufw allow <port_number> अपने सर्वर और डीबी दोनों में फ़ायरवॉल का उपयोग करने की अनुमति देने का प्रयास करें ।


0

पोर्ट पैरामीटर "-p" पास करने का प्रयास करें:

sudo iperf -c 127.0.0.1 -p 443

0

मेरे मामले में, यह तब होता है जब मेरे देश में साइट अवरुद्ध हो जाती है और मैं वीपीएन का उपयोग नहीं करता हूं। उदाहरण के लिए जब मैं इंडोनेशिया से vimeo.com को एक्सेस करने का प्रयास करता हूं जो अवरुद्ध है।


-1

मेरे पास बिल्कुल अलग कारण के साथ एक ही संदेश wsock32.dllथा : नहीं मिला था। ::socket(PF_INET, SOCK_STREAM, 0);कॉल एक लौटने रखा INVALID_SOCKETलेकिन कारण यह है कि विनसॉक dll लोड नहीं किया गया था।

अंत में मैंने Sysinternals की प्रक्रिया की निगरानी शुरू की और ध्यान दिया कि यह dll 'हर जगह' के लिए खोजा लेकिन यह नहीं मिला।

मूक विफलताओं महान हैं!


1
INVALID_SOCKET का 'कनेक्शन मना' से कोई लेना-देना नहीं है। 'साइलेंट फेल्योर' तभी हो सकता है जब आपका कोड आवश्यक त्रुटि हैंडलिंग को याद कर रहा हो।
लोर्ने

1
आपका मतलब है कि मुझे जांच करनी चाहिए थी कि डीएल लोड किया गया था? शायद आप सही हैं।
xtofl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.