Apache2 IPv4 tcp पोर्ट पर नहीं चलता है


23

मुझे अपने डेबियन 7 सर्वर पर अपाचे 2 चलाने की आवश्यकता है। लेकिन यह केवल tcpv6 पोर्ट पर चलता है, tcpv4 पोर्ट पर नहीं। मैंने इसे एप्ट-गेट इंस्टॉल के साथ स्थापित किया। अगर मैं लोकलहोस्ट या 127.0.0.1 या अपने सर्वर आईपीवी 4 पते पर जाता हूं तो यह किसी भी वेबसाइट को प्रदर्शित नहीं करता है।

मेरा /etc/apache2/ports.conf:

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
 # If you add NameVirtualHost *:443 here, you will also have to change
 # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
 # to <VirtualHost *:443>
 # Server Name Indication for SSL named virtual hosts is currently not
 # supported by MSIE on Windows XP.
 Listen 443
</IfModule>

<IfModule mod_gnutls.c>
 Listen 443
</IfModule>

netstat -plntu:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      3558/sshd       
tcp        0      0 0.0.0.0:3466            0.0.0.0:*               LISTEN      2820/mysqld     
tcp6       0      0 :::80                   :::*                    LISTEN      2097/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      3558/sshd       

3
बदलने का प्रयास करें Listen 80करने के लिए Listen 0.0.0.0:80। आप अधिक जानकारी के लिए प्रलेखन httpd.apache.org/docs/2.2/bind.html देखें।
प्रदीपचेत्री १४

@pradeepchhetri धन्यवाद। यह काम करता हैं। मैं किसी भी कंप्यूटर से अपने सर्वर पते तक पहुंच सकता हूं और यह सामग्री (आईपी पते / some.php) दिखाता है, लेकिन मैं इस सर्वर से कुछ.php तक पहुंच नहीं करता हूं। मैंने लोकलहोस्ट, 127.0.0.1 और एक्सटर्नल आईपी: पोर्ट नंबर की कोशिश की है जो दूसरे पीसी से काम करता है ... लेकिन यह काम नहीं करता है।
मत्तो

1
आप के उत्पादन sudo iptables -nvLऔर पोस्ट कर सकते हैं sudo sestatus? मुझे लगता है कि आपके पास कुछ स्थानीय फ़ायरवॉल है जो रोक रहा है।
प्रदीपचेत्री

@ क्या आपको यह स्पष्ट करने की आवश्यकता है, जब यह सामग्री दिखाता है लेकिन काम नहीं कर रहा है, तो क्या इसका मतलब यह है कि यह आपके कच्चे PHP को चलाने के बजाय दिखा रहा है? यदि हां, तो आपको PHP मॉड्यूल को सक्षम करने की आवश्यकता है। मुझे लगता है कि a2enmod php5यह आपके लिए करना चाहिए।
रॉबट 2

3
लिनक्स मशीनें आमतौर पर IPv6 पते पर सुनने के पीछे एक ड्यूलस्टैक IPv4 + IPv6 सॉकेट छिपाती हैं ::
पावेल Paमिरडा

जवाबों:


32

तथ्य यह है कि netstat यहाँ केवल tcp6 दिखाता है समस्या नहीं है। यदि आप एक पते को सुनने के लिए निर्दिष्ट नहीं करते हैं, तो अपाचे सभी समर्थित पते वाले परिवारों को एकल सॉकेट (डिजाइन कारणों के लिए, sshd प्रति पता और पते के परिवार के लिए एक अद्वितीय सॉकेट का उपयोग करता है, इसलिए आपके नेटस्टैट आउटपुट में दो बार दिखाता है) का उपयोग करते हुए सुनेंगे।

यहाँ मेरी एक प्रणाली है, जिसमें केवल tcp6 सॉकेट वाले अपाचे दिखाए जा रहे हैं, और फिर भी IPv4 और IPv6 दोनों के माध्यम से काम करना ठीक है।

woodpecker ~ # netstat -anp |grep apache
tcp6       0      0 :::80    :::*       LISTEN      1637/apache2        
tcp6       0      0 :::443   :::*       LISTEN      1637/apache2        
woodpecker ~ # wget http://127.0.0.1/ -O /dev/null
--2013-12-25 08:52:38--  http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...
# wget http://[::1]/ -O /dev/null
--2013-12-25 08:53:00--  http://[::1]/
Connecting to [::1]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 45 [text/html]
...

यदि आप wget http://127.0.0.1/ -O -सर्वर पर चलते हैं तो क्या होता है? क्या यह सफलतापूर्वक जुड़ता है? क्या यह आपकी वेबसाइट पर अपेक्षित रूप से कच्चा HTML लौटाता है?


