Apache2 не працює на порту IPv4 tcp


23

Мені потрібно запустити Apache2 на моєму сервері Debian 7. Але він працює лише на порту tcpv6, а не на порту tcpv4. Я встановив його за допомогою apt-get install. Якщо я перейду до localhost або 127.0.0.1 або IPv4 адреси мого сервера, він не відображатиме жодного веб-сайту.

Мій /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

@pradeepchhetri Дякую Це працює. Я можу отримати доступ до своєї адреси сервера з будь-якого комп’ютера, і він показує вміст (IP-адреса / some.php), але я не маю доступу до some.php з цього сервера. Я спробував localhost, 127.0.0.1 і зовнішній IP: номер порту, який працює з іншого ПК ... Але це не працює.
Мато

1
Чи можете ви розмістити вихід sudo iptables -nvLі sudo sestatus? Я думаю, у вас є місцевий брандмауер, який заважає.
pradeepchhetri

@Мато вам потрібно уточнити, коли він показує вміст, але не працює, ви маєте на увазі, що він показує ваш необроблений PHP замість запуску? Якщо це так, вам потрібно включити модуль PHP. Я думаю, що a2enmod php5слід зробити це за тебе.
robbat2

3
Машини Linux, як правило, приховують подвійний стек IPv4 + IPv6 сокет за прослуховуванням на IPv6-адресу ::.
Павло Шімерда

Відповіді:


32

Те, що netstat показує лише tcp6, тут не проблема. Якщо ви не вказали адресу для прослуховування, apache прослухає всі підтримувані родини адрес, використовуючи один сокет (з дизайнерських міркувань, sshd використовує унікальний сокет на кожну родину та адресу адреси, отже, відображається двічі у вашому виході netstat).

Ось одна з моїх систем, що показує, що апаш має лише розетки 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. Але сьогодні я бачив якусь справді дивну поведінку. Не змінюється брандмауер, не змінюється Apache, але якимось чином віддалені хости можуть підключатися лише через IPv6 - що є проблемою для тих, хто ще не має IPv6. Я, звичайно, щось вирішу, але ви абсолютно правильні (хоча виклик, який ви надаєте, в моєму випадку, на жаль, не застосовується).
Прифтан


1
  1. 127.0.0.1 є локальним для машини, ви повинні бути на самому сервері в браузері, щоб використовувати локальну ip / адресу локальної петлі;

  2. Можливо, у вас є брандмауер, що блокує порти;

  3. Переконайтесь, що apache працює і працює належним чином, перевірте журнали помилок;

  4. Перевірте всі свої конфігурації apache;

  5. Ви хостите з кореневого www або каталогу public_html користувача?

  6. Перевірити власника та дозволи.


Майже рік 2019 (Ласкаво просимо в майбутнє):

  • За замовчуванням більша частина світу використовує ipv6, а якщо не працює, знову потрапляє на ipv4;

  • Тепер у нас є ipv4 тунелі над ipv6, і навпаки;

  • Більшість ОС, програм, клієнтів та серверів в основному роблять це зараз;

  • Ласкаво просимо у світ не більше NAT і тепер потрібно залежати від брандмауера / фільтрів прямо до вашого пристрою;

  • Я рекомендую спробувати зберегти ваші системи двояковими, підтримуючи одночасно ipv4 та ipv6, тому коли відбувається перемикання магії, ви все ще працюєте. Моя ОС, мережа, навіть мій провайдер - це двоскладний кінець до кінця. Я міг би повністю відключити ipv4, якщо хотів би, але що там, що може більше не працювати, якщо з ipv6 не буде тунелів назад до ipv6.


Мені було розказано про те, чи потрібно вам давати +1, оскільки ви вживали слово "папка". Але ідея не вимикати IPv6 настільки важлива - як і переконатися, що ваш брандмауер правильно налаштований для IPv6. Я знаю, що багато людей вважають, що NAT - це безпека, але щонайбільше - це ілюзія (це також проблема багатьох служб). Це та ваші інші пункти дійсні, тому позначте +1.
Прифтан

Вибачте, що я мав на увазі каталог :-P
cdmlb

Ну для цього я би дав вам ще +1, якби міг. Я досить здивований і теж принижений, що ти зміниш це. Я пурист - я думаю, що все, що я можу сказати. Це мене змушує і дратує, що певна компанія використовувала правильну корекцію, а потім змінила його на "папку". Ну, можливо, це зробить його більш "доброзичливим" до людей, але тоді, здається, його прийняли як правильне слово для інших, хто повинен краще знати. Не знаю. У всякому разі, весь ваш список - це те, що я дійсно бажаю, щоб більше людей зрозуміли! На жаль, багато хто не ...
Прифтан

-1

*

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

* представляє підключення до локального сервера без обробки IPv4 або IPv6, якщо ви змінили localhost (або 127.0.0.1) на реальну IPv4 IP-адресу цього сервера, ви не можете вивідати що-небудь через відмову в з'єднанні.

Спробуйте описати ваш IP-файл у конфігураційних файлах: NameVirtualHost: 80 Прослуховування: 80

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.