CentOS 7.7. Firewalld: Failed to load nf_conntrack

С обновлением CentOS с версии 7.6 до 7.7 пришли новые проблемы. Причём пришли все разом, одновременно. В прошлой статье рассказывал о том, что NGINX начал ругаться фразами «Can’t open PID file», а в этой затрону тему фаервола. А точнее фаервола на среднестатистической VPS, на которой обычно закрыт доступ к ядру.

К сожалению, на многих VPS нельзя установить дополнительный модуль в ядро. Поэтому команда:

modprobe nf_conntrack

Будет выдавать что-то вроде:

modprobe: ERROR: could not find module by name=’nf_conntrack’

modprobe: ERROR: could not insert ‘nf_conntrack’: Function not implemented

modprobe: ERROR: Error running install command for nf_conntrack

modprobe: ERROR: could not insert ‘nf_conntrack’: Operation not permitted

В версии CentOS 7.6 сервис firewalld-0.5.* запускался и работал без этого модуля. В новой CentOS используется firewalld-0.6.*, который не может без nf_conntrack даже запуститься. Конечно, и в firewalld-0.5.* были сообщения об ошибки и невозможности загрузить модуль, но всё работало.

Если Вы обновились до CentOS 7.7, сразу же проверьте работу фаервола:

systemctl status firewalld

Вы получите такой результат:

Active: inactive (dead)



ноя 06 11:33:19 vps60156 firewalld[32592]: WARNING: ipset not usable, disabling ipset usage in firewall.

ноя 06 11:33:19 vps60156 firewalld[32592]: ERROR: Failed to load nf_conntrack module: modprobe: ERROR: could not find module by name=’nf_conntrack’

modprobe: ERROR: could not insert ‘nf_conntrack’: Function not implemented

modprobe: ERROR: Error running install command for nf_conntrack…

ноя 06 11:33:19 vps60156 firewalld[32592]: ERROR: Raising SystemExit in run_server

Такую картину можно наблюдать, если ваша VPS использует старое ядро CentOS, к примеру, версии 2.6.32 (как у меня). Первый (и правильный) выход из ситуации — обновить ядро системы до версии 3.10.0-1062.1.1.el7.x86_64 или свежее. Просить об этом нужно хостинговую компанию.

Второй выход — это даунгрейдить фаервол до версии, которая была установлена в CentOS 7.6. Для этого сначала скачайте firewalld, firewalld-filesystem и python-firewall в нужной версии командой:

wget http://vault.centos.org/7.6.1810/os/x86_64/Packages/firewalld-0.5.3-5.el7.noarch.rpm http://vault.centos.org/7.6.1810/os/x86_64/Packages/firewalld-filesystem-0.5.3-5.el7.noarch.rpm http://vault.centos.org/7.6.1810/os/x86_64/Packages/python-firewall-0.5.3-5.el7.noarch.rpm

Затем установите скачанные пакеты командой:

yum downgrade firewalld-0.5.3-5.el7.noarch.rpm firewalld-filesystem-0.5.3-5.el7.noarch.rpm python-firewall-0.5.3-5.el7.noarch.rpm

Теперь можно перезапустить фаервол:

systemctl restart firewalld

И затем проверить работоспособность:

systemctl status firewalld

Состояние должно быть:

Active: active (running)



2019-11-06T12:45:14
Интернет