arkan писал(а):
Уважаю разрабов IPFW / PF / IPFILTER - все наглядно и понятно, в отличие от iptables
Да вы в своем уме?
IPFW наглядный и понятный, только если в нем три-пять правил.
Чтоб управлять двадцатью-тридцатью правилами, нужно быть почти гуру в компьютерных сетях, и потом полмесяца курить ман конкретно по ipfw.
Например, у меня на интерфейсе два ip-адреса. Хочу, чтоб второй адрес отвечал на ARP-запросы только конкретному (одному) хосту. Как такое сделать? Никак?
Почему таблица правил одна? Известно, что ipfw может вызываться четыре раза на пути следования пакета. Но почему не сделать четыре таблицы? На кой хер в принципе исходящему пакету проверяться по правилам входящего трафика? Можно конечно использовать skipto, и разбивать одну таблицу на четыре логических части. Но почему не сделать это на уровне файрвола?
Если на одном сервере несколько сетей, NAT и десяток сервисов. Некоторые хосты фильтруются по MAC. Что-то форвардится, что-то для кого-то закрыто. С ipfw управлять таким хозяйством это ад. Чтоб быстренько разрешить, например, аську в мир, нужно 20 минут анализировать ipfw show, а также ifconfig, netstat -r, и ещё что-нибудь. А потом суметь вернуть всё назад ничего не поломав, ибо поломать с ipfw - элементарно.
Особенно когда пытаешься это проделать на незнакомом сервере.
Логов смены конфигурации файрвола - нет.
Таких очевидных средств, как сохранить текущую конфигурацию и загрузить сохраненную - нет. Есть что-то вроде того, но с кучей нюансов.
Элементарно, посмотреть включен файрвол или нет - нельзя. Нужно пользоваться sysctl и вводить длинные пути. Три штуки. Каждый раз.
Команда "ipfw disable firewall" выключает только уровень IP, а ether и bridge остаются включенными.
В общем, вагон бесполезных нюансов, которые нужно постоянно помнить.
IPFW как ассемблер. Теоретически может решить задачу любой сложности. Но на практике человек не может охватить вниманием больше одной страницы кода. При том, что ошибка в любой строке зачастую "смертельна".