Как оптимально с точки зрения производительности настроить iptables?
Спасибо за помощь chupasaurus и arheops.
Чтобы ошибок не возникало нужно в /etc/sysctl.conf добавить строкиnet.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_tcp_timeout_established = 3600
В /etc/rc.local перед exit 0 добавить строкиecho 262144 > /sys/module/nf_conntrack/parameters/hashsize
sysctl -p
Таким образом мы увеличиваем максимальное количество контролируемых соединений до 1048576, просим не отслеживать соединения по которым в течении часа (3600) не было пакетов, увеличиваем размер hash-таблицы по принципу  1048576 / 4 = 262144, и заставляем всё это работать после перезагрузки сервера.
arheops предложил вообще отключить контроль соединений, это позволит увеличить производительность, но на текущей нагрузке я пока в этом не нуждаюсь. Но такая возможность есть.
1. Нет, netfilter используется iptables в любом случае.
2. Добавить echo 262144 > /sys/module/nf_conntrack/parameters/hashsize перед exit 0 в /etc/rc.local (число - четверть от nf_conntrack_max). Ну и выполнить.
3. Уменьшить таймауты на соединения (список # sysctl -a | grep conntrack | grep timeout), но надо смотреть чем забивается netfilter.