IpfwNg

Apr 26, 2012 03:11

В честь 26 годовщины 26 апреля уволился с текущей работы и таки наконец начал проект http://wiki.freebsd.org/IpfwNg - хотя на работе FreeBSD и была основной системой, реальную возможность пилить ядро я так и не получил (хотя тот же NAT64 нам бы понадобился не через полгода, так через год ( Read more... )

сети, netgraph, freebsd

Leave a comment

Comments 158

dadv May 2 2012, 05:51:06 UTC
А не хотелось бы тебе для начала поразбираться с жуткими багами в существующем ipfw? Например:

#!/bin/sh

args="add 60001 count ip from any to { "

for i in `jot $1 1`
do
args="${args}127.0.0.$i or "
done
args="${args}127.0.1.1 }";

ipfw delete 60001
echo ipfw $args
ipfw $args

Для i386 запускаем скрипт с аргументом 122, для amd64 с аргументом 121. На 8.3 после этого наблюдаем бинарник /sbin/ipfw в состоянии running, жрущий все такты CPU, не убиваемый через kill -9. Любой последующий запуск ipfw - даже ipfw show - порождает второй такой же процесс. Перезагрузиться нормально такая система уже не в состоянии, только через выход в KDB и reboot там.

Reply

denis_sotchenko May 6 2012, 12:00:52 UTC
а kill -STOP не работает?

Reply

dadv May 6 2012, 12:30:29 UTC
Не пробовал и в данный момент попробовать не могу, но мне не надо -STOP. Мне надо -KILL, а точнее чтобы и KILL не требовался:-)

Reply

nuclight May 10 2012, 01:32:43 UTC
Нет. Неубиваемый по SIGKILL процесс - это точно не моя епархия, это этажом ниже, к товарищам из линкеров, лоадеров, процессов и VM-подсистемы. То, что он циклится - это проблема уже ipfw, но как раз парсер и предполагается переписать нафиг, там жуткая немаинтенабельная каша. К тому же ты привел пример из старого синтаксиса, который по-хорошему бы вообще закопать (но я всё-таки описал на странице наброски решения).

Reply


denis_sotchenko May 4 2012, 22:01:39 UTC
1) По поводу stateful fw: По-моему, вместо генерации динамических правил, возможно, разумнее генерировать таблички.

2) По поводу привязки к интерфейсам…
в таком виде для провайдерского роутера это малоприменимо.
Например, тазик обслуживает 3000 абонентов - создано 3000 вланов. Если делать 3000 "файрвольчиков", будет сильно размываться кэш.
Один большой, возможно, с чуть более сложной логикой, запросто окажется выгоднее.
Если вместо вланов пппое - там интерфейсы и вовсе динамические, не напривязываешься.

А когда на тачке интерфейсов всего несколько - "привязка" делается несколькими skipto.
Итог - та же самая возможность, что со skipto, просто создана новая сущность. Смысл?

Reply


denis_sotchenko May 4 2012, 22:07:16 UTC
И чего не хватает: двухадресных таблиц.
Чтобы можно было, к примеру, индивидуально задать для каждого абонента, куда ему нельзя ходить.

Reply

ra_ga May 25 2012, 22:54:01 UTC
не хватает возможстей ipset.

Reply

denis_sotchenko May 25 2012, 23:14:47 UTC
Поподробнее?

Reply


toxa May 21 2012, 05:44:47 UTC
Вопрос ко всем: а когда в -current будет pf не из древнего опенка?

Reply

dadv May 21 2012, 07:49:02 UTC
Когда кто-нибудь, кому pf важен, обновит его в current из свежего опенка.

Именно так работает эта система.

Reply

dadv October 12 2012, 15:42:53 UTC
glebius@ обновил pf и сделал его поддерживающим параллельную работу на нескольких ядрах, в отличие от опеночного.

Reply

(The comment has been removed)


Leave a comment

Up