Вот моя настройка. У меня есть виртуальная машина, на которой установлен Oracle Linux 7. Я запустил Apache с помощью , service httpd start
и он запустился без проблем. Я создал index.html
файл в , /var/www/html
и /var/www
. Я могу получить доступ к виртуальной машине с моей хост-машины с помощью ping
или ssh
, но когда я открываю веб-браузер и перехожу по IP-адресу, сервер не отвечает.
Я проверил netstat -plent
, и оказалось, что порт 80 прослушивается:
# netstat -plent
tcp6 0 0 :::80 :::* LISTEN 0 121584 36432/httpd
Я имеюсмотрелвнесколько ответычто предполагает, что проблема может быть в iptables, но ни одно из этих решений не помогло. Что еще может быть причиной проблемы?
решение1
Вы забыли открыть порт в брандмауэре.
Например.
firewall-cmd --add-service=http
Запомнисделать его постояннымтакже.
решение2
Судя по выводу netstat, вы слушаете только IPv6.
Вам нужно либо получить доступ к веб-сайту только с помощью IPv6, либо создать еще одну директиву прослушивателя в Apache для прослушивания 0.0.0.0:80. В httpd.conf:
Listen 0.0.0.0:80
Конечно, вы можете прослушивать только тот IP-адрес, на который хотите направлять трафик.
Однако этот совет не подходит, если у вас есть поддержка двухстековых сокетов в Linux. Вам может потребоваться только проверить, включено ли прослушивание двухстековых сокетов. Используя procfs, проверьте этот файл:
/proc/sys/net/ipv6/bindv6only
Если это не 0, вам необходимо изменить его в вашей конфигурации на 0 или явно прослушивать IPv4.
Также проверьте правила вашего брандмауэра; если вы отклоняете трафик на ipv4 или ipv6, это может объяснить. Проверьте здесь:
iptables -t filter -nvL INPUT
ip6tables -t filter -nvL INPUT
Если политика по умолчанию не ACCEPT и у вас нет правила, разрешающего входящий HTTP-трафик, или у вас есть правила, блокирующие его, это может объяснить.