Как оптимизировать iptables для высокого DNS-трафика? У меня есть выделенный Linux-сервер, работающий как межсетевой экран с мостом, использующий iptables. Недавно за межсетевым экраном был развернут DNS-сервер с высокой нагрузкой, и межсетевой экран начал медленно работать. Несколько советов, как сделать брандмауэр более эффективным?
Вы не должны регистрировать разрешенные правила трафика, чтобы избежать лишних журналов (и, следовательно, времени для записи журналов). Пакеты DNS небольшие, но в большом количестве. Ваш брандмауэр может не справиться с таким количеством пакетов в секунду.
ifconfig -a сообщает о сброшенных / ошибках / переполнениях / столкновениях?
Вы можете использовать iptraf, чтобы получить количество пакетов для распределения по размеру:
iptraf -i eth0 -z eth0
Вы можете добавить привязку процессора к каждой сетевой карте, чтобы увеличить количество пакетов в секунду, которые она может обрабатывать
Вы могли исчерпать таблицу соединений. Вы можете использовать опцию NOTRACK, чтобы DNS-трафик не сохранялся в таблицах соединений, что улучшает производительность.
Если вы подозреваете, что iptables сжигает много ЦП с трафиком DNS, я бы предложил реорганизовать правила, чтобы вы как можно скорее выходили из таблиц брандмауэра.
Поместите правила DNS в самый верх соответствующей таблицы.
Из-за большого количества подключений, если вам не нужен conntrack, вы можете отключить его:
iptables -t raw -I PREROUTING -j NOTRACK