वैग्रांट का बंदरगाह अग्रेषित नहीं कर रहा है [बंद]


108

मैं एक छोटी सी समस्या के लिए शुरू हो रही गाइडvagrant के अंत में चल रहा हूँ । मैं एक CentOS बेसबॉक्स पर काम कर रहा हूं जिसमें Apache2 चल रहा है (कठपुतली के माध्यम से प्रावधान)। मैंने निम्नलिखित पंक्ति का उपयोग करके वेब अनुरोधों के लिए पोर्ट अग्रेषण स्थापित किया है Vagrantfile:

 config.vm.forward_port "web", 80, 4567

लेकिन जब मैं उस पोर्ट के लिए अनुरोध करता हूं, तो वे असफल हो जाते हैं। Safari द्वारा रिपोर्ट की गई त्रुटि 'सफारी "पेज को नहीं खोल सकती है" http: // localhost: 4567 / "क्योंकि सर्वर अनपेक्षित रूप से कनेक्शन हटा दिया गया है।'

मैंने vagrant reloadस्क्रॉल में "[डिफ़ॉल्ट] - वेब: 80 => 4567 (एडॉप्टर 1)" देखा, तो मुझे इसे कहां से शुरू करना चाहिए? धन्यवाद।


1
क्या curl -v 'http://localhost:4567/'कहता है? कभी-कभी सफारी त्रुटि संदेशों को छुपाने में सफारी थोड़ी बहुत अच्छी होती है।
स्टीव लोस

2
इसके अलावा, curl 'http://localhost:80'वीएम से ही काम करता है? यदि नहीं, तो समस्या पोर्ट अग्रेषण नहीं है।
स्टीव लोश

4
curlVM में @Steve Losh काम कर रहा है। curlमेजबान से मुझे देता है (52) Empty reply from server
हांक गे

आवारा पुनः लोड समान प्रश्न पर मुझे मदद ...
haudoing

मेरे लिए यह मामला सिम्फनी 3 के साथ था: - जब sudo php बिन / कंसोल सर्वर चलाते हैं: चलाएं जो 127.0.0.1:8000 पर सर्वर चला रहा है, तो मैं वेब ब्राउज़र से नहीं पहुंच सकता, वर्चुअल मशीन में कर्ल एक्सेस किया गया। जब वेब निर्देशिका में sudo php -S 0.0.0.0:8000 भागा, तो मैं 127.0.0.1:8082/app_dev.php एक्सेस कर सका । समझ में नहीं आता कि ऐसा क्यों होता है, लेकिन काम करता है।
डेरियस .V

जवाबों:


80

मैं इसे और अधिक टिप्पणियों के बजाय एक वास्तविक उत्तर दूंगा।

पहली बात: कोशिश करो curl 'http://localhost:80' VM के भीतर से । यदि वह काम नहीं करता है, तो यह निश्चित रूप से पोर्ट अग्रेषण नहीं है।

अगला: प्रयास करें curl -v 'http://localhost:4567/' अपने होस्ट मशीन से करें। कर्ल आपको सफारी से बेहतर त्रुटि संदेश दे सकता है।

मैं जाँचता हूँ कि पोर्ट 80 तक पहुँच को प्रतिबंधित करने के लिए कोई फ़ायरवॉल स्थापित नहीं हैं। डिफ़ॉल्ट Vagrant VM (Ubuntu) फ़ायरवॉल सेट अप के साथ नहीं आता है, लेकिन आपने कहा कि आप कुछ और उपयोग कर रहे हैं, इसलिए यह इसके लायक हो सकता है। जाँच करने के लिए।

यदि ऐसा नहीं है, तो पोर्ट 80 पर सूचीबद्ध अपाचे के अलावा कुछ और बनाने की कोशिश करें। एक साधारण HTTP सर्वर के साथ पायथन जहाज जिसका आप उपयोग कर सकते हैं - फ़ोल्डर के साथ जाएं index.htmlऔर चलाएं sudo python -m SimpleHTTPServer 80, फिर दोनों बॉक्स से कर्ल के साथ मारने की कोशिश करें। यदि वह काम करता है, तो यह संभवतः एक अपाचे कॉन्फ़िगरेशन समस्या है। मेरे पास अपाचे के साथ पर्याप्त अनुभव नहीं है अगर ऐसा है तो (मैं नगनेक्स का उपयोग करता हूं)।


14
असल में, मैं RedHat और में चूसना iptables। मैंने यह सुनिश्चित करने के लिए जाँच की कि डिफ़ॉल्ट नीति ACCEPTआने वाले कनेक्शनों के लिए थी , लेकिन RedHat की कस्टम नियम श्रृंखला पर ध्यान नहीं दिया, जिसमें चेन REJECTमें अंतिम नियम के रूप में एक कैच-ऑल नियम है। tl, डॉ। मैं रास्ते में एक फ़ायरवॉल था और बस ध्यान नहीं दिया।
हांक गे

धन्यवाद! डरपोक फ़ायरवॉल नियम आरएचईएल 5.5 पर मेरी समस्याओं का कारण है।
रोश

मैं नीचे रॉबर्ट की टिप्पणी को पुनर्मुद्रित करता हूं क्योंकि यह जांचने का एक ऐसा तुच्छ तरीका है: service iptables stopएक अतिथि फ़ायरवॉल समस्या को जल्दी से हटाने के लिए रूट के रूप में चलाएँ । यदि आवश्यक हो तो बाद में इसे फिर से उपयोग करना।
अरनौद मीरूट

