IpfwNg
В честь 26 годовщины 26 апреля уволился с текущей работы и таки наконец начал проект http://wiki.freebsd.org/IpfwNg — хотя на работе FreeBSD и была основной системой, реальную возможность пилить ядро я так и не получил (хотя тот же NAT64 нам бы понадобился не через полгода, так через год). В ближайшие недели посижу дома и надеюсь сделать хотя бы скелет, который можно будет потом уже в свободное время потихоньку пилить — работы по проекту предстоит очень много.
Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).
Желающие обсудить по делу — велкам в каменты (хотя я туда еще не все наброски оформил).
no subject
Для i386 запускаем скрипт с аргументом 122, для amd64 с аргументом 121. На 8.3 после этого наблюдаем бинарник /sbin/ipfw в состоянии running, жрущий все такты CPU, не убиваемый через kill -9. Любой последующий запуск ipfw - даже ipfw show - порождает второй такой же процесс. Перезагрузиться нормально такая система уже не в состоянии, только через выход в KDB и reboot там.
no subject
no subject
no subject
no subject
no subject
P.S. Переписать автогенерацию, кстати, обычно существенно проще. ;)
no subject
> Есть хоть одна причина, чтобы не использовать таблицы в таких случаях?
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
Если скрипт автогенерации нельзя быстро/легко переписать на изменившийся синтаксис, то обычно это говорит, что всё очень, очень далеко от идеала. ;)
>or-блоки работают не только для IP-адресов. Вот реальный код, сгенерированный простеньким враппером на шелле
Ладно proto, но вот перечисление портов списком уже давным-давно просится быть вынесенными в таблицы, и соответствующие feature requests в PR висят.
no subject
Можно, но некому. И не нужно.
> Ладно proto, но вот перечисление портов списком уже давным-давно просится быть вынесенными в таблицы, и соответствующие feature requests в PR висят.
Не понимаю, чем плохи or-blocks. Имена интерфейсов (разнородных) тоже хорошо в них указывать, да что угодно.
Плох парсер - переписать парсер, но синтаксис ломать "просто так" нельзя.
no subject
no subject
no subject
вряд ли его разработка означает (по крайне мере в обозримом будущем) вынос классического ipfw
no subject
вынос классического ipfw
no subject
вот есть ipfw2, который через хуки и с байткодом.
для простого стателесс (ну если полечить пару багов) он многих удоволетворяет.
и новый файрвол, на нетграфе, с блэкджеком, шлюхами, интегрированным натом и исходно state full, с совсем другим синтаксисом. потом, в дальнейшем, если получится можно будет к нему написать ipfw, который будет для скриптов эмулировать синтаксис ipfw. а можно и не писать -- один черт pfil будут оставленны для ipf/pf.
да, краткое размышление говорит о том, что pbr в файрволе не нужен, нужен отдельный модуль в роутинге для pbr, который может использовать информацию о state (flow) из файрвола для роутинга. это архитектурно-идеологически выглядит более правильно.
no subject
+1
> который может использовать информацию о state (flow) из файрвола для роутинга
а это как, в смысле где посмотреть пример реализации? Я к тому, что IP, на уровне которого происходит форвардинг пакетов, у нас всё же stateless протокол.
no subject
да, ipv4 -- state less. но если у нас есть state full файрвол, то для входящего пакета он может навесить mbuf с информацией о flow, которой этот модуль может воспользоваться. вот для сгенеренных на тазике пакетов сложнее -- они сначала на ротинг поступают, а потом уже в файрвол, занчит из этого модуля надо вызывать предварительную обработку пакета из файрвола для классификации и определения flow.
no subject
(no subject)
(no subject)
(no subject)
no subject
(no subject)
no subject
(no subject)
(no subject)
no subject
Нет, я буду реформировать имеющийся (и кроме того, так вероятность приема в базу нужных изменений в стеке куда выше).
> да, краткое размышление говорит о том, что pbr в файрволе не нужен, нужен отдельный модуль в роутинге для pbr, который может использовать информацию о state (flow) из файрвола для роутинга. это архитектурно-идеологически выглядит более правильно.
А с точки зрения интерфейса юзера это как должно выглядеть? У меня из примеров перед глазами только iproute2 с CONNMARK
no subject
существующий править бесполезно.
не понял цимуса
ну скажем так
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)
(no subject)
no subject
no subject
no subject
"Все они хирурги и костоправы, нет среди них ни одного терапевта." (c)