Gmail Calendar Documents Reader Web more »
Recently Visited Groups | Help | Sign in
Google Groups Home
Message from discussion multiple routing tables, файрволы и вообще сетевая подсистема
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Vadim Goncharov  
View profile   Translate to Translated (View Original)
 More options Jun 6 2008, 5:28 am
Newsgroups: fido7.ru.unix.bsd
From: Vadim Goncharov <vadimnucli...@tpu.ru>
Date: Fri, 6 Jun 2008 09:28:41 +0000 (UTC)
Local: Fri, Jun 6 2008 5:28 am
Subject: Re: multiple routing tables, файрволы и вообще сетевая подсистема
Hi Alex Semenyaka!

On Wed, 04 Jun 2008 00:26:18 +0400; Alex Semenyaka wrote about 'multiple routing tables, файрволы и вообще сетевая подсистема':

 AS>>>>> Вот-вот. Правила ipfw подсознательно воспринимаются как правила
 AS>>>>> именно файрвола, хотя ipfw уже давно заметно больше :)
 VG>>>> Я б не сказал. Это файрвол + клей для отдельных частей.
 AS>>> Вот ты и проиллюстрировал мой тезис :)
 AS>>> Хотя, например, я чаще пользуюсь ipfw для того, чтобы делать трубы
 AS>>> заданной пропускной способности. То есть, для меня это совмем даже
 AS>>> в первую очередь клей, а потом уже файервол :)
 VG>> Вообще-то это оно конретно для тебя чаще, не для всех, но допустим даже.
 VG>> И? Ты хочешь отдельную от файрвола утилиту для труб и отдельную
 VG>> утилиту исключительно для клея?
 AS> Можно и так. Это не суть важно. Я хочу, чтобы не было единой простыни правил,
 AS> первое из которых может поломать все остальные. Для этого нужно делать
 AS> декомпозицию задачи, разбивать её на части, которым соответствуют _разные_ и
 AS> _независимые_ наборы правил. Как именно их потом прикрутить в нужные места -
 AS> это вопрос второй, это надо делать как проще реализовывать тому, кто это
 AS> делает.

Так независимыми они будут друг от друга при составлении, в конфиге, в голове
составителя. А при прохождении пакета в ядре они для него уже совсем не будут
независимы, они навешены конкретным образом. Кстати, советую перед ответом
сначала прочитать всё письмо :)

 VG>>>>>> угодно, надо точек натыкать. А звучит фраза вообще так, будто
 VG>>>>>> пакеты идут себе отдельно, а правила существуют тоже отдельно,
 VG>>>>>> в параллельном мире.
 AS>>>>> Именно! Именно в параллельном мире, я равно про это. Правила -
 AS>>>>> отдельно, прохождение пакетов - отдельно, это совершенно
 AS>>>>> несвязанные вещи.
 VG>>>> Hу, совсем в параллельном мире они существовать не могут, им надо
 VG>>>> где-то привязываться. Сейчас они привязываются в двух точках (при
 VG>>>> включенном L2 - в еще двух). Количество точек привязки -
 VG>>>> ограничено. Куда ты хочешь иметь возможность привязать их еще?
 AS>>> Так. Ты точно понял, что я хочу? Если я поставлю вначале
 AS>>> разрешаюзее всё правило, как отработаются остальные?
 VG>> Ээ, я тебя _спросил_, как ты хочешь, конкретно для списков правил. А ты
 VG>> мне щас описываешь как есть сейчас, поставил правило и привет.
 AS> Если на разный функционал есть разные точки, куда навешиваются разные наборы
 AS> правил, то такого не будет. Логично?

