... святое для каждого правоверного Линупсоида место - iptables. Вот не поверите, лет уже... ну, пять-то точно хочу, да все никак собраться не могу.
Вот ей-ктулху, треш-угар-и-содоминия, а не 'user-oriented-firewall'. Не, к netfilter'овской части (Той как раз что НЕ user-oriented) претензий нет - работает хорошо, быстро, настраивается под что угодно, но, оладушек - КАК?! На дворе, на минуточку, 2013 год, а ЭТО все еще выглядит как ядерный трындец эпохи начала 90х.
Начнем с того, что целых три уровня вложенности (Правило-цепочка-таблица) для абсолютного большинства применений как бы это сказать... перебор. Понятно, что ИНОГДА подобная гибкость что назвается "в кассу", но ёлки-зеленые-брызги-шампанского! Закону Парето уже хорошо так за 100 лет, а до некоторых все еще не дошло.
Опять же, в качестве критерия для группировки выбор сделан... своеобразный. Вот смотришь на packet-flow в большинстве сценариев и диву даешься:
mangle-prerouting
nat-prerouting
mangle-forward
filter-forward
mangle-postrouting
nat-postrouting
А вот если трафик у нас не транзитный, а, скажем, исходящий, то:
mangle-output
nat-output
filter-output
mangle-postrouting
nat-postrouting
А вот если трафик входящий... А вот если еще встроенные таблицы raw, rawpost и security упомянуть... В общем "Запомните это дети, патамучта понять эта нэвозможна!"(Ц)
Осталось добавить, что состав цепочек в таблицах - РАЗНЫЙ (Т.е. не все таблицы содержат все цепочки), цепочки с одинаковым именем находящиеся в разных таблицах - РАЗНЫЕ, разные таблицы обладают разными наборами допустимых действий для правил и картина трындеца становится еще более полной-и-гармоничной. 101 способ выстрелить себе в ногу, ага.
Впрочем, так просто себе в ногу не выстрелишь - сначала придется разобраться в нечеловекообразном ТУЕ утилиты iptables. В то время, как все прогрессивное человечество (А.К.А. цискари с БСД'шниками) додумались до идеи, что "набор правил firewall'а это такая _программа_ на специфическом языке программирования", линупсоиды все еще свято уверены, что firewall - это такая шайтан-машина с кучей рубильничков, циферблатов и переключателей. Однобуквенные case-sensitive switch'и немерянным числом в 21м веке, божечки-ж-вы мои!!!! Смесь параметров с синтаксисом вызова '--' и '-' в одной команде - от-вра-ти-тель-но. Ужасно. Ugly by design, в общем.
Обвязка у всего этого чюююда - соответствующая. Посмотрите на вывод iptables-save, например. Ну велосипедяйство же пионерское, гди-б-же! Вместо стандартного ini-файла в той или иной редакции (Да, если кто не - классические ini'шники вложенные секции поддерживают!) свое...образное нечто. * в начале это вот что? Сущность iptables? Так нет там такого. Ах, это мы селедку завернули имя таблицы решили так отделить? Ну-да, ну-да, свежо, по заграничному - ни у кого так нет. А вот что это у нас с ':' начинается? Ах, цепочка? А в квадратных скобках чего, ась? Ну ин-ту-и-тив-но же понятно, что число пакетов, да? Любому, блин, линупсоиду с дохренадцатилетним стажем, а остальным rtfm в гугль. Аффигеть как юзабильно, ага. Прям даже стесняюсь спросить, каким чудом они от того, чтобы комментарий # на что-нибудь... эдакое заменить удержались.

На этом фоне убунтуйский ufw очень даже приличным продуктом выглядит - с каиновой печатью убунтуйскости, правда. Написать нормальный tui-frontend к netfilter у г-д пупок не то, чтобы "развязался", а и "не завязался" еще, реализовать хоть сколько-нибудь функциональный high-level набор средств они все-еще "ниасилили" (Work-in-progress, ждите пока debian'овцы подключатся), а разбираться в автогенеренном треше... та идите вы... automake-файлы и прочие sendmail.cf править!!!
В общем, бейте меня, режьте, но пригодность iptables в их текущем виде к работе среднеподготовленного пользователя находится на уровне помянутого sendmail`а - Очень Опытный Администратор конечно сделает все что у годно и даже больше, а вот человек, который занимается настройкой "от случая-к-случаю", раз в полгода просто обречен наступать на грабли в мало-мальски нетривиальных случаях, ибо.

@темы: Работа

Комментарии
09.01.2013 в 14:59

дрыхнущий
ну к как фаерволлу у меня вопросов к iptables почти не возникает...
но когда доходит дело до всякого хитрого роутинга или всякого мерзопакостного пробрасывания портов туда-сюда - тут тушите свет.
у меня мозги в трубочку свернулись когда в один сервер сошлись воедино 2 внешних интернета, впн, локалка у виртуалок, хостящихся на нем и локалка.
в итоге роутинг скинул на iproute2, хотя оно тоже писано чужими для хищников.
а для проброса портов взял haproxy - та еще фигня с тз безопасности, но хоть голова меньше болит.
09.01.2013 в 15:36

korrshun,
ну к как фаерволлу у меня вопросов к iptables почти не возникает...
Как минимум - нечеловекообразный синтаксис утилиты управления, полное отсутствие мотивации сколько-нибудь структурировать набор правил (Нигде не сказано, что превращать built-in цепочки в помойку - верный способ отстрелить себе ногу в процессе работы со сколько-нибудь сложной конфигой) - а в остальном, да - если пользоваться только таблицей FILTER то проблем почти что и не возникает. Но в этом случае убунтуйский ufw удобней выходит.
в итоге роутинг скинул на iproute2, хотя оно тоже писано чужими для хищников.
Оу. Это вообще за гранью добра и зла - три страницы (!!!) способов вызова утилиты ip в man'е - это вообще для КОГО?? Линупсоидам unix way с "каждая программа делает одно дело, но делает его хорошо" уже не писан? Нахрена смешивать функционал маршрутизации и управления интерфейсами на всех уровнях модели OSI в одной помойке мне лично понять трудно. Но сделали, да. Чужие для хищников.
а для проброса портов взял haproxy - та еще фигня с тз безопасности, но хоть голова меньше болит.
\Очень Тяжело Вздыхает\ Костыль же! BSD'шный relayd хотя бы разрабатывался как интегрированная часть pf-stack'а, а тут непойми что сбоку присобачено )

P.S. А собирать весь этот зоопарк на одном тазике не страшно? :shuffle:
09.01.2013 в 15:52

дрыхнущий
это по большому счету девелоперская хреновина в небольшом офисе, которая еще и интернетик раздает до кучи - умрет и хрен с ней.
продакшн железки стоят себе и стоят на колокейшне - там как-то человечнее все (тупо xen с натом и белый адрес на интерфейсе) впрочем haproxy в качестве главного реверс-прокси все равно прижился - удобный он, асинхронненький, и куда лучше xinetd+netcat.

с утилитой ip как ни странно проще стало - там все очень аккуратно распихано по подкомандам, так что получаются те же яйца, что и были,
только стало просто и понятно (1 раз, матерясь, скурив ман) использовать отдельные таблицы маршрутизации на каждый интерфейс и не мучаться с iptables, когда надо нормальный source routing.
09.01.2013 в 18:02

korrshun,
это по большому счету девелоперская хреновина в небольшом офисе, которая еще и интернетик раздает до кучи - умрет и хрен с ней.
\Вздыхает\ Ну тогда только терпеть )
впрочем haproxy в качестве главного реверс-прокси все равно прижился - удобный он, асинхронненький, и куда лучше xinetd+netcat.
Один черт, что-то использовать надо - и лучше бы что-то одно, так что пуркуа бы не па? :)
с утилитой ip как ни странно проще стало - там все очень аккуратно распихано по подкомандам, так что получаются те же яйца, что и были,
только стало просто и понятно (1 раз, матерясь, скурив ман) использовать отдельные таблицы маршрутизации на каждый интерфейс и не мучаться с iptables, когда надо нормальный source routing

Не-не-не-не. Не уговаривайте не уговаривайте. "Проще" это (Вот уж не думал, что такое скажу!) виндовый netsh - очень аккуратно по контекстам разобрано, или cisco cli, или даже router OS от Microtic - это ПРОЩЕ. Отдельно ipconfig (А вот iwconfig с семейством, имхо, выделять не надо - не того полета птица) отдельно route - проще.
А ЭТО "проще" назвать можно разве что укурившись до аффтырьского состояния. Не знаю, как насчет iproute2, но мануал в убунте точно упоротые красноглазики, пардон май френч, писали. Синопсис, женщина нетяжелого поведения, на три экрана это как-то чересчур.
09.01.2013 в 19:40

дрыхнущий
мануал говно. аминь.

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail