Назад | Перейти на главную страницу

Apache не работает с внешним IP-адресом на CentOS

У меня недавно установлен CentOS 5.6, и я могу получить доступ к httpd локально через elinks. Но с других IP не работает. Я могу пропинговать IP-адрес, но у меня нет маршрута к хосту, если я подключаюсь к порту 80. Я предполагаю, что некоторые правила брандмауэра предотвращают доступ к порту 80, и я проверил iptables, и, похоже, все в порядке.

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain RH-Firewall-1-INPUT (2 references)
target     prot opt source               destination
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/0
ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/0
ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:631
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:631
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Похоже, у вас нет правила, разрешающего трафик на порт 80, попробуйте это

/sbin/iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport 80 -j ACCEPT

если это сработает, сохраните конфигурацию брандмауэра с помощью

/sbin/service iptables save 

Еще нужно проверить, что Apache действительно настроен для прослушивания вашего внешнего IP-адреса. Проверить Слушать директива в вашем /etc/httpd/conf/httpd.conf файл. Это должно быть что-то вроде

Listen 80 

слушать по всем доступным адресам.

Если SELinux включен - прежде всего проверьте все логические значения SELinux, связанные с apache:

[root@localhost ~]# getsebool -a | grep httpd
       . . . . . . 
httpd_builtin_scripting --> on
httpd_can_network_connect --> off
httpd_can_network_connect_db --> off
httpd_can_network_relay --> off
httpd_disable_trans --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> on
     . . . . . . . .

если httpd_can_network_connect --> off отключить ограничение SELinux на httpd:

[root@localhost ~]# setsebool -P httpd_can_network_connect on

Или используйте система-конфигурация-selinux, также известный как графический инструмент администрирования SELinux, для управления логическими значениями определенных демонов.