Iptables можно оптимизировать, поместив вверху наиболее часто используемое правило, например известное Связанный правило, совпадающее после установления соединения. Кроме того, оптимизацию можно выполнить с помощью прыжков, чтобы избежать очень длинных цепочек. Эта ссылка показывает пример.
У меня вопрос об оптимизации самого правила. Какова будет производительность при добавлении и / или удалении некоторых проверок в конкретном правиле? А как насчет порядка этих проверок? Например, это правило:
iptables -A FORWARD -i eth0 -s source_ip -d dest_ip -p tcp --dport 80 -j ACCEPT
можно переписать как:
iptables -A FORWARD -s source_ip -d dest_ip -p tcp --dport 80 -j ACCEPT
Оба правила разрешают HTTP-трафик из определенного источника в определенное место назначения. Как вы думаете, будет ли разница в производительности между ними? Также чеки можно переупорядочить как:
iptables -A FORWARD -p tcp --dport 80 -s source_ip -d dest_ip -i eth0 -j ACCEPT
Будет ли это иметь значение или iptables автоматически позаботится об этом.
нет, поскольку вы просто меняете порядок строк, которые передаются синтаксическому анализатору параметров команды.
Если сомневаетесь, введите iptables
линию, которую вы исследуете, и выполните iptables-save | less
потом.
iptables -A FORWARD -i eth0 -s source_ip -d dest_ip -p tcp --dport 80 -j ACCEPT
и
iptables -A FORWARD -p tcp --dport 80 -s source_ip -d dest_ip -i eth0 -j ACCEPT
создать системный вызов iptc_append_entry () с теми же аргументами.
iptables -A FORWARD -s source_ip -d dest_ip -p tcp --dport 80 -j ACCEPT
создать системный вызов iptc_append_entry () с другой структурой ipt_entry (без iniface) ... Я думаю, что производительность не изменится