पोर्ट खुला दिख रहा है, लेकिन कनेक्शन ने इनकार कर दिया


21

मैं Ubuntu 12.04 पर पोर्ट 3000 खोलने की कोशिश कर रहा हूं, क्योंकि मेरे पास वहां सुनने वाला एक वेब सर्वर है। मैं यहां अपने कॉनफोर्ट ज़ोन से थोड़ा बाहर हूं, और कई घंटे बिना सफलता के हल करने की कोशिश में लगा रहा।

पोर्ट फ़ायरवॉल में खुला लगता है:

$> sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
...
3000/tcp                   ALLOW       Anywhere
3000/tcp                   ALLOW       Anywhere (v6)

सर्वर उस पोर्ट पर ठीक सुन रहा है:

$> netstat -an | grep "LISTEN "
...
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN     
...

और मैं भी wgetसूचकांक पृष्ठ ठीक कर सकते हैं :

$> wget localhost:3000
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 200 OK

और प्राप्त फ़ाइल में वह है जो मैं उम्मीद करता हूं ("हैलो वर्ल्ड" :)।

हालाँकि, जब दूसरे कंप्यूटर से कोशिश कर रहा wget mydomain.com:3000हूँ , या अगर मुझे मिलता है "connection refused", और nmap मुझे बताता है कि पोर्ट खुला नहीं है:

$> nmap -A -T4 mydomain.com
Host is up (0.00032s latency).
...
Not shown: 999 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)
...
Service Info: OS: Linux

किसी भी विचार मैं आगे क्या प्रयास करना चाहिए ???

संपादित करें

ट्रेसरआउट क्या देता है:

$> traceroute mydomain.com
traceroute to mydomain.com (176.31.x.x), 30 hops max, 60 byte packets
 1  mydomain.com (176.31.x.x)  0.034 ms  0.013 ms  0.010 ms

Ufw अक्षम करें, फिर से प्रयास करें। यदि वह काम नहीं करता है, तो दूरस्थ कंप्यूटर और आपके सर्वर के बीच एक और फ़ायरवॉल / डिवाइस है।
ish

मैंने पहले ही कोशिश की .. इसे हल नहीं किया :(
sebpiq

"दूरस्थ कंप्यूटर और आपके सर्वर के बीच एक और फ़ायरवॉल / डिवाइस है।" : यह बहुत संभावना नहीं है। मैंने सर्वर से दूसरी wget की कोशिश की ताकि यह नेटवर्क के माध्यम से एक गोल यात्रा कर सके।
सेबियाक

है ना? आप सर्वरबेस से wget servereb.com टाइप नहीं कर सकते हैं और इसे कुछ फैंसी iptables रूटिंग जादू के बिना एक गोल यात्रा करने के लिए प्राप्त कर सकते हैं। कृपया traceroute mydomain.comदूरस्थ कंप्यूटर से आउटपुट को पाबिनिन करें । आप गोपनीयता के लिए अंतिम (सर्वर) आईपी के अंतिम दो ऑक्टेट को ** कर सकते हैं।
ish

एक ट्रेसरूट के साथ संपादित
sebpiq

जवाबों:


24

यदि आपका सर्वर केवल लोकलहोस्ट इंटरफेस पर सुन रहा है, तो आप इसे दूरस्थ कंप्यूटर से एक्सेस नहीं कर पाएंगे। यह आपकी प्राथमिक समस्या प्रतीत होती है, क्योंकि आपके नेटस्टैट आउटपुट में केवल 127.0.0.1:3000 सूचीबद्ध है।

आपको यह सुनिश्चित करने की भी आवश्यकता होगी कि "mydomain.com" आपकी मशीन के लिए सही आईपी पते का समाधान करता है, जैसे कि इसे जोड़ने से उस मशीन के बाहरी इंटरफ़ेस के साथ संचार होगा।


मैं इसके नाम का उपयोग करके मशीन को भेज सकता हूं, इसलिए मुझे लगता है कि नाम का समाधान यहां समस्या नहीं है। मैं कैसे बना सकता हूँ ताकि सर्वर कहीं से भी सुने?
२३:१३ पर sebpiq

1
@sebpiq यह संकल्प प्रोग्राम-विशिष्ट है। आपको प्रोग्राम के श्रोता को नाम { eth0, या ऐसा कुछ), आईपी एड्रेस (192.168.1.99, या ऐसा कुछ), या मैक पते द्वारा सही इंटरफ़ेस से बांधने की आवश्यकता है । यह कार्यक्रम पर निर्भर करता है।
मोनिका को बहाल करना - Jul--

uugh ... लगता है पागल: S मैं उस बारे में Google को कोशिश करूँगा। मेरा सर्वर नोड.जेएस है, इसलिए मैं जांच करूंगा कि क्या जानकारी है कि मुझे किस इंटरफ़ेस से कनेक्ट करने की आवश्यकता है।
sebpiq

येपी !!! @ObsessiveFOSS और dobey आपको बहुत बहुत धन्यवाद! मेरा नोड.जेएस सर्वर वास्तव में केवल लोकलहोस्ट पर सुन रहा था। मुझे नहीं पता था कि वह ऐसा कर रहा था, और किसी भी ट्यूटोरियल ने इसका उल्लेख नहीं किया।
sebpiq

@sebpiq कोई समस्या नहीं है। :-)
मोनिका को पुनः स्थापित करें - Jul--

