Страница 1 из 1

Не работают правила с pipe

Добавлено: 2011-10-21 15:08:31
kharkov_max
День добрый.

Если в кратце описать проблему - то не работает шейпер в ipfw.
Ядро скомпилено с DUMMYNET, net.inet.ip.fw.one_pass=0

Есть блок правил описывающих подключение к ftp серверу.

Код: Выделить всё

${fw} add allow tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add allow tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}
Ftp трафик ходит только через эти правила фаервола.

Хочу ограничить скорость подключения к ftp, понимаю что можно резать на самом ftp сервере, но хочется реализовать через ipfw.
Меняю правила на:

Код: Выделить всё

${fw} pipe 1 config bw 500KByte/s queue 40
${fw} queue 1 config  pipe 1 weight 50  queue 40 mask dst-ip 0xffffffff
${fw} queue 2 config  pipe 1 weight 50  queue 40 mask src-ip 0xffffffff

${fw} add queue 1 tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add queue 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}
В результате доступа к FTP нет, счетчик in увеличивается.
Команды ipfw pipe show и ipfw queue show показывают что трубы и очереди есть, но по ним ни чего не ходит.
Не могу понять в чем может быть проблема.
Может кто натыкался на подобное и что то подскажет ?

Re: Не работают правила с pipe

Добавлено: 2011-10-21 20:02:46
rmn
kharkov_max писал(а):net.inet.ip.fw.one_pass=0
а allow-правило после add queue где?

Re: Не работают правила с pipe

Добавлено: 2011-10-22 9:49:48
kharkov_max
rmn писал(а):
kharkov_max писал(а):net.inet.ip.fw.one_pass=0
а allow-правило после add queue где?
А разве add queue не является разрешающим правилом ?
Может я что то не дочитал ...

Вы хотите сказать что должно быть так ?

Код: Выделить всё

${fw} pipe 1 config bw 500KByte/s queue 40
${fw} queue 1 config  pipe 1 weight 50  queue 40 mask dst-ip 0xffffffff
${fw} queue 2 config  pipe 1 weight 50  queue 40 mask src-ip 0xffffffff

${fw} add queue 1 tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add queue 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}

${fw} add allow tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add allow 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}
....
deny all

Re: Не работают правила с pipe

Добавлено: 2011-10-22 10:26:08
rmn
kharkov_max писал(а): А разве add queue не является разрешающим правилом ?
Когда one_pass == 1. Если one_pass == 0, пакеты после pipe, queue, nat, etc. проверяются по дальнейшим правилам.

Re: Не работают правила с pipe

Добавлено: 2011-10-22 10:33:37
kharkov_max
Т.е. в моем случае так будет правильно ?

Код: Выделить всё

${fw} pipe 1 config bw 500KByte/s queue 40
${fw} queue 1 config  pipe 1 weight 50  queue 40 mask dst-ip 0xffffffff
${fw} queue 2 config  pipe 1 weight 50  queue 40 mask src-ip 0xffffffff

${fw} add queue 1 tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add queue 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}

${fw} add allow tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add allow 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}
....
deny all

Re: Не работают правила с pipe

Добавлено: 2011-10-22 12:00:12
kharkov_max
kharkov_max писал(а):Т.е. в моем случае так будет правильно ?

Код: Выделить всё

${fw} pipe 1 config bw 500KByte/s queue 40
${fw} queue 1 config  pipe 1 weight 50  queue 40 mask dst-ip 0xffffffff
${fw} queue 2 config  pipe 1 weight 50  queue 40 mask src-ip 0xffffffff

${fw} add queue 1 tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add queue 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}

${fw} add allow tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add allow 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}
....
deny all
Вообщем так - заработало, только не пойму следующего.
Сделал 2 разных трубы, для входа и выхода трафика с ftp.

Код: Выделить всё

${fw} pipe 1 config bw 500KByte/s queue 40
${fw} pipe 2 config bw 100KByte/s queue 40

${fw} queue 1 config  pipe 1 weight 50  queue 40 mask dst-ip 0xffffffff
${fw} queue 2 config  pipe 2 weight 50  queue 40 mask src-ip 0xffffffff

${fw} add queue 1 tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add queue 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}

${fw} add allow tcp from ${ext_gateway_ip} 20,21,40000-40100 to any out via ${ext_if}
${fw} add allow 2 tcp from any  to ${ext_gateway_ip} 20,21,40000-40100  in via ${ext_if}
....
deny all
В результате, трафик который идет от сервера к ftp клиенту - шейпится, а трафик который идет от клиента на сервер - нет.
Т.е. клиент может передавать на сервер без ограничений.

Как правильно поправить ?

Re: Не работают правила с pipe

Добавлено: 2011-10-22 12:52:25
kharkov_max
Все - разобрался.
Все вопросы снимаются.

Спасибо.