Apache2 nie działa na porcie TCP IPv4


23

Potrzebuję uruchomić Apache2 na moim serwerze Debian 7. Ale działa tylko na porcie tcpv6, a nie na porcie tcpv4. Zainstalowałem go z apt-get install. Jeśli przejdę na localhost lub 127.0.0.1 lub adres IPv4 mojego serwera, nie wyświetli żadnej witryny.

Mój /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
Spróbuj zmienić Listen 80TO Listen 0.0.0.0:80. Więcej informacji można znaleźć w dokumentacji httpd.apache.org/docs/2.2/bind.html .
pradeepchhetri

@pradeepchhetri Dziękujemy. To działa. Mogę uzyskać dostęp do mojego adresu serwera z dowolnego komputera i wyświetlać zawartość (adres IP / some.php), ale nie mam dostępu do some.php z tego serwera. Próbowałem localhost, 127.0.0.1 i zewnętrznego adresu IP: numer portu, który działa z innego komputera ... Ale to nie działa.
Mato,

1
Czy możesz opublikować dane wyjściowe sudo iptables -nvLi sudo sestatus? Myślę, że masz lokalną zaporę ogniową, która zapobiega.
pradeepchhetri

@Mato musisz wyjaśnić, kiedy pokazuje zawartość, ale nie działa, czy masz na myśli, że pokazuje surowe PHP zamiast go uruchamiać? Jeśli tak, musisz włączyć moduł PHP. Myślę, że a2enmod php5powinienem to dla ciebie zrobić.
robbat2,

3
Maszyny z systemem Linux zwykle ukrywają gniazdo dualstack IPv4 + IPv6 za nasłuchiwaniem na adresie IPv6 ::.
Pavel Šimerda

Odpowiedzi:


32

Fakt, że netstat pokazuje tutaj tylko tcp6, nie stanowi problemu. Jeśli nie określisz adresu, na którym chcesz nasłuchiwać, apache będzie nasłuchiwał na wszystkich obsługiwanych rodzinach adresów za pomocą jednego gniazda (ze względów projektowych, sshd używa unikalnego gniazda na adres i rodzinę adresów, dlatego wyświetla się dwa razy na wyjściu netstat).

Oto jeden z moich systemów, pokazujący, że Apache ma tylko gniazda tcp6, a mimo to działa dobrze zarówno przez IPv4, jak i 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]
...

Co się stanie, jeśli uruchomisz wget http://127.0.0.1/ -O -serwer? Czy udało się to połączyć? Czy zwraca nieprzetworzony kod HTML dla Twojej witryny zgodnie z oczekiwaniami?


dzięki, teraz działa, ale mam jeszcze tylko jeden mały problem. Pisałem o tym powyżej.
Mato,

Wiesz, że to szalone, to zawsze było moje doświadczenie. Naturalnie. Jako programista sieci dobrze wiem o INADDR_ANYi IN6ADDR_ANY_INIT. Ale dzisiaj widziałem naprawdę dziwne zachowanie. Bez zmian zapory, bez zmian Apache, ale zdalne hosty mogą się łączyć tylko przez IPv6 - co jest problemem dla tych, którzy nadal nie mają IPv6. Z pewnością coś wypracuję, ale masz całkowitą rację (choć wywołane przez ciebie wezwanie nie ma zastosowania w moim przypadku niestety).
Pryftan


1
  1. 127.0.0.1 jest lokalny tylko dla komputera, musisz być na samym serwerze w przeglądarce, aby użyć lokalnego adresu IP / sprzężenia zwrotnego;

  2. Być może zapora blokuje porty;

  3. Upewnij się, że apache działa i działa poprawnie, sprawdź dzienniki błędów;

  4. Sprawdź dwukrotnie wszystkie konfiguracje Apache;

  5. Czy prowadzisz hosting z katalogu głównego www lub katalogu public_html użytkownika?

  6. Sprawdź dwukrotnie właściciela i uprawnienia.


Prawie rok 2019 (Witamy w przyszłości):

  • Domyślnie większość świata używa ipv6, a jeśli zawiedzie, wraca do ipv4;

  • Mamy teraz tunele ipv4 nad ipv6 i vice-versa;

  • Większość systemów operacyjnych, programów, klientów i serwerów najczęściej robi to teraz;

  • Witamy w świecie, w którym nie ma już NAT-ów i musisz polegać teraz na zaporze ogniowej / filtrach bezpośrednio na urządzeniu;

  • Radziłbym starać się, aby wszystkie wasze systemy były w stosie podwójnym, obsługując jednocześnie ipv4 i ipv6, więc kiedy nastąpi magiczny przełącznik, nadal jesteś gotowy do pracy. Mój system operacyjny, sieć, nawet mój dostawca usług internetowych są zestawione w stosy. Mógłbym całkowicie wyłączyć ipv4, gdybym chciał, ale to, co tam jest, może już nie działać, jeśli nie istnieją tunele z powrotem do ipv6 z ipv4.


Byłem na tropie tego, czy dać ci +1, ponieważ użyłeś słowa „folder”. Ale pomysł, aby nie wyłączać IPv6, jest bardzo ważny - podobnie jak upewnienie się, że zapora sieciowa jest odpowiednio skonfigurowana dla IPv6. Wiem, że wiele osób uważa, że ​​NAT to bezpieczeństwo, ale co najwyżej jest to złudzenie (to także problem wielu usług). To i twoje pozostałe punkty są ważne, więc daj +1.
Pryftan

Przepraszam, miałem na myśli katalog :-P
cdmlb

Cóż, za to dałbym ci kolejne +1, gdybym mógł. Jestem raczej zaskoczony i pokorny, że to zmienisz. Jestem purystą, myślę, że wszystko, co mogę powiedzieć. To mnie denerwuje i denerwuje, że pewna firma kiedyś go poprawiła, a potem zmieniła na „folder”. Cóż, może dlatego, aby uczynić go bardziej „przyjaznym” dla ludzi, ale wydaje się, że zostało przyjęte jako właściwe słowo dla innych, którzy powinni wiedzieć lepiej. Nie wiem W każdym razie twoja cała lista jest czymś, czego naprawdę chciałbym, aby więcej ludzi zrozumiało! Niestety wielu nie ...
Pryftan

-1

*

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

* reprezentuje połączenie z lokalnym serwerem bez obsługi IPv4 lub IPv6, jeśli zmienisz localhost (lub 127.0.0.1) na prawdziwy adres IPvv4 tego serwera, nie będziesz w stanie nic zapomnieć z powodu odmowy połączenia.

Spróbuj opisać swój adres IP w plikach konfiguracyjnych: NameVirtualHost: 80 Listen: 80

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.