![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В честь 26 годовщины 26 апреля уволился с текущей работы и таки наконец начал проект http://wiki.freebsd.org/IpfwNg — хотя на работе FreeBSD и была основной системой, реальную возможность пилить ядро я так и не получил (хотя тот же NAT64 нам бы понадобился не через полгода, так через год). В ближайшие недели посижу дома и надеюсь сделать хотя бы скелет, который можно будет потом уже в свободное время потихоньку пилить — работы по проекту предстоит очень много.
Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).
Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).
no subject
Date: 2012-05-10 01:32 am (UTC)no subject
Date: 2012-05-10 05:06 am (UTC)no subject
Date: 2012-05-10 06:23 am (UTC)P.S. Переписать автогенерацию, кстати, обычно существенно проще. ;)
no subject
Date: 2012-05-10 06:52 am (UTC)> Есть хоть одна причина, чтобы не использовать таблицы в таких случаях?
or-блоки работают не только для IP-адресов. Вот реальный код, сгенерированный простеньким враппером на шелле:
nat 123 ip from any to any src-ip 192.168.0.0/24 { proto gre or proto esp or proto ah } out xmit fxp2
nat 123 ip from any to any src-ip 192.168.0.0/24 proto tcp { dst-port 53,80,20,21,22,25,110,123,443,500,587,993,1325,1723,2068 or dst-port 2802,3306,3389,4430,4500,5190,5999,6502,8000,8001,8080,38197 or dst-port 55555,49152-65535 } out xmit fxp2
no subject
Date: 2012-05-10 07:12 am (UTC)Если скрипт автогенерации нельзя быстро/легко переписать на изменившийся синтаксис, то обычно это говорит, что всё очень, очень далеко от идеала. ;)
>or-блоки работают не только для IP-адресов. Вот реальный код, сгенерированный простеньким враппером на шелле
Ладно proto, но вот перечисление портов списком уже давным-давно просится быть вынесенными в таблицы, и соответствующие feature requests в PR висят.
no subject
Date: 2012-05-10 07:15 am (UTC)Можно, но некому. И не нужно.
> Ладно proto, но вот перечисление портов списком уже давным-давно просится быть вынесенными в таблицы, и соответствующие feature requests в PR висят.
Не понимаю, чем плохи or-blocks. Имена интерфейсов (разнородных) тоже хорошо в них указывать, да что угодно.
Плох парсер - переписать парсер, но синтаксис ломать "просто так" нельзя.
no subject
Date: 2012-05-10 07:49 am (UTC)no subject
Date: 2012-05-10 09:44 am (UTC)no subject
Date: 2012-05-10 09:53 am (UTC)вряд ли его разработка означает (по крайне мере в обозримом будущем) вынос классического ipfw
no subject
Date: 2012-05-10 10:30 am (UTC)вынос классического ipfw
Date: 2012-05-10 09:28 pm (UTC)no subject
Date: 2012-05-10 09:43 pm (UTC)вот есть ipfw2, который через хуки и с байткодом.
для простого стателесс (ну если полечить пару багов) он многих удоволетворяет.
и новый файрвол, на нетграфе, с блэкджеком, шлюхами, интегрированным натом и исходно state full, с совсем другим синтаксисом. потом, в дальнейшем, если получится можно будет к нему написать ipfw, который будет для скриптов эмулировать синтаксис ipfw. а можно и не писать -- один черт pfil будут оставленны для ipf/pf.
да, краткое размышление говорит о том, что pbr в файрволе не нужен, нужен отдельный модуль в роутинге для pbr, который может использовать информацию о state (flow) из файрвола для роутинга. это архитектурно-идеологически выглядит более правильно.
no subject
Date: 2012-05-11 01:58 am (UTC)+1
> который может использовать информацию о state (flow) из файрвола для роутинга
а это как, в смысле где посмотреть пример реализации? Я к тому, что IP, на уровне которого происходит форвардинг пакетов, у нас всё же stateless протокол.
no subject
Date: 2012-05-11 06:31 am (UTC)да, ipv4 -- state less. но если у нас есть state full файрвол, то для входящего пакета он может навесить mbuf с информацией о flow, которой этот модуль может воспользоваться. вот для сгенеренных на тазике пакетов сложнее -- они сначала на ротинг поступают, а потом уже в файрвол, занчит из этого модуля надо вызывать предварительную обработку пакета из файрвола для классификации и определения flow.
no subject
Date: 2012-05-18 01:17 am (UTC)(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-05-18 01:14 am (UTC)no subject
Date: 2012-05-18 02:56 pm (UTC)но синтаксис у них -- бюэ
no subject
Date: 2012-05-29 11:32 pm (UTC)no subject
Date: 2012-05-30 02:02 am (UTC)(no subject)
From:no subject
Date: 2012-05-18 01:24 am (UTC)Нет, я буду реформировать имеющийся (и кроме того, так вероятность приема в базу нужных изменений в стеке куда выше).
> да, краткое размышление говорит о том, что pbr в файрволе не нужен, нужен отдельный модуль в роутинге для pbr, который может использовать информацию о state (flow) из файрвола для роутинга. это архитектурно-идеологически выглядит более правильно.
А с точки зрения интерфейса юзера это как должно выглядеть? У меня из примеров перед глазами только iproute2 с CONNMARK
no subject
Date: 2012-05-18 02:55 pm (UTC)существующий править бесполезно.
не понял цимуса
ну скажем так
mark 'bge0' from any to any recv bge0
и в модуле pbr
route mark 'bge0' 1.2.3.4
предполагается, что все statefull, специально указывать что надо поддерживать state и flow не требуется и для всякого последующего файрвольного правила типа
allow from any to me port 69
будет созданно state с mark 'bge0' и для всех пакетов flow, попадающего под этот state будет повешен mark 'bge0'
как-то так, очень грубо.
no subject
Date: 2012-05-31 10:16 pm (UTC)Я так не считаю, и это один из центральных моментов моего проекта. Я буду править существующий.
>"С таким подходом это тебе на http://userfw.net - чувак пишет вещь, на мой взгляд, мертворожденную."
> не понял цимуса
Ну или вот http://blog.imax.in.ua/2012/02/userfw-freebsd.html почитай - чувак загорелся сделать новый файрвол. И делает. Даже код есть и как-то работает. По внутренней структуре (коя ему больше интересна) оно очень похоже на iptables, и в общем-то вполне годно и неплохо. Вот только нахуй никому не нужно, пара человек всего заинтересовалась за полгода. Он постоянно пристает в IRC к девелоперам, что на #freebsd, что на канале коммиттеров, "давайте пилить userfw". Но никто не хочет. Догадаешься, почему так?
> mark 'bge0' from any to any recv bge0
Как-то внутренняя работа всех этих конструкций не очень ясна. В iptables хотя бы явные копирования из тега пакета в тег flow...
(no subject)
From:no subject
Date: 2012-05-10 10:46 am (UTC)no subject
Date: 2012-05-10 09:25 pm (UTC)no subject
Date: 2012-05-11 01:39 am (UTC)"Все они хирурги и костоправы, нет среди них ни одного терапевта." (c)