धन्यवाद, अब यह काम करता है, लेकिन मुझे अभी तक केवल एक छोटी सी समस्या है। मैंने इसके बारे में ऊपर लिखा है।
मटका

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


1
  1. 127.0.0.1 केवल एक मशीन के लिए स्थानीय है, आपको स्थानीय लूपबैक आईपी / पते का उपयोग करने के लिए एक ब्राउज़र में स्वयं सर्वर पर रहना होगा;

  2. आपके पास फ़ायरवॉल अवरुद्ध पोर्ट हो सकते हैं;

  3. सुनिश्चित करें कि अपाचे चल रहा है और ठीक से काम कर रहा है, त्रुटि लॉग की जांच करें;

  4. अपने सभी अपाचे कॉन्फिगर्स को डबल चेक करें;

  5. क्या आप मूल www या उपयोगकर्ता public_html निर्देशिका से होस्ट कर रहे हैं?

  6. डबल चेक मालिक और अनुमतियाँ।


लगभग वर्ष 2019 (भविष्य में आपका स्वागत है):

  • डिफ़ॉल्ट रूप से दुनिया के अधिकांश आईपीवी 6 का उपयोग करता है और यदि विफल रहता है, तो आईपीवी 4 पर वापस गिरता है;

  • अब हमारे पास ipv6, और vise-versa पर ipv4 सुरंग हैं;

  • ज्यादातर OS, प्रोग्राम, क्लाइंट और सर्वर एक जैसे होते हैं।

  • कोई और अधिक NAT की दुनिया में आपका स्वागत है और अपने डिवाइस के लिए फ़ायरवॉल / फ़िल्टर्स पर अब निर्भर रहना होगा;

  • मैं एक ही समय में ipv4 और ipv6 दोनों का समर्थन करते हुए आपके सिस्टम को सभी दोहरी खड़ी रखने की कोशिश करने की सलाह दूंगा, इसलिए जब जादू स्विच होता है, तो आप अभी भी ऊपर और चल रहे हैं। मेरा ओएस, नेटवर्क, यहां तक ​​कि मेरा आईएसपी भी ड्यूल स्टैक्ड एंड टू एंड है। अगर मैं चाहता था तो मैं पूरी तरह से आईपीवी 4 को बंद कर सकता था, लेकिन अगर कोई सुरंग आईपीवी 4 से वापस आईपीवी 6 में मौजूद नहीं है तो वहां क्या काम हो सकता है।


जब आप 'फोल्डर' शब्द का इस्तेमाल करते थे, तब मैं आपको +1 देने या न देने के टेंटरहूक पर था। लेकिन IPv6 को अक्षम नहीं करने का विचार इतना महत्वपूर्ण है - जैसा कि यह सुनिश्चित कर रहा है कि आपका फ़ायरवॉल IPv6 के लिए ठीक से कॉन्फ़िगर किया गया है। मुझे पता है कि कई लोगों को लगता है कि NAT सुरक्षा है लेकिन कम से कम यह एक भ्रम है (यह कई सेवाओं के लिए भी एक समस्या है)। वह और आपके अन्य बिंदु सभी मान्य हैं इसलिए +1 है।
प्रिफटन

मुझे क्षमा करें, मेरा मतलब था निर्देशिका :-P
cdmlb

अगर मैं कर सकता हूं तो इसके लिए मैं आपको एक और +1 दूंगा। मैं बल्कि आश्चर्यचकित हूं और यह भी विनम्र हूं कि आप इसे बदल देंगे। मैं एक शुद्धतावादी हूं, मुझे लगता है कि मैं सब कह सकता हूं। यह मुझे परेशान करता है और मुझे परेशान करता है कि एक निश्चित कंपनी इसे सही करती थी और फिर इसे 'फ़ोल्डर' में बदल देती थी। खैर शायद यह है कि इसे लोगों के लिए अधिक 'अनुकूल' बनाया जाए, लेकिन फिर इसे दूसरों के लिए सही शब्द के रूप में स्वीकार किया गया है, जिन्हें बेहतर जानना चाहिए। मुझे नहीं पता। वैसे भी आपकी पूरी सूची कुछ ऐसी है जो मैं चाहता हूं कि अधिक लोग समझें! काश कई नहीं ...
21

-1

*

wget http://127.0.0.1/ -O / dev / null

* IPv4 या IPv6 को हैंडल किए बिना स्थानीय सर्वर से कनेक्शन का प्रतिनिधित्व करता है, यदि आप इस सर्वर के वास्तविक IPv4 आईपी पते के लिए लोकलहोस्ट (या 127.0.0.1) बदलते हैं, तो आप कुछ भी नहीं कर सकते क्योंकि कनेक्शन से इनकार कर दिया।

आपको कॉन्फ़िगर फ़ाइलों में आईपी का वर्णन करने का प्रयास करें: NameVirtualHost: 80 सुनो: 80

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