ISP Manager 5: Не работает после обновления
Сегодня, заметил что тормозят сайты на одном из серверов. Посмотрев в чем дело, обнаружил что идет проверка raid массива, что сказывается на производительности работы базы. Выполнено было уже около 90% проверки, поэтому решено было на 30 минут приостановить работу сайтов, чтобы проверка закончилась максимально быстро, а в это время обновить ПО...
Обновление было запущено через стандартный менеджер пакетов CentOS:
1 2 3 |
yum update |
немного подождав, обновление закончилось. Посмотрев статус проверки рейд массива, обнаружил, что и он завершил свои проверки. Решил раз уж обновился, то надо и перезагрузится, выполнил:
1 2 3 |
reboot |
Каково же было мой удивление, когда после перезагрузки, я обнаржил что при попытке попасть на сайты или в панель управления ISPManager, я получал ошибку подключения "Firefox can't establish a connection to the server"..
Зайдя по SSH на сервер, я сразу убедился, что веб-сервер запущен и работает:
1 2 3 |
ps -A | grep httpd |
тут же проверил, что внутри сервера все ок, скачав страницу сайта wget-ом:
1 2 3 |
wget it-rem.ru |
получается, что-то блокирует работу в промежутке между моим компом и веб-сервером.
Я открыл первый попавшийся анонимайзер и попробовал открыть сайт - убедился что проблема не только на моем компе, значит проблема на сервере.
На сервере, после веб-сервера может быть сетевая карта, однако раз я подключился по SSH значит проблема в чем-то другом. Между веб-сервером и сетевой остался только файрвол. До обновления стоял iptables, поэтому я сразу проверил, что моего ip нет в списке заблокированных:
1 2 3 |
iptables -L |
Его не оказалось, а т.к. в списке на первый взгляд, были какие-то другие правила, то я особо ни на что не расчитывая, решил все же их сбросить, делается это таким скриптом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#!/bin/bash IPT=iptables $IPT -P INPUT ACCEPT $IPT -P FORWARD ACCEPT $IPT -P OUTPUT ACCEPT $IPT -t nat -P PREROUTING ACCEPT $IPT -t nat -P POSTROUTING ACCEPT $IPT -t nat -P OUTPUT ACCEPT $IPT -t mangle -P PREROUTING ACCEPT $IPT -t mangle -P OUTPUT ACCEPT ## Сбрасываем правила $IPT -F $IPT -t nat -F $IPT -t mangle -F ## Сбрасываем не стандартные цепочки $IPT -X $IPT -t nat -X $IPT -t mangle -X |
и вуаля, сайты заработали..
Теперь стало понятно, что проблема именно в файрволе. Но какого хрена?
Я пошел в стандартное место хранения правил для iptables, которые должны применяться после автозагрузки:
/etc/sysconfig/iptables
и попробовал их загрузить вручную:
1 2 3 |
iptables-restore /etc/sysconfig/iptables |
Тут я получил ошибку:
[root@server sysconfig]# iptables-restore iptables
iptables-restore v1.4.21: Set ispmgr_limit_req doesn't exist.Error occurred at line: 25
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
Возникла она потому что iptables не смог найти опцию ispmgr_limit_req. Объявление которой находится в файле
1 2 3 |
/etc/sysconfig/iptables |
в 25 строке:
1 2 3 |
-A INPUT -m set --match-set ispmgr_limit_req src -j DROP |
Временно закомментировав данную строку и применив правила снова, все заработало, я смог попасть в админку и на сайты.
Однако, после перезагрузки, опять появились другие правила, которые отличались от установленных в файле /etc/sysconfig/iptables.
Выглядели они так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT tcp -- anywhere anywhere ctstate NEW multiport dports heathview:35999 ACCEPT all -- anywhere anywhere INPUT_direct all -- anywhere anywhere INPUT_ZONES_SOURCE all -- anywhere anywhere INPUT_ZONES all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED ACCEPT all -- anywhere anywhere FORWARD_direct all -- anywhere anywhere FORWARD_IN_ZONES_SOURCE all -- anywhere anywhere FORWARD_IN_ZONES all -- anywhere anywhere FORWARD_OUT_ZONES_SOURCE all -- anywhere anywhere FORWARD_OUT_ZONES all -- anywhere anywhere ACCEPT icmp -- anywhere anywhere REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination OUTPUT_direct all -- anywhere anywhere Chain FORWARD_IN_ZONES (1 references) target prot opt source destination FWDI_public all -- anywhere anywhere [goto] FWDI_public all -- anywhere anywhere [goto] Chain FORWARD_IN_ZONES_SOURCE (1 references) target prot opt source destination Chain FORWARD_OUT_ZONES (1 references) target prot opt source destination FWDO_public all -- anywhere anywhere [goto] FWDO_public all -- anywhere anywhere [goto] Chain FORWARD_OUT_ZONES_SOURCE (1 references) target prot opt source destination Chain FORWARD_direct (1 references) target prot opt source destination Chain FWDI_public (2 references) target prot opt source destination FWDI_public_log all -- anywhere anywhere FWDI_public_deny all -- anywhere anywhere FWDI_public_allow all -- anywhere anywhere Chain FWDI_public_allow (1 references) target prot opt source destination Chain FWDI_public_deny (1 references) target prot opt source destination Chain FWDI_public_log (1 references) target prot opt source destination Chain FWDO_public (2 references) target prot opt source destination FWDO_public_log all -- anywhere anywhere FWDO_public_deny all -- anywhere anywhere FWDO_public_allow all -- anywhere anywhere Chain FWDO_public_allow (1 references) target prot opt source destination Chain FWDO_public_deny (1 references) target prot opt source destination Chain FWDO_public_log (1 references) target prot opt source destination Chain INPUT_ZONES (1 references) target prot opt source destination IN_public all -- anywhere anywhere [goto] IN_public all -- anywhere anywhere [goto] Chain INPUT_ZONES_SOURCE (1 references) target prot opt source destination Chain INPUT_direct (1 references) target prot opt source destination Chain IN_public (2 references) target prot opt source destination IN_public_log all -- anywhere anywhere IN_public_deny all -- anywhere anywhere IN_public_allow all -- anywhere anywhere Chain IN_public_allow (1 references) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:ssh ctstate NEW Chain IN_public_deny (1 references) target prot opt source destination Chain IN_public_log (1 references) target prot opt source destination Chain OUTPUT_direct (1 references) target prot opt source destination |
Не буду томить дальнейшими изысканиями, все оказалось до жути просто. Вместо iptables, после обновления, установился firewalld, правила которого и загружались. А iptables был отключен и перестал работать.
Этот сюрприз я исправил удалением firewalld и активацией iptables, для этого нужно выполнить следующие команды:
1 2 3 4 5 6 |
# systemctl disable firewalld # yum remove firewalld # systemctl enable iptables # systemctl enable ip6tables |
после этого, я перезагрузился. В этот раз все заработало, как и ожидалось.
Author: | Tags: /
| Rating:
Leave a Reply