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

iptables делает соединение с сервером очень медленным

Когда я добавляю правила iptables на сервер (в локальной сети), соединение становится очень медленным. Это подтверждается как для SSH (вход в систему происходит намного медленнее), так и для MySQL (веб-сайты используют этот сервер в качестве своего сервера базы данных MySQL, и это соединение также очень медленное). Странно то, что AFAIK нет никаких правил, которые каким-либо образом ограничивают скорость. Я только доступ ограничиваю. Это набор правил:

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  localnet/24          anywhere            tcp dpt:www 
ACCEPT     tcp  --  localnet/24          anywhere            tcp dpt:mysql 
ACCEPT     tcp  --  localnet/24          anywhere            tcp dpt:22
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  localnet/24          anywhere            ctstate NEW 
ACCEPT     all  --  anywhere             anywhere            ctstate RELATED,ESTABLISHED 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Примечание: помимо SSH и MySQL, я также ограничиваю доступ к Apache, как видно. это не является замедлился и, похоже, работает нормально. И чтобы показать, что происходит медленно: подключение к SSH зависает на 10-15 секунд, прежде чем продолжить, а установка MySQL замедлит веб-страницы примерно на 15-60 секунд.

Примечание 2: это все правила iptables в брандмауэре (правила FORWARD используются для совместного использования Интернета). Если я просто сброшу его, SSH / MySQL мгновенно откликнется.

Это почти похоже на то, что запросы DNS не выполняются и истекает время ожидания. Вам может потребоваться СВЯЗАННОЕ, УСТАНОВЛЕННОЕ правило в вашей цепочке INPUT, чтобы ответы DNS могли возвращаться на ваши серверы SSH и MySQL.

Я нашел решение в другом ответе добавить СВЯЗАННОЕ, УСТАНОВЛЕННОЕ правило

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

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

iptables --policy INPUT DROP 

^^ это вызывает проблему, и приведенный выше код решает ее.