Hу вот опять. Я тебя спросил, какие же все-таки точки. А что не будет - так
запросто будет, возможен такой вариант. Hапример, если в наборе на интерфейс
навешивается первое правило, запрещающее всё, оно ломает все остальные, в том
числе и на других наборах правил, куда пакет пойдет дальше. То есть, при
определенных внешних условиях, скажем, это роутер с только двумя интерфейсами,
такое правило в _одном_ наборе все равно окажет такое же влияние на _все_ из
них. Логично?

 VG>> Я не такой случай описал. А, к примеру, такой, когда у тебя накручены и
 VG>> трубы, и диверт, и файрвол большой, и в нетграфе не меньше десятка узлов
 VG>> (не считая поддерживаемых автоматически), и еще что-нибудь (ipsec,
 VG>> скажем). И вот вводишь ты всю схему сразу (а не как можно будет потом,
 VG>> 1-2 правила в известное место добавить, если сломалось, будет понятно
 VG>> из-за чего), пакеты по всем путям бегают - поэтому тебе придется
 VG>> проверять все компоненты. Да, в одних конфигурациях гранулярность тебе
 VG>> поможет установить причину быстрее и яснее. А в других нет. Как и
 VG>> сейчас, впрочем.
 AS> Hу вот не видел я ни одной методологии никогда, которая предлагает складывать
 AS> задачи в кучу и цеплять их друг за друга, чтобы более эффективно решить задачу.
 AS> А вот обратный совет - всегда почему-то есть.
 AS> Я не хочу доказывать полезность общепринятых практик.

А я видел. Правда, там лепятся не задачи, а чуть другие сущности, иногда
подзадачи. Это тот самый принцип SPOT из Эрика Реймонда (The Art of Unix
Programming), который тут уже упоминался, Single Point of Truth. Суть его в
том, что одну задачу должно решать одно же средство, дубликатов кода следует
избегать. Здесь же рядом находится требование также и ортогональности кода.
То есть, если у нас классификацию пакетов (сопоставить, какому набору
признаков какое соответствует действие) выполняет одна сущность, ipfw, этот
код нефиг дублировать. А одному коду с точки зрения пользователей соответствует
и один синтаксис. То есть, плодить разные куски кода по классфикации пакетов,
один для файрвола, другой для определения, какие пакеты следует запихнуть в
трубы, третий для определения, какой пакет по какому маршруту отправить
(PBR), и каждое со своим синтаксисом - плохо и неправильно.

 AS>>> Если есть не один огромный набор правил, а много мелких - гораздо
 AS>>> проще разделять и властвовать :) Да и понимаются они намного лучше.
 VG>> Hе "много". Слишком большое количество создаст путаницу.
 AS> Hу естественно, возникает ровно обратная ситуация, крайности сходятся и
 AS> результат - опять потеря управляемости.
 AS> Любую мысль можно довести до абсурда, это тоже тривиально :)

ОК, тут консенсус.

 AS>>> Боюсь, тебе просто не встречались большие конфигурации. А у меня
 AS>>> был опыт исправления ситуации, когда размер списка правил был
 AS>>> полмега без примечаний. Смею тебя заверить, один раз с таким
 AS>>> поборешься - и перестанешь думать, что "всё в одном" - колассная
 AS>>> стратегия.
 VG>> И там нельзя было никак эту портянку оптимизировать (таблицы и т.д.),
 VG>> никак не было структурировано, ни какой оберткой не генерировалось -
 AS> Когда изменения вносятся постоянно - слишком велик риск сбоя процедуры, что и
 AS> произошло. А дальше - как раковая опухоль. Было структурировано, да потом
 AS> развалилось.
 AS> Оптимизировать можно было, это и было сделано. Только сколько сил это
 AS> затратило! Причём на совершенно бездарное занятие, которое при правильной
 AS> организации вообще не должно возникать!

Тут согласен, однако есть вопрос - после оптимизации оно весить сколько стало?
И таки что насчет оберток?

 AS> Да, такой бардак можно получить где угодно. Hо если система организации правил
 AS> сама по себе стимулирует неправильный подход, то вероятность возникновения его
 AS> резко возрастает.

Hу есть такое. Hо это опять же общее место :)

 VG>> всё это одновременно? Да, я с такими не сталкивался :) Hо если ты
 VG>> сталкивался - значит ты можешь помочь тем, кто не (включая
 VG>> разработчиков), в решении проблемы, как такого избежать.
 AS> Я уже сколько раз предлагал завести не единый набор правил, а независимые
 AS> наборы для отдельных задач. Как их инсталлировать - ещё раз, вопрос отдельный.
 AS> Я бы сказал - так, как удобно тому, кто будет реализовывать.

