IpfwNg
В честь 26 годовщины 26 апреля уволился с текущей работы и таки наконец начал проект http://wiki.freebsd.org/IpfwNg — хотя на работе FreeBSD и была основной системой, реальную возможность пилить ядро я так и не получил (хотя тот же NAT64 нам бы понадобился не через полгода, так через год). В ближайшие недели посижу дома и надеюсь сделать хотя бы скелет, который можно будет потом уже в свободное время потихоньку пилить — работы по проекту предстоит очень много.
Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).
Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).
no subject
Недавно переписывался с Глебом Смирновом (glebius). Если интересно, то он считает, что ipfw как stateful файервол существенно уступает pf (над которым он как раз сейчас усиленно работает), и libalias-based NAT (ipfw nat, ng_nat, не говоря уж о natd) это вообще тупиковая ветвь развития.
Мне как провайдеру в ipfw не хватает адекватного перекладывания в нужный интерфейс (ну что это за ерунда, делать fwd, но уже после routing decision?!), синхронизации states между нодами (да-да, именно поэтому я так обрадовался планам на ipfwsync) и Carrier Grade NAT (гигабиты NATa леххко).
no subject
no subject
no subject
но это должно быть расширяемо, модульно (с какими-то хуками), расширяемо в бинарном виде, идеально в виде описания нового протокола/расширения на DSL и трансляции в аналог какого-то DFA.
т.е. расширение должно быть не на си писанно. а после подгрузки в файрвол -- правятся внутренние таблицы (не в хуки вставляются в цепочку, а хуки говорят на каком уровне вставляться в какие таблицы. а далее в "таблицы" (которые могут на самом деле быть radix tree) вносятся исправления).
информация, которая добавляется может быть номером порта, сигнатурой по смещению, регэкспом (для расширения sipа, там же куча RFC, например с dual video отдельные пляски)
SIP must have.
хелперы отслеживания вторичных соединений
> SIP must have.
Ну ты же понимаешь, что в одиночку я это ниасилю (тем более я никогда не имел дела с SIP). Моя задача - сделать фреймворк,
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
Пример языка
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject
" "
no subject
Насчет ipfwsync - ну это когда еще будет... Я затрудняюсь сказать, сколько времени потребует проект, как минимум несколько месяцев _фулл-тайма_ (т.е. реально куда больше, потому что на попозже мне таки надо будет на работу устроиться), и для ipfwsync будет заложена возможность, а реализовано может будет уже после интеграции в базу.
И вопрос как провайдеру, насчет fwd: а на линуксовый iproute2 смотрели? Там выбор таблицы маршрутизации сделан несколько человечнее и похоже на ipfw синтаксисом даже (наш соотечественник делал). Оно, конечно, дублирует функционал iptables, но на эти проблемы нам плевать, можем сделать как хотим. Вопрос, что именно/как оттуда стоит брать, с точки зрения пользователя?
no subject
могу сказать, что человечного там при выборе таблицы маршрутизации довольно мало.
но это такая задача, которая на данный момент везде решается криво и есть ли для нее хорошее решение -- не ясно
no subject
no subject
синтаксисис -- мало ушел от птичьего.
а, не, вру -- натурально птичий, это же iproute. я в нем permit any any не осилил по ману, пришлось в гугл за примером лезть.
iproute2
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
>могу сказать, что человечного там при выборе таблицы маршрутизации довольно мало.
а в чём проблема?
root@laptus:~# ip rule help
Usage: ip rule [ list | add | del | flush ] SELECTOR ACTION
SELECTOR := [ not ] [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK[/MASK] ]
[ iif STRING ] [ oif STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ]
[ prohibit | reject | unreachable ]
[ realms [SRCREALM/]DSTREALM ]
[ goto NUMBER ]
TABLE_ID := [ local | main | default | NUMBER ]
вполне human readable.
>но это такая задача, которая на данный момент везде решается криво и есть ли для нее хорошее решение -- не ясно
несколько таблиц, где в каждой живёт свой набор маршрутов банально проще для восприятия. т.е. нечто вроде кубиков, которые отладил и поднимаешься вверх по уровням абстракции, строя уже из кубиков что-то более сложное.
no subject
например, нигде не было описанно что стадия PREROUTING (кажется) влияет на возможность bind сокета к локальному адресу и на arp кажется тоже. это осенью было -- вспоминать лень.
no subject
Ну вот Глеб, насколько я понимаю, и хочет своё запилить, без апстрима ;)
Насчет ipfwsync - ну это когда еще будет...
Я постараюсь уговорить руководство на денежный грант по ipfwsync. Если что, найдётся банковский счёт и юридическое лицо (хотя бы в виде ИП)?
И вопрос как провайдеру, насчет fwd: а на линуксовый iproute2 смотрели?
Нет, не смотрел. Смотрели у Линукса только iptables, и пытался продраться сквозь дебри синтаксиса tc (увы, не смог). NAT у него, конечно, отличнейший.
no subject
no subject
(no subject)
no subject
Если есть желание, я могу дать адрес автора, возможно удастся уговорить его выложить его куда нибудь.
no subject
(no subject)
no subject
Дурная это работа, как по мне. Там кроме SMP еще куча проблем, а синхронизироваться с апстримом ведь всё равно придется.
> Я постараюсь уговорить руководство на денежный грант по ipfwsync. Если что, найдётся банковский счёт и юридическое лицо (хотя бы в виде ИП)?
Увы, юридического лица не найдется. Да и до обеспечения возможности ipfwsync еще куча работы - хочется ведь полноценный ipfwsync (ввиду несовместимости между разными версиями мне кажется что полезность pfsync немного страдает).
> только iptables, и пытался продраться сквозь дебри синтаксиса tc (увы, не смог).
Что ж всё места-то такие... У него команда ip(8) единственная, где синтаксис человеческий, в отличие и от iptables и от tc.
no subject
а в каком месте? могу только вспомнить stateless nat
no subject
no subject
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)