IpfwNg

Apr. 26th, 2012 03:11 am
nuclight: (Default)
[personal profile] nuclight
В честь 26 годовщины 26 апреля уволился с текущей работы и таки наконец начал проект http://wiki.freebsd.org/IpfwNg — хотя на работе FreeBSD и была основной системой, реальную возможность пилить ядро я так и не получил (хотя тот же NAT64 нам бы понадобился не через полгода, так через год). В ближайшие недели посижу дома и надеюсь сделать хотя бы скелет, который можно будет потом уже в свободное время потихоньку пилить — работы по проекту предстоит очень много.

Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).

Date: 2012-04-26 10:30 am (UTC)
From: [identity profile] sem-lj.livejournal.com
для NAT64 libalias бы переписать.
ну и загрузка всех правил скопом must have.

Date: 2012-04-26 10:48 pm (UTC)
From: [identity profile] nuclight.livejournal.com
> ну и загрузка всех правил скопом must have.

Да, разумеется. Хотя технически это скорее будет загрузка кусками в некий буфер в ядре и потом его атомарная активация.

> для NAT64 libalias бы переписать.

А вот это нафиг не надо и вредно, libalias пора закопать (вот в треде ниже мнение Глеба приводят, конкретно к этой теме я согласен). Чтобы там такое сделать, нужно столько переделать, что проще переписать. К тому же дает знать о себе наследие ориентированности на юзерленд и архитектурная ошибка в виде мешания partially specified links (для редиректов и проч.) в общую кучу с обычными соединениями, из-за чего нельзя применить более эффективную хэш-функцию, и (в том числе поэтому) вообще параллелить его - та еще проблема...

Date: 2012-04-28 02:08 pm (UTC)
From: [identity profile] dadv.livejournal.com
> ну и загрузка всех правил скопом must have.

Есть давным давно, ещё в 4.x было. ipfw sets.

Date: 2012-04-28 02:14 pm (UTC)
From: [identity profile] sem-lj.livejournal.com
Это не то. Я про типа такого: ipfw -f

Date: 2012-04-28 02:17 pm (UTC)
From: [identity profile] dadv.livejournal.com
И это есть.

Date: 2012-04-28 02:30 pm (UTC)
From: [identity profile] sem-lj.livejournal.com
Я смотрю на какой то другой ipfw?
Вообще-то sets - это альтернативные наборы правил, которые можно *включать* и *отключать* по желанию.
Но загрузка в них происходит все так-же - по одному правилу.

Такая загрузка - это ужасно не удобно.

Date: 2012-04-28 02:34 pm (UTC)
From: [identity profile] dadv.livejournal.com
> Я смотрю на какой то другой ipfw?

Просто надо внимательно читать man ipfw.

ipfw [-cfnNqS] [-p preproc [preproc-flags]] pathname
...
     To ease configuration, rules can be put into a file which is processed
     using ipfw as shown in the last synopsis line.  An absolute pathname must
     be used.  The file will be read line by line and applied as arguments to
     the ipfw utility.

Date: 2012-04-28 02:45 pm (UTC)
From: [identity profile] sem-lj.livejournal.com
Это я читал. Это издевательство, которое ничем не лучше шел скрипта со строчками ipfw add ...

Попытаюсь быть экстрасенсом: ты предлагаешь это загружать в некий сет и при успехе делать swap с активным?

А почему эту возможность не добавить нативно? Что бы ipfw загружал правила в память, репортил ошибки, либо, если их нет, загружал опкоды уже в ядро?

Date: 2012-04-28 02:48 pm (UTC)
From: [identity profile] dadv.livejournal.com
> Это я читал. Это издевательство, которое ничем не лучше шел скрипта со строчками ipfw add ...

Тогда я не понял, что должно быть твоём "ipfw -f file"

> Попытаюсь быть экстрасенсом: ты предлагаешь это загружать в некий сет и при успехе делать swap с активным?

Разве это не очевидно?

> А почему эту возможность не добавить нативно? Что бы ipfw загружал правила в память, репортил ошибки, либо, если их нет, загружал опкоды уже в ядро?

Не вижу разницы с существующим сейчас функционалом: в файл пишем команды добавления в set 1, затем swap.

Date: 2012-04-28 03:10 pm (UTC)
From: [identity profile] sem-lj.livejournal.com
Ну в принципе, можно и левое ухо чесать правой ногой. Цель будет достигнута.

Date: 2012-04-28 03:57 pm (UTC)
From: [identity profile] dadv.livejournal.com
Ничего хитровывернутого в описанной процедуре нет, всё весьма прямолинейно. В своём враппере над ipfw я вовсю использовал именно эту процедуру ещё на 4.11.