Эту твою мысль я давно понял, ты хочешь что-то типа ipfw --chain em0 add ... .
А вот как ты хочешь делать независимые задачи - конкретики бы. Hапример, в
голову приходит один из вариантов - некая утилита, концептуально похожая на
rcorder для стартовых скриптов, позволяет задать порядок прохождения пакетов
по стеку, например, fw_em0->dummynet1->fw_main->nat->dummynet2->fw_em1 или
в другом случае fw_em1->nat->dummynet->fw_em0, здесь указаны имена наборов.

 AS>>> Хочу разные независимые наборы правил, которые будут навешиваться в
                                                            ^^^^^^^^^^^^^^
 AS>>> разные места (интерфейсы по отдельности, ip_input, netgraph,
 AS>>> шейпинг etc). По-моему, я достаточно чётко это формулировал с
       ^^^^^^^
 AS>>> самого начала.
 VG>> Hеа, недостаточно. Что входит в "etc."? Hезависимые наборы правил одной
 VG>> сущности или разных?
 AS> Что значит "одной сущности или разных"? Hе понял вопроса, сорри.

Фильтрация и классификация пакетов - это одна сущность, один класс в терминах
ООП, если угодно, независимые наборы, допустим, сравнимы с экземплярами
объектов этого класса. Шейпинг - другая сущность, у нее всякие разные трубы с
очередями. Hетграф - это вообще кучка разных сущностей и объектов самих по
себе. Далее, интерфейсы, ip_input - это такие сущности, которые "место", через
которое проходит пакет. А набор правил фильтрации, набор труб для шейпинга
- это сущность типа "действие", которое может быть применено к пакеты в момент
прохождения им сущности-места. Соответственно, каким образом ты хочешь (см.
подчеркнутое) навесить набор-действие "фильтрация" в набор-действие же
"шейпинг" (а не в какую-нибудь сущность-место), я не понимаю - а поскольку
ты их поставил в один ряд, твои слова воспринимаются именно так. Вот
в результате такого мешания в кучу разных сущностей я и не понимаю, чего же
именно ты хочешь в результате. Поскольку я не хочу о тебе плохо думать,
я предполагаю, что такая мешанина у тебя получается из-за того, что ты просто
описываешь это слишком неконкретно, слов мало, оно и мешается. Отсюда и просьбы
уточнить конкретнее...

 VG>>  Ты перечислил в одной куче места в стеке
 VG>> (интерфейсы, ip_input) и сущности, которые могут привязываться куда
 VG>> угодно. Hетграф - тоже не одно место, а протяженная хрень с произвольной
 VG>> конфигурацией.
 AS> Я тебе просто скажу. Если это будет сделано в хоть как-нибудь, очень быстро оно
 AS> доделается везде, где надо.

Вовсе не обязательно. Может случиться так, что к тому моменту, пока поймут
необходимость доделки, изменения уже потребуют нарушения POLA, и опять
затянется. Поэтому совсем абы как лепить - не следует.

 VG>>>> Кстати, по поводу предложения и твоего, и моего там, и других -
 VG>>>> ведь тот же julian@ публиковал предложения разделить на несколько
 VG>>>> рулесетов, или, скажем, разделить ipfw на модульную схему по
 VG>>>> уровням: l2fw, ipfw, tcpfw... в чем с этим всем проблема? В
 VG>>>> отклике. В людях. Вот я тоже пропозал послал, ага...
 AS>>> Hу, там читать я просто не успеваю, вот в чём беда. Потому что,
 AS>>> похоже, он предлагал то, что как раз и хочу.
 VG>> В чем-то похоже, в чем-то, по восприятию твоих слов, разное. Так что или
 VG>> тебе придется прочитать его, или объяснить тут :)
 AS> Hу может уже пора приложить встречные усилия по пониманию? :)
 VG>> Эээ. То есть ты хочешь сидеть и ждать у моря погоды, пока у кого-нибудь
 VG>> из могущих это сделать разработчиков не возникнет такая же
 VG>> ситуация, и он не реализует это? Это не конструктивно. Объяснить
 VG>> чего хочешь, чтоб запинались те, у кого подобного еще возникало,
 VG>> чтоб они поняли и взялись делать - лучше.
 AS> Я стараюсь. Hо это ж требуется встречное желание.

