Ipfw vs iptables. Или, может быть, ipfw2iptables
Пожалуй, одной из самых сложных задач, которая заставила демона долго и задумчиво изучать документацию и в совершенно буквальном смысле шевелить рогом, было преобразование набора правил брандмауэра ipfw к набору правил брандмауэра iptables. Потому что, пожалуй, нет еще двух других таких программ, решающих одну и ту же задачу, но столь непохожих друг на друга.
Ipfw – монолитный файрвол, пакеты по которому проходят один или несколько раз, могут промежуточно доставляться другим программам (divert), могут использовать netgraph и прочие разные возможности, но главной его особенностью является именно монолитность – правила хранятся в виде одного списка, который может быть параметризован, поскольку загрузка правил выполняется простым выполнением скрипта rc.firewall.
Iptables – файрвол, основанный на концепции «цепочек», по которому пакеты, как правило, проходят один раз. Кроме «цепочек», есть еще таблицы, и соответственно есть множество вариантов прохождения файрвола. Имеет собственный механизм определения состояния соединений. Для понимания работы iptables обычно рисуют схемы прохождения пакетов, например, такую, как приведена на рис. 1 (конечно же, любой администратор Linux ее знает, но для последующего изложения без нее не обойтись).
Здесь мы сразу сталкиваемся с громаднейшей разницей, которая делает практически невозможным написание сколько-нибудь приемлемых автоматических конвертеров правил, – монолитный файрвол ipfw и пять таблиц в трех стандартных цепочках, что теоретически дало бы пятнадцать различных комбинаций «цепочка-таблица». К счастью, далеко не всекомбинации являются разрешенными – их «всего» одиннадцать. Это не считая пользовательских цепочек, которые можно создавать вообще в неограниченном количестве.
Поэтому все преобразования будут выполняться только вручную, путем создания нового файла с набором правил для iptables-restore или, точнее, для той его разновидности, которая используется в CentOS.
Чтобы не делать «работу ради работы», будем рассматривать преобразование части набора правил ipfw обычного сервера с DNS, почтой, прокси-сервером и различными индивидуальными правилами для работы, например, клиента Steam. Однотипные правила были из набора удалены.
Статью целиком читайте в журнале «Системный администратор», №5 за 2015 г. на страницах 34-38.
PDF-версию данного номера можно приобрести в нашем магазине.