Текущая страница: ГлавнаяНастройка сервера → VPS - решение проблем при настройке iptables

VPS — решение проблем при настройке iptables

На некоторых VPS серверах иногда возникают проблемы, причины которых кроются в настройках основной ноды. В этом случае единственной возможностью пофиксить траблу остается обращение в саппорт хостера, но для этого надо правильно локализовать и сформулировать проблему.
Проблема 1:
При попытке настроить iptables возникают ошибки вида

iptables: Memory allocation problem

Смотрим:

cat /proc/user_beancounters

Параметр numiptent определяет количество правил iptables, которые мы можем создать.
Колонка held показывает текущее значение.
Колонка maxheld показывает максимальное пиковое значение.
Колонки barrier и limit должны совпадать и определяют максимально доступное для нас значение.
Колонка failcnt содержит число ошибочных обращений. Если оно содержит не 0, возможно, выделенных нам ресурсов уже не хватает. Когда held=limit и возникает упомянутое выше сообщение. В этом случае можно написать хостеру тикет с просьбой увеличить значение numiptent.
Проблема 2:
Выполним пример простой команды

iptables -m state --state NEW -m tcp -p tcp --dport 1111 -j DROP

Что здесь что:
-m state означает необходимость загрузки модуля state
—state NEW определяет что речь идет о первый пакет соединения, фактически о новом соединении
-m tcp указывает на необходимость загрузки модуля tcp
-p tcp правило применяется для TCP протокола
—dport 1111 — порт приемника 1111
-j DROP — действие, отбросить пакет
Таким правилом мы запрещаем новые входящие соединения по протоколу tcp на порт 1111. Вполне корректная команда, которая, на VPS может вызвать ошибку вида

iptables v1.4.4: no command specified
Try iptables -h or iptables --help for more information

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

sudo modprobe -l |grep netfilter

Загрузить недостающий модуль

sudo modprobe <имя модуля> 

Добавить комментарий