1
एक अजीब सेंटोस छवि के साथ एक ही मुद्दा था; iptablesलगभग सब कुछ प्रतिबंधित कर रहा था। मैं इस iptable सेंटोस गाइड ( धारा 3 में समाधान एक साधारण नियम सेट लिख ) और यह एक आकर्षण की तरह काम किया :)
GabLeRoux

मेरे लिए कर्ल अंदर काम कर रहा था इसलिए मैंने नेटवर्किंग चालू की Vagrantfileऔर कमांड चलाvagrant reload
abirathore2006

266

मैं एक अतिरिक्त नोट जोड़ना चाहता था जो अक्सर वीएम के भीतर सर्वर के कारण होता है क्योंकि यह बांधता है 127.0.0.1, जो लूपबैक है। आप यह सुनिश्चित करना चाहेंगे कि सर्वर बाध्य हो 0.0.0.0ताकि सभी इंटरफेस इसे एक्सेस कर सकें।

कुछ बिल्ट-इन ऐप सर्वर जैसे कि Django के डेवलपमेंट सर्वर और कुछ रूबी सर्वर डिफ़ॉल्ट रूप से 127.0.0.1डिफ़ॉल्ट होते हैं इसलिए यह देखने के लिए कुछ है।

इसके अलावा, स्टीव ने जो कुछ भी कहा है वह सही है: सुनिश्चित करें कि यह वीएम के भीतर से काम करता है और कुछ अन्य सरल सर्वरों को आज़माने और यह पता लगाने की कोशिश करता है कि क्या यह कॉन्फ़िगरेशन की समस्या है।


8
यह बन्दूक चलाने वाले वेब्रिक के लिए आवश्यक फिक्स था।
रोंज

इससे मेरे लिए समस्या हल हो गई। Torquebox को 0.0.0.0 से बाँधने के लिए इसे साथ में चलाएँ: torquebox run -b 0.0.0.0
Bartek Skwira

3
हाँ, यह समस्या थी। 0.0.0.0 को बांधने की आवश्यकता है। मुझे आश्चर्य है कि क्या कोई ऐसा तरीका है जिससे वैग्रैंट भविष्य में इस समस्या को दूर कर सकता है?
CMCDragonkai 3

1
सिनट्रा और वीब्रिक के साथ भी यही समस्या है: "सेट: बाइंड, '0.0.0.0'" ने इस समस्या को हल किया
pragmatic_programmer

यह मेरे लिए तय था
साठवाँ

33

मुझे CentOS 6.3 w / NGINX पर एक ही समस्या थी और मुझे योनि बॉक्स पर iptables में होने का उत्तर मिला।

योनि बॉक्स पर बैश से, इन चरणों का पालन करें:

पहली सूची वर्तमान आईपीटेबल नियम

iptables -L -v

फिर वर्तमान नियमों को फ्लश करें:

iptables -F

एसएसएच कनेक्शन को टीसीपी पोर्ट 22 पर अनुमति दें

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

INPUT, FORWARD और OUTPUT चेन के लिए डिफ़ॉल्ट नीतियां सेट करें

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

लोकलहोस्ट के लिए एक्सेस सेट करें

iptables -A INPUT -i lo -j ACCEPT

पैकेट से संबंधित और संबंधित कनेक्शन स्वीकार करें

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

समायोजन बचाओ

/sbin/service iptables save

संशोधित नियमों की सूची बनाएं

iptables -L -v

कर्ल लोकलहोस्ट: [पोर्ट #] या बाहरी ब्राउज़र से इसे अपने ब्राउज़र में हिट करें

CentOS iptable configs के बारे में अधिक जानकारी यहाँ मिली:

http://wiki.centos.org/HowTos/Network/IPTables

सौभाग्य।


2
इसे लिखने के लिए धन्यवाद। फेडोरा 18 पर मुझे यही समस्या थी, इसलिए यह CentOS के लिए विशिष्ट नहीं है। मुझे उम्मीद है कि किसी और की मदद करता है। :)
बेंजामिन

4
यह मैं CentOS पर था। service iptables stop
रॉबर्ट

2
iptables -Fअकेले मेरे लिए यह किया
code_monk

मुझे इस ब्लॉग पोस्ट में सूचीबद्ध कुछ निष्पादन कमांड के साथ इसका एक ठोस समाधान मिला, इसी मुद्दे को हल करने के लिए techie-notebook.blogspot.com/2014/05/… मुझे अपना रास्ता $ {os_path} अनुभागों से बदलना पड़ा, जैसा कि मैंने नहीं किया था उस चर उपलब्ध नहीं है।
जोशुआ फ्रिक

27

मेरे लिए एक बेहतर समाधान फ़ायरवॉल को अक्षम करना है

service iptables stop
chkconfig iptables off

+1 ने मेरे लिए काम किया। एक स्थानीय वर्चुअलबॉक्स उदाहरण का उपयोग करने के लिए, मुझे फ़ायरवॉल की कोई आवश्यकता नहीं थी।
एडुआर्डो

यह एक अच्छा चाल है कि अगर आप एक अस्थायी ठीक करना चाहते हैं
brrystrw

0

मैं मिचेल की तरह एक और नोट जोड़ना चाहता हूं। अगर मेरा मामला मैं इसे 80 से 6789 पर अग्रेषित करता हूं

$ curl -v http://localhost:6789

और मुझे मिल गया

<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>

फिर, मैंने इसके बजाय आईपी पते का उपयोग किया, इसे सही HTML संदेश मिला।

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