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

apache не отвечает извне (проблема межсетевого экрана / iptables)

Есть CentOS установлен с httpd. Может подключиться к lynx как к http://localhost и чтобы http://10.20.30.40 (настоящий IP) от внутри машина. Не могу подключиться с вне. Вот отрывок из /etc/httpd/conf/httpd.conf:

Listen 0.0.0.0:80

<VirtualHost 10.20.30.40:80>
    DocumentRoot /var/www/vhost1
    ErrorLog logs/vhost1-error_log
    CustomLog logs/vhost1-access_log common
</VirtualHost>

Я пытаюсь подключиться с компьютера, который находится в той же подсети (насколько мне известно).

В лог-файлах ничего подозрительного. Какие-нибудь советы, пожалуйста?

Обновить: во время пробежки iptables -L У меня есть такая строка (возможно, она связана): REJECT all -- anywhere anywhere reject-with icmp-host-prohibited.

Обновление N2: iptables -vnL вывод:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           udp dpt:53
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:53
    0     0 ACCEPT     udp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           udp dpt:67
    0     0 ACCEPT     tcp  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           tcp dpt:67
1576K 1643M RH-Firewall-1-INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  *      virbr0  0.0.0.0/0            192.168.122.0/24    state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  virbr0 *       192.168.122.0/24     0.0.0.0/0
    0     0 ACCEPT     all  --  virbr0 virbr0  0.0.0.0/0            0.0.0.0/0
    0     0 REJECT     all  --  *      virbr0  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
    0     0 REJECT     all  --  virbr0 *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable
    0     0 RH-Firewall-1-INPUT  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT 354K packets, 58M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain RH-Firewall-1-INPUT (2 references)
 pkts bytes target     prot opt in     out     source               destination
  922  823K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
   19  1412 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 255
    0     0 ACCEPT     esp  --  *      *       0.0.0.0/0            0.0.0.0/0
    0     0 ACCEPT     ah   --  *      *       0.0.0.0/0            0.0.0.0/0
 159K   28M ACCEPT     udp  --  *      *       0.0.0.0/0            224.0.0.251         udp dpt:5353
 2869  640K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:631
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:631
1239K 1589M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
    8  1064 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
 175K   25M REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Попробуйте это, чтобы узнать, помогает ли это:

sudo /sbin/iptables -A INPUT -p tcp --dport http -j ACCEPT

Если вы используете следующее заранее, вы можете легко вернуться назад:

/sbin/iptables-save > /tmp/fw

Если вы хотите полностью отключить iptables (хотя лучше настроить его соответствующим образом), используйте:

sudo /sbin/chkconfig iptables off

В противном случае сохраните правило, сохраните его в / etc / sysconfig / iptables:

/sbin/iptables-save > /etc/sysconfig/iptables

На CentOS 7 или выше

В CentOS 7 и RHEL 7 вы, вероятно, использовали бы firewall-cmd чтобы разрешить HTTP-трафик.

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

Это часто указывает на проблему брандмауэра в вашей локальной системе или в сети. Что делает ваш местный iptables брандмауэр похож?

# iptables -vnL

Вы можете временно отключить локальный брандмауэр, запустив:

# /sbin/service iptables stop

Если после этого что-то пойдет не так, это определенно проблема с брандмауэром, и вам нужно с этим разобраться.

Если у вас нет локального брандмауэра, есть ли он где-нибудь в вашей сети?

Да, я бы сказал, что правило брандмауэра, вероятно, не помогает (хотя это зависит от того, что еще есть в наборе правил брандмауэра). Также (теоретически) это может быть проблема с исходящим брандмауэром на машине, с которой вы подключаетесь, или проблема конфигурации прокси, или фаза луны.

Полный набор правил брандмауэра и некоторые подробные результаты поиска и устранения неполадок в сети будут иметь большое значение для решения проблемы.