2012-07-09 23 views
17

काम नहीं करता है मैंने वर्चुअलबॉक्स पोर्ट अग्रेषण मार्गदर्शिका, इस साइट और अन्य साइटों में समान प्रश्न पढ़े हैं लेकिन समाधान नहीं मिला।होस्ट पोर्ट 80 से वर्चुअलबॉक्स पोर्ट 80 तक पोर्ट अग्रेषण

अतिथि ओएस (उबंटू) पर यूएफडब्ल्यू सक्षम है, पोर्ट 80 और 22 खुले हैं। मैं मेजबान से ubuntu तक ssh कर सकते हैं और मेजबान ब्राउज़र से ubuntu साइट का उपयोग कर सकते हैं।

अतिथि पर, मैं नेट और होस्टोनली (vboxnet3) एडाप्टर सेट करता हूं। भी खोला रूटर पोर्ट 80 (192.168.1.90) अतिथि आईपी 192.168.70.10

तो अतिथि सेटिंग्स में है> नेट> पोर्ट अग्रेषण मैं डाल:

टीसीपी मेजबान आईपी: 192.168.1.90 मेजबान बंदरगाह: 80 अतिथि-आईपी: 1 9 2.168.70.10 गेस्टोस्ट-पोर्ट: 80

हालांकि, यह सेटिंग काम नहीं करती है। अगर आप मुझे सही रास्ते पर निर्देशित करते हैं तो मैं सराहना करता हूं।

+0

मुझे भी एक ही समस्या का सामना करना पड़ रहा है, हालांकि मेजबान मशीन पर मेजबान मशीन पर 1024 से अधिक पोर्ट पोर्ट मशीन पर काम कर रहा है, लेकिन अतिथि मशीन पर किसी भी बंदरगाह के लिए होस्ट मशीन का पोर्ट 80 काम नहीं कर रहा है ... मैं मैक पर वर्चुअल बॉक्स का उपयोग कर रहा हूं। अगर आपको अपनी समस्या का समाधान मिल जाए तो कृपया मुझे बताएं? –

उत्तर

5
http://www.virtualbox.org/manual/ch06.html#natforward

अग्रेषण मेजबान बंदरगाहों < के अनुसार

1024 असंभव:

यूनिक्स आधारित मेजबान पर (जैसे लिनक्स, सोलारिस, मैक ओएस एक्स) से 1024 से नीचें बंदरगाहों के लिए बाध्य करने के लिए संभव नहीं है अनुप्रयोग जो रूट द्वारा नहीं चलाए जाते हैं। नतीजतन, यदि आप इस तरह के पोर्ट अग्रेषण को कॉन्फ़िगर करने का प्रयास करते हैं, तो वीएम शुरू करने से इंकार कर देगा।

यह VirtualBox के रूट के रूप में चलाया जा सकता है, जो -will- आप होस्ट बंदरगाहों < 1024 अग्रेषित करने के लिए, इसलिए यदि आप VirtualBox के साथ ऐसा करने के बारे में अटल हैं, तो आप जड़ हो जाते हैं और VirtualBox के इस तरह से निष्पादित कर सकते हैं अनुमति देते हैं:

$ sudo su - 
# VirtualBox 
8

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

  1. होस्ट पोर्ट 8080 से अतिथि पोर्ट 80 तक आगे बढ़ें। सुनिश्चित करें कि यह आपके होस्ट मशीन पर पोर्ट 8080 पर ब्राउज़र को इंगित करके कार्य कर रहा है।
  2. सुनिश्चित करें कि आपके होस्ट पर sshd चल रहा है। मैक ओएस एक्स में, System Preferences -> Internet & Wireless -> Sharing पर जाएं और सुनिश्चित करें कि Remote Login चेक किया गया है।
  3. आपके मेजबान

    $ sudo su - 
    
  4. आगे मेजबान पोर्ट 80 पर बनने जड़ पोर्ट 8080 का उपयोग कर SSH की मेजबानी के लिए (बाँध पता \* बंदरगाह सभी इंटरफ़ेस पर उपलब्ध कराता है)।

    # ssh [email protected] -L \*:80::8080 
    

