Модификация ToS/DSCP/TTL/etc. на FreeBSD: ng_patch

Jul 15, 2010 04:15

Патчи, позволяющие матчить и изменять ToS/DSCP на FreeBSD, ходят в разных вариантах по сети уже лет шесть, вот очередная инкарнация, например. К сожалению, ни один из них так и не попал в базовую систему, хотя пример по ссылке, скажем, для конкретной задачи удобнее того, что описано ниже. Даже возникает подозрение, что это всё потому, что ( Read more... )

сети, netgraph, freebsd, ipfw, админское

Leave a comment

Comments 27

infofarmer July 15 2010, 08:02:03 UTC
Очень круто, спасибо!

Reply


pereresus_buggy July 16 2010, 20:59:30 UTC
Идея интересная, хотя я бы скорее подумал насчёт прикручивания подобного функционала к BPF. Можно попробовать заморочиться, конечно...

Reply


individstudio July 16 2010, 23:04:35 UTC
Надо было ставить Linux.

Reply


tarkhil January 31 2011, 08:54:51 UTC
Мана на сайте нету. ng_patch* в исходниках (8.1) отсутствует. Уже раскомиттили обратно?...

Reply

nuclight January 31 2011, 09:14:48 UTC
Коммит был в июле, releng/8.1 создан 14 июня. Ман есть: http://www.freebsd.org/cgi/man.cgi?query=ng_patch&apropos=0&sektion=0&manpath=FreeBSD+8.1-stable&format=html

Reply

tarkhil January 31 2011, 09:59:11 UTC
В 8.1-RELEASEp2 нету. Он пойдет только в 8.2 или я что-то не так поставил?

И еще один вопрос. Он работает только с ipfw или с pf тоже?

(а за статью по netgraph спасибо, буду вдумчиво читать)

Reply

nuclight January 31 2011, 10:24:15 UTC
> В 8.1-RELEASEp2 нету.

Разумеется, нету. И не будет.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html
http://www.freebsd.org/doc/en_US.ISO8859-1/articles/releng/index.html

> И еще один вопрос. Он работает только с ipfw или с pf тоже?

Только с ipfw, pf вообще такая нерасширяемая вещь в себе. Но в случае с pf можно прицепить к ng_ether, например, независимо от файрвола - правда, тогда пойдут изменяться все пакеты =) Можно нагородить схему с ng_tee + ng_bpf, конечно, но лично я, например, не считаю pf стоящим того.

Reply


Подскажите как заставить работать ng_pach ? ext_521046 April 22 2011, 08:22:23 UTC
Подскажите как заставить работать ng_pach ?
у меня вот такая проблема :

Конфиг ngctl :
Код:
/usr/sbin/ngctl -f- <<-SEQ
mkpeer ipfw: patch 500 in
name ipfw:500 dscp_af33_in
msg dscp_af33_in: setconfig { count=2 csum_flags=1 ops=[ \
{ mode=7 value=0x03 length=1 offset=1 } \
{ mode=8 value=0x78 length=1 offset=1 } ] }
SEQ
/sbin/ipfw add 160 netgraph 500 ip from table\(100\) to any

IPFW:
Код:
00160 52 4881 netgraph 500 ip from table(100) to any

ngctl :
Код:
There are 4 total nodes:
Name: ngctl37276 Type: socket ID: 00000007 Num hooks: 0
Name: ipfw Type: ipfw ID: 00000001 Num hooks: 2
Name: dscp_af33_in Type: patch ID: 00000003 Num hooks: 1
Name: dscp_af33_out Type: patch ID: 00000005 Num hooks: 1

sysctl:
Код:
net.inet.ip.fw.one_pass: 0

все ноды создаются и все без ошибок отрабатывает но после этого
трафик больше не ходит к таблице 100
по какой причине это может быть ?

Reply

Re: Подскажите как заставить работать ng_pach ? nuclight April 22 2011, 16:21:03 UTC
Проблема в том, что у ng_patch должно быть 2 хука - in и out. Соответственно, connect второго к ipfw: не сделан, и пакеты теряются. Т.е. в посте не совсем полная конфигурация :)

Reply

ivasian May 18 2012, 08:35:58 UTC
Я тоже не очень понял общую картину.
1) Пакет начинает проходить правила файрвола
2) Встречается правило отправляющее на обработку в ng_patch in ( netgraph 500)
Я так понимаю что пакет выходит из ng_patch out, и по логике ему еще надо вернуться в ipfw чтобы проходить правила дальше. Куда надо подключить ng_patch out? Правило вида
00160 52 4881 netgraph 500 ip from table(100) to any
ОТПРАВЛЯЕТ пакет в netgraph но не принимает его. Даже если подключить ноду out к ng_ipfw куда придет пакет из ng_patch?
p.s. читать исходники не готов ))

Reply

nuclight May 18 2012, 19:12:26 UTC
Нужно сделать просто что-то вида:

connect ipfw: имя_ноды_patch: 140 out

Номер хука на ng_ipfw любой, главное, чтоб он был. Через него и вернется обратно. Информация, с какого правила продолжить по рулесету ipfw, прицеплена к пакету, имя хука здесь не играет роли.

Reply


Leave a comment

Up