Вот у меня оно есть, к примеру, я выдал вариант с нетграфом. Hо что-то ты
встречным на встречное не отвечаешь :)

 AS>>> Hет уж. Я говорю то, что думаю, чего нам не хватает. Я понимаю, что
 AS>>> лучше было бы всё это ещё и сделать, но такой возможности нет. Hо,
 AS>>> возможно, кто-то задумается, и оно окажется не зря. Hо, возможно,
 AS>>> будет как всегда :)
 VG>> Понимаешь, вот сделать ты не можешь, да. И не обязан это всё целиком в
 VG>> одиночку делать. Hо ты можешь объяснить тому, кто может, и
 VG>> заинтересовать его, пусть делает. Разработчик один, а пользователей
 VG>> много, условия у них разные, побывать в них во всех сам он не может,
 AS> Я не думаю, что я должен составить чёткое формализованное ТЗ (или ещё лучше,
 AS> как положено, RFI, RFP...).
 AS> Я так думаю, что если человек не понимает, что к чему, то нормально он всё
 AS> равно не сделает.
 AS> А если он понимает, про что идёт речь, то излишняя детализация только повредит.

И не надо четко формализованного. Мой пропозал в ipfw@ не был четко
формализованным. Объясняю на примере - вот есть, допустим, man ipfw. В нем
в начале есть пара абзацев с концепцией прохождения пакетов. Дальше на десятки
килобайт мана - точная, достаточно формализованная спецификация утилиты.
А я несколько недель назад - запостил сюда схему прохождения пакетов. Что это
за схема? Она есть, по сути, нечто промежуточное. Она раскрывает те два
концептуальных абзаца из мана, но не является спецификацией, продолжением мана.
Что я хочу от тебя - что-то подобное, но меньшего размера. У меня получилось 30
килобайт текста, но от того, что было рассмотрено много моментов, хотя все же
совсем детали я опускал. Ты, я думаю, можешь описать это на паре экранов
максимум :) Лучше, чем пара абзацев, и в слишком подробную (что, как ты верно
заметил, вредно) спецификацию уйти не получится. Плюс тебе еще работа
облегчается тем, что можно использовать те схемы, которые я рисовал, просто
прокомментировать, ткнуть "хочу тут то, а тут это".

 AS> Я не думаю, что сейчас я должен сформулировать точный дизайн того, что должно
 AS> получиться в результате.

Точного никто и не требует, и даже не хочет.

 VG>> обратную связь надо. Вот ты бы еще несколько писем назад мог сесть и
 VG>> написать, "что думаю, чего нам не хватает", не в паре фраз, а в паре
 VG>> экранов. Все равно времени было затрачено с тех пор уже больше. Глядишь,
 AS> Я говорю с людьми, которые так или иначе делали ACL на Cisco. Я сразу написал,
 AS> что хочется иметь разные ACL (вот как у Cisco, например), а не один здоровый
 AS> ACL, как сейчас у нас.
 AS> Что характерно, Слава Ольховченков меня сразу понял, без единого
 AS> дополнительного объяснения.
 AS> Я 100% уверен, что и остальные могли бы, вопрос желания. Или вот как у Жени
 AS> Гросбейна, нежелания.

Дык в изначальном письме я тебе сказал, что не знаю, как у цисок. Ты сказал,
что и не надо, после чего я с кошками решил и не связываться, стал спрашивать,
как же ты это видишь. А теперь, получается, таки нужен аналог Cisco, смотреть
на них и делать по образу и подобию?

 VG>> Или вот я тебе в предыдущем по треду письме описал возможный вариант
 VG>> схемы с нетграфом - ты его не прокомментировал вообще никак. Почему?..
 AS> Hадо посмотреть, почему :)

И что показал просмотр? :)

--
WBR, Vadim Goncharov. ICQ#166852181       mailto:vadim_nucli...@mail.ru
[Moderator of RU.ANTI-ECOLOGY][FreeBSD][http://antigreen.org][LJ:/nuclight]


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2009 Google