Постараться не нуждаться в специальном синтаксисе оболочки и избегать проблем с вещами как sudo
, использовать env
:
env MYVAR=value sh -c "blah"
Существует 3 режима сетей:
В зависимости от которого дистрибутива Вы используете, брандмауэр мог бы блокировать Ваш веб-браузер от доступа к Вашему экземпляру Apache. Это имело бы смысл, учитывая, Вы можете проверить с помощью ping-запросов систему, но не получить доступ к ней через порт 80, который является портом, на котором слушает Apache.
На CentOS Вы используете эту команду для отключения его.
$ /etc/init.d/iptables stop
Можно также подтвердить, что это слушает на этом порте.
$ netstat -antp | grep :80 | head -1 | column -t
tcp 0 0 :::80 :::* LISTEN 3790/httpd
Брандмауэр может быть подтвержден, что это широко открытое.
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Если это решает Вашу проблему затем, можно постоянно добавить правило, которое позволяет трафику на пути порт TCP 80.
$ /etc/init.d/iptables restart
$ iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ /etc/init.d/iptables save
Примечание: Это заставит правило сохраниться между перезагрузками.
Система, которая имеет порт 80 открытых, выглядела бы примерно так:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:8834
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
В вышеупомянутой проблеме мы видели, что Apache слушал, но иногда это неправильно конфигурируется так, чтобы это только послушало на 1 IP-адресе, или что это слушает на другом сетевом интерфейсе. Команда netstat
может использоваться для проверения дважды этого, а также рассмотрения конфигурационных файлов Apache.
$ netstat -anpt | grep :80 | column -t
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1750/httpd
Это показывает, что Apache слушает во всех интерфейсах (IP 0.0.0.0).
Я не повторю, какой ответ @Lekensteyn, который охватывает эту конкретную проблему более подробно здесь.
Ваша установка Apache, вероятно, настроена для слушания на localhost только. Можно проверить что путем выполнения в госте:
$ netstat -tnl | grep :80
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
Если это говорит 0.0.0.0:80
, это слушает во всех интерфейсах. В Вашем случае я ожидал бы 127.0.0.1:80
вместо этого. Для решения этого отредактируйте конфигурацию Apache (где-нибудь в /etc/httpd/conf/
) и изменение:
Listen 127.0.0.1:80
кому:
Listen 80
Можно также использовать nmap
проверить доступные сервисы на Вашу машину. Это должно быть похожим:
$ nmap 192.168.0.2
Starting Nmap 6.40 ( http://nmap.org ) at 2014-01-11 15:22 CET
Nmap scan report for localhost (192.168.0.2)
Host is up (0.0036s latency).
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 0.21 seconds
В CentOS 7 firewalld заменил iptables в качестве межсетевого экрана по умолчанию.
Мне пришлось использовать
systemctl stop firewalld
, чтобы приостановить брандмауэр, чтобы проверить соединение от хоста к CentOS VM.
Подробнее см. Здесь: https://stackoverflow.com/questions/24756240/how-can-i-use-iptables-on-centos-7
it worked!
апачская страница. – oshirowanen 11.01.2014, 18:41/etc/init.d/httpd status
, должен показать выполнение. – slm♦ 11.01.2014, 19:22/sbin/service iptables save
. – slm♦ 11.01.2014, 19:24