Моя рабочая станция и сервер находятся в одном сегменте локальной сети и могут пинговать друг друга (и я могу без проблем подключиться к серверу по ssh со своей рабочей станции).
Сделал установку Apache по умолчанию на CentOS 7.
Запустил службу, но не могу зайти на свой веб-сервер со своей рабочей станции.
Порт 80 отчета nmap фильтруется.
Я отключил SELinux на сервере, но порт все еще фильтруется.
Вот что мне выдает netstat -l:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp6 0 0 [::]:http [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
raw6 0 0 [::]:ipv6-icmp [::]:* 7
Странно, netstat -na показывает, что порт 80 прослушивается, но для ipv6 (хотя я где-то читал, что это не обязательно означает, что он не прослушивается и для ipv4)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 64 10.1.1.1:22 10.2.2.2:44939 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
raw6 0 0 :::58 :::* 7
Вот соответствующая часть моего /etc/httpd/conf/httpd.conf (которую я не менял)
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<Files ".ht*">
Require all denied
</Files>
Служба, похоже, работает нормально:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since Fri 2015-10-02 08:36:40 EDT; 1h 27min ago
Process: 23294 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
Main PID: 23302 (httpd)
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─23302 /usr/sbin/httpd -DFOREGROUND
├─23303 /usr/sbin/httpd -DFOREGROUND
├─23304 /usr/sbin/httpd -DFOREGROUND
├─23305 /usr/sbin/httpd -DFOREGROUND
├─23306 /usr/sbin/httpd -DFOREGROUND
└─23307 /usr/sbin/httpd -DFOREGROUND
Почему он не прослушивает порт 80?
решение1
Как прокомментировал ваш пост Майкл Хэмптон, я готов поспорить, что ваш брандмауэр (iptables) блокирует ваш трафик.
Либо отключите его ( systemctl disable firewalld
), либо разрешите трафик через порт 80 ( firewall-cmd --zone=public --add-port=80/tcp --permanent
).
решение2
Тот факт, что порт 80 фильтруется или нет, не имеет значения для вывода netstat. Даже если iptables настроен на блокировку (DROP или REJECT) подключения к этому порту, вы должны увидеть, что Apache прослушивает порт 80.
Дело в том, что httpd настроен на прослушивание ОБА IPv4 и IPv6 ЛЮБЫХ адресов (0.0.0.0 и ::) и в этом случае netstat показывает только IPv6. Объяснение здесь:
https://bugs.launchpad.net/ubuntu/+source/net-tools/+bug/657270
Короче говоря: в этом случае соединение IPv6 способно обслуживать ОБА протокола, и поэтому открывается только один сокет. И поскольку открыт только один сокет, в выводе netstat отображается только один сокет.
решение3
Проверьте правила iptables ( iptables-save
) и посмотрите, разрешен ли порт 80.
Для тестирования вы можете сделать service iptables stop
или iptables -F
.