Date: 2012-04-28 04:01 pm (UTC)
From: [identity profile] sem-lj.livejournal.com
Ключевое выражение "в своем враппере". Хорошо бы, что бы это было у всех.

Date: 2012-04-28 04:06 pm (UTC)
From: [identity profile] dadv.livejournal.com
Надо понять и принять, что ipfw - низкоуровневый инструмент типа ассемблера (хотя уже и не машкодов) и не требовать от него большего. Правильный путь это писать высокоуровневые обертки над ним.

Date: 2012-05-10 01:35 am (UTC)
From: [identity profile] nuclight.livejournal.com
Нет, этот путь уже не является правильным. Весь проект затеян для того, чтобы приподнять уровень, который слишком уж низкоуровневой (машкоды в наше время уже были бы совсем пиздец). Тем более, он и в низкоуровневой-то части lacks many needed features, которые не позволяют и обертки вменяемые писать.

Date: 2012-05-10 06:16 am (UTC)
From: [identity profile] dadv.livejournal.com
"lacks many needed features" - разве что в stateful части, потому что в stateless нет проблем писать вменяемые обертки, я неоднократно писал.

"этот путь уже не является правильным" - универсальный инструмент всегда будет проигрывать специализированному по удобству проблемно-ориентировнного применения, поэтому обёртки всегда будут полезны.

демагогия

From: [identity profile] nuclight.livejournal.com - Date: 2012-05-10 09:38 pm (UTC) - Expand

(no subject)

From: [identity profile] dadv.livejournal.com - Date: 2012-05-11 01:37 am (UTC) - Expand

Date: 2012-05-04 10:10 pm (UTC)
From: [identity profile] denis-sotchenko.livejournal.com
да, плюсую NAT64

а правила скопом загружаются без проблем - ipfw /path/to/rules
причём, в отличие от отдельных вызовов ipfw add, грузятся практически мгновенно.

Date: 2012-05-05 12:56 pm (UTC)
From: [identity profile] sem-lj.livejournal.com
Что бы это было без проблем, надо по крайней мере две команды: проверить ipfw -n /path/to/file и уже непосредственно загрузка. И не дай бог забыть первую. Причем гадкий ipfw остановится на правиле с ошибкой, а не проигнорирует ее (с сообщением конечно), что (по закону подлости) как правило приведет к потере машины с радаров. В этом случае скрипт с загрузкой по одному правилу может быть предпочтительней. Только тут есть другая засада - если правил очень много, можно этого не заметить. В общем, при любом раскладе, нужно что-то городить (Женя например, ниже привел пример с сетами).

Date: 2012-05-05 01:11 pm (UTC)
From: [identity profile] dadv.livejournal.com
Кому лениво писать set N в списке правил, могут пропатчить /sbin/ipfw, добавив новый ключ -S N, который бы по задавал новый дефолт для set (вместо нуля) для правил без set N и использовать ipfw -S 1 -f /path/to/ruleset && ipfw set swap

Date: 2012-05-10 01:38 am (UTC)
From: [identity profile] nuclight.livejournal.com
> могут пропатчить

Это не должно быть "пропатчить", это должно быть "из коробки". Тем более там внутри каша, к тому же еще и недокументировано ничего. Тоже подлежит исправлению.

Date: 2012-05-10 05:36 am (UTC)
From: [identity profile] dadv.livejournal.com
> Это не должно быть "пропатчить", это должно быть "из коробки".

А из коробки есть set N в каждом правиле.

> Тем более там внутри каша, к тому же еще и недокументировано ничего.

ipfw sets документированы ещё с 4.x. Или ты про отсутствие комментариев в коде? :-)
From: [identity profile] nuclight.livejournal.com
Ну написано же, в чем проблема. Иди и прочитай. Если не доходит, иди освой lex и yacc, сравни с имеющимися решениями, тогда дойдет.

Date: 2012-05-11 01:41 am (UTC)
From: [identity profile] dadv.livejournal.com
Там написано: ниасилил и не хочу, хочу "до основанья, а затем".

Date: 2012-05-16 09:42 pm (UTC)
From: [identity profile] nuclight.livejournal.com
Ты б читать научился, и понимать о чем речь вообще. Нет там никакого "до основания", соответственно насчет хирургов с терапевтами столь же глупо.

Date: 2012-05-05 11:57 pm (UTC)
From: [identity profile] denis-sotchenko.livejournal.com
По поводу подлости - я применяю очень простое решение:

add 1 allow ip from any to any
[…]
delete 1

February 2017

S M T W T F S
   1 234
567891011
12131415161718
19202122232425
262728    

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 7th, 2025 04:48 pm
Powered by Dreamwidth Studios