ध्यान दें कि यह जो कुछ भी साख आप yourusername के लिए उपयोग से लॉग इन करना, तो यह सबसे अधिक संभावना अपने पासवर्ड के लिए पूछना होगा और जब आप सफल होते हैं, वास्तव में आपको लॉग इन के लिए कहेगा।

अब आप अपनी मेजबान मशीन पर पोर्ट 80 हिट करने में सक्षम होना चाहिए और अपने होस्ट ओएस पर अपने मेजबान मशीन, उर्फ ​​पोर्ट 80 पर बंदरगाह 8080 को मारने के समान सेवा देखें।

आप अपने नेटवर्क पर दूसरों को उस मशीन पर पोर्ट 80 को हिट करने में सक्षम हो नहीं करना चाहते, लेकिन अभी भी अपने मेजबान सिस्टम पर किसी ब्राउज़र से इसे करने के लिए प्राप्त करने में सक्षम होना चाहते हैं, localhost के लिए बंदरगाह के लिए बाध्य:

# ssh [email protected] -L localhost:80::8080 
22

विलियम उल्लेख किया है, एक लिनक्स/यूनिक्स ऑपरेटिंग सिस्टम जब तक कि वे रूट के रूप में चलाने रहे हैं एक प्रक्रिया बंदरगाहों < 1024 पर सुनने नहीं दूँगा। आप वर्चुअलबॉक्स को रूट के रूप में चला सकते हैं, हालांकि मैंने ऐसा करने पर सख्त चेतावनियां पढ़ी हैं। यह शायद बेहद असुरक्षित है।

इसके बजाय, पोर्ट 80 पर सुनने के लिए मेजबान सिस्टम पर अपाचे 2 सेट करें (इसे पहले से स्थापित किया जाना चाहिए), लेकिन होस्ट मशीन पर वेबसाइट की सेवा करने के बजाय, इसे कुछ उच्च पोर्ट पर प्रॉक्सी ट्रैफिक करें - कहें , 8080 - मेजबान पर।

फिर, VirtualBox है आगे अतिथि ओएस बंदरगाह के लिए उच्च बंदरगाह 80

अपाचे सेटअप कुछ इस तरह हो सकता है कि:

  1. स्थापित HTTP प्रॉक्सी मॉड्यूल

    a2enmod proxy_http

  2. सुनिश्चित करें कि /etc/apache2/ports.conf में Listen 80 निर्देश है

  3. /etc/apache2/sites-available में एक और साइट जोड़ें या डिफ़ॉल्ट साइट को संशोधित (या बस ports.conf में यह तमाचा)

     
    <VirtualHost *:80> 
        ProxyPreserveHost On 
        ProxyRequests Off 
        ProxyPass/http://localhost:8080/ 
        ProxyPassReverse/http://localhost:8080/ 
    </VirtualHost> 
    
  4. उछाल अपाचे

    service apache2 restart

VirtualBox के सेटअप होगा host port: 8080, guest port: 80

यातायात जाना होगा:

client --> host:80 --> Apache --> host:8080 ---> vbox NAT ----> guest:80 

यह विलियम की ssh सुरंग के समान है, लेकिन मैनुअल हस्तक्षेप की आवश्यकता नहीं है (फिर से डालने में कोई पासवर्ड) हर बार मेजबान रिबूट है।

+3

यदि आपका होस्ट ओएस एक * निक्स ओएस है, तो आप पोर्ट आईपी से उच्च पोर्ट पर यातायात को पुनर्निर्देशित करने के लिए [iptables] (http://www.catonmat.net/blog/unprivileged-programs-privileged-ports/) का उपयोग कर सकते हैं। मेजबान ओएस। अपाचे या एसएसएल सुरंगों को शामिल करने से कहीं ज्यादा बेहतर लगता है। – Peter

+1

प्रॉक्सी मॉड्यूल का उपयोग कर एसएसएल अनुरोधों को आगे बढ़ाने के लिए उतना आसान है? यानी '<वर्चुअलहोस्ट *: 443> 'या क्या अतिरिक्त कदम हैं? –

संबंधित मुद्दे