Добрый день! Есть задача описать в файерволле порядка 2K хостов на двух географически разнесенных тазиках. На одном - FreeBSD 5.4, на другом - Linux 2.4.xx. На фре загоняем список в таблицу, пишем нужные правила и тихо радуемся жизни. Как это сделать на линуксе? Прописать 2K правил? Или есть более другие (правильные) способы?.
Можно глупый вопрос: что значит "загоняем список в таблицу, пишем нужные правила"? Пример если можно. Просто тоже мучаюсь с кучей хостов в ipfw, думаю как бы упростить это мучение...
>Можно глупый вопрос: что значит "загоняем список в таблицу, пишем нужные правила"?
>Пример если можно. Просто тоже мучаюсь с кучей хостов в ipfw,
>думаю как бы упростить это мучение...Смотреть в сторону ipfw2 (5.x - по умолчанию, >4.10 - надо вручную указывать опцию в make.conf при сборке мира).
ipfw table 1 add ${IP}
.......................
ipfw table 2 add ${IP2}
.......................ipfw add pass all from table\(1\) to any via ${if0}
ipfw add deny all from table\(2\) to any via ${if1}
etc (ваши вариации на заданную тему).Можно ли подобное сотворить с iptables?
Linux, FreeBSD ...разницы то нет
как вариант, могу предложить простое и наглядное решение, но на любителяпишите скрипт, например на Perl, который обрабатывает ваши списки и запускает требуемые правила, в него можно вставить и кучу дополнительного полезного функционала
конечно реально - это прописывание отдельных правил, пусть и не руками, если, конечно нельзя агрегировать по подсетям, но списки из 10хК вполне нормально обрабатываются ядром даже на слабом железе
>Linux, FreeBSD ...разницы то нет
Принциппиальной - нет, согласен. Мне бы вот с реализацией...>списки из 10хК вполне нормально обрабатываются ядром даже на слабом железе
Ok, за это спасибо!
>пишите скрипт...
Обработка такого массива, понятно, не ручное дело...>конечно реально - это прописывание отдельных правил, пусть и не руками, если, конечно нельзя агрегировать по подсетям,
Хочется сделать вариант, который был бы достаточно легок в дальнейшем управлении. Пока я сделал через отдельные цепочки. Можно подсказать пример работы опции --jump? Мои цепочки оканчиваются на iptables -A -j RETURN. Достаточно ли будет в нужном месте поставить правило iptables -A INPUT -i ${oif} -j <TARGET CHAIN>?
В связи с этим вопрос, который меня давно мучает: Сколько записей способна потянуть таблица в новом ipfw? Есть ли какие-то ограничения по размерам или скорости работы, накладываемые большими таблицами? Что быстрее: 20000 записей ipfw, или одна, использующая таблицу из 20000 записей?
Согласно тестам из uafug, чем больше количество адресов, тем больше преимущество таблиц. На малых количества лучше просто перечислять адреса в одном правиле (ipfw2).Из man ipfw:
Lookup tables are useful to handle large sparse address sets, typically from a hundred to several thousands of entries. There could be 128 different lookup tables, numbered 0 to 127.
[skip...]
Internally, each table is stored in a Radix tree, the same way as the routing table (see route(4)).Т.е., количество записей в каждой таблице может быть столько, сколько и количество записей в таблице маршрутизации. ;-)