13

मुझे हाल ही में एक नोडज HTTPS सर्वर के साथ यह समस्या थी, और इसका समाधान "लोकलहोस्ट", "127.0.0.1" या यहां तक ​​कि डोमेन नाम का उपयोग नहीं करना था। यह "0.0.0.0" का उपयोग करना था

मेरा मानना ​​है कि यह एक वाइल्डकार्ड के रूप में कार्य करता है, अब डोमेन नाम के माध्यम से सार्वजनिक संकल्प के लिए अनुमति देता है और यह "लोकलहोस्ट" के साथ भी काम करता है

संपादित करें: यहां 0.0.0.0 विषय पर एक सर्वरफॉल्ट पेज का लिंक दिया गया है: /server/78048/whats-the-difference-between-ip-address-0-0-0-0-and-and 127-0-0-1


"0.0.0.0" का उपयोग कहाँ करें?
आदेपन

@Adaephon खैर मेरे मामले में, मैंने एक नोड-आधारित वेब सर्वर बनाया। : मैं बदलना पड़ा }).listen(3000, '127.0.0.1'); करने के लिए }).listen(3000, '0.0.0.0'); मेरी कोड में।
सामी फवाद

@Adaephon तो मुझे यकीन नहीं है कि वह कितनी मदद कर रहा था, लेकिन जहाँ भी आप आईपी / होस्टनाम को परिभाषित कर रहे हैं, इसके बजाय 0.0.0.0 प्रयास करें।
सामी फवाद

क्या आप कृपया मेरे पोस्ट पर जा सकते हैं? stackoverflow.com/questions/37922804/…
Kar19

1
0.0.0.0 (या बाइनरी प्रतिनिधित्व 0) सॉकेट इंटरफ़ेस के दृष्टिकोण से सभी को सुनने के रूप में माना जाता है। आप एक और आईपी दे सकते हैं और यह केवल उस इंटरफेस को सुनेगा जहां आपके पास वह आईपी है। उदाहरण के लिए, यदि आप 127.0.0.1 देते हैं, तो आप केवल 127 से कनेक्शन प्राप्त कर सकते हैं। *। *। * IPs (लोकलहोस्ट वास्तव में), या अन्य कंप्यूटरों से गंभीर रूप से बॉट किए गए राउटिंग टेबल जो 127.0.0.1 के लिए आपकी एक्सेस करेंगे (यह परीक्षण करने के लिए अंतिम मामला!)
पॉल स्टेलियन

3

क्या कोई मौका है कि आप एडब्ल्यूएस या किसी अन्य क्लाउड सेवाओं का उपयोग कर रहे हैं? उस स्थिति में पोर्ट को निष्क्रियता (OS) कॉन्फ़िगरेशन स्तर पर या उसके बाद खोला जाना चाहिए। विशेष रूप से AWS में आपको "सिक्योरिटी ग्रुप्स" की तलाश होनी चाहिए जहाँ आपको पोर्ट 3000 तक पहुँच प्राप्त होनी चाहिए

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