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

Pf не режет скорость, подлец.

Добавлено: 2009-08-27 15:10:30
vasdor
Друзья!
Добрый день! Не можете подсказать - почему не работает конструкция:

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

altq on $vpnb_if cbq bandwidth 1950Kb queue {rezh, qall}
    queue rezh bandwidth 50Kb priority 2 cbq
... и далее - в правилах фильтрации :

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

block on $vpnb_if proto tcp from any port {137, 139, 445} to 192.168.252.59
pass in on $office_if proto tcp from 192.168.252.59 to any port {137, 139, 445} queue rezh no state
pass out on $vpnb_if proto tcp from 192.168.252.59 to any port {137, 139, 445} queue rezh no state
pass in on $vpnb_if proto tcp from any port {137, 139, 445} to 192.168.252.59 queue rezh no state
pass out on $office_if proto tcp from any port {137, 139, 445} to 192.168.252.59  queue rezh no state
Схема такая : office_if - внутренний интерфейс, vpnb_if - внешний. Хочу ограничить скорость скачки по протоколам 139,445 до 50 килобит

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-27 16:29:06
Shuba
А ядро с поддержкой ALTQ собрано???

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-27 16:41:46
vasdor
Эт само собой...
Вот, например, если сделать 1-ю строчку :

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

altq on $vpnb_if cbq bandwidth 100Kb
т.е. дать 100 килобит на весь интерфейс
Общую скорость на интерфейсе режет - по всем протоколам
а вот именно правило rezh - не срабатывает
no state убираю из правил - не помогает

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-27 17:17:29
Shuba
попробуй так

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

altq on $vpnb_if cbq bandwidth 1950Kb queue { rezh, qall }
    queue rezh bandwidth 50Kb priority 2 cbq
и в остальных правилах тоже после "{" и перед "}" поставить пробелы

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-28 9:41:10
vasdor
Попробовал - ни фига...
Есть другие правила резания - например, только на внутр. интерфейсе. Там всё работает.
Блин, и логи не особо выручают - pftop показывает, что пакеты от и на 192.168.252.59 проходили по протоколу 445.

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-28 9:57:22
Shuba
а почему именно no state??? И вообще, выложи целиком файл кофига фаера, может ошибка не в этих строках...

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-28 11:57:14
vasdor
No state - потому что в 7-ке по умолчанию стоит keep state - я так понимаю, что клиент запрашивает соединение, оно пропускается фаерволлом, создаётся запись в таблице и ответные пакеты уже игнорируются, но пропускаются.
Ну, даже если я убираю no state - ничего не меняется.
Вот конфиг, упростил его до такого вида и применил:

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

office_if="bge0"                   #интерфейс смотрит в локальную сеть
inet_if="rl0"                      #интернет 1
vpnb_if="re0"                      #впн 
proxy_if="lo0"                     #интерфейс прокси
proxy_port="3128"                  #порт прокси
allow_icmp="{echoreq, unreach}"    #разрешенные echo запросы
office_net="192.168.252.0/24"      #подсеть офиса на островского
set block-policy return
set skip on lo0                    #не проверям трафик на внутренней петле
scrub in all                       #фрагментирование пакетов (дожидаемся всех пакетов)

#шейпинг
altq on $vpnb_if cbq bandwidth 1950Kb queue { rezh, qall, alt }
    queue rezh bandwidth 50Kb priority 2 cbq
    queue qall bandwidth 380Kb priority 3 cbq ( default borrow )
    queue alt  bandwidth 30Kb priority 2 cbq

#завернем весь www трафик на squid
rdr on $office_if proto tcp from $office_if:network to any port www -> $proxy_if port $proxy_port

#режем скорость
block on $vpnb_if proto tcp from any to 192.168.252.59
block on $vpnb_if proto tcp from 192.168.252.59 to any
pass out on $vpnb_if proto tcp from 192.168.252.59 to any queue rezh
pass in on $vpnb_if proto tcp from any to 192.168.252.59 queue rezh
и всё. И ни фига не режет
Что характерно, если заменить очередь на внешнем интерфейсе на внутр. и резать только на нём - всё режет отлично.

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-28 15:52:04
Shuba
Какой-то странный у тебя конфиг фаера, к примеру, не видно, открытый он, или закрытый. Мой телепатический дар подсказывает мне, что ты пытаешься один адрес (192.168.252.59) пропустить мимо прокси.
Попробую его немного переделать. Кроме того, странный у тебя интерфейс на VPN, обычно интерфейсы, созданные VPN-ом имеют имена ng* и tun*.

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

office_if="bge0"                   #интерфейс смотрит в локальную сеть
inet_if="rl0"                      #интернет 1
vpnb_if="re0"                      #впн 
proxy_if="lo0"                     #интерфейс прокси
proxy_port="3128"                  #порт прокси
allow_icmp="{echoreq, unreach}"    #разрешенные echo запросы
office_net="192.168.252.0/24"      #подсеть офиса на островского
set block-policy return
set skip on lo0                    #не проверям трафик на внутренней петле
scrub in all                       #фрагментирование пакетов (дожидаемся всех пакетов)

#шейпинг
altq on $vpnb_if cbq bandwidth 1950Kb queue { rezh, qall, alt }
    queue rezh bandwidth 50Kb priority 2 cbq
    queue qall bandwidth 380Kb priority 3 cbq ( default borrow )
    queue alt  bandwidth 30Kb priority 2 cbq

#завернем весь www трафик на squid
rdr on $office_if proto tcp from $office_if:network to any port www -> $proxy_if port $proxy_port
# NAT для адреса 192.168.252.59
nat on $vpnb_if inet proto tcp from 192.168.252.59 to any -> $vpnb_if
#режем скорость
# Делаем политику закрытого фаерволла
block in all
# Тогда надобность в следующих двух строках отпадает
#block on $vpnb_if proto tcp from any to 192.168.252.59
#block on $vpnb_if proto tcp from 192.168.252.59 to any
# Следующие стоки для NAT-а заменяются одной
# pass out on $vpnb_if proto tcp from 192.168.252.59 to any queue rezh
# pass in on $vpnb_if proto tcp from any to 192.168.252.59 queue rezh
pass out on $vpnb_if proto tcp from 192.168.252.59 to any modulate state queue rezh
Вообщем вылаживай правила целиком, без упращений и сокарщений и напиши, что они должны делать

Re: Pf не режет скорость, подлец.

Добавлено: 2009-08-31 9:32:36
vasdor
Ну, фактически это и есть весь конфиг, действующий в определённый момент. Именно он работает. Пусть будет открытый. Но ведь должен же резать.
---
VPN - название условное. Так называет провайдер услугу - через ADSL-модем связь с другим офисом. Т.е. не тот VPN, который обычно имеетс в виду..
---
Телепатический дар твой немножко обманывает. Я хочу обрезать одному ip скорость - и , например, скорость скачивания с шлюза по самбе режет отлично (на одном интерфейсе). А скорость скачивания с другого офиса по тем же протоколам (через 2 интерфейса - внутр. и внешн.) не хочет резать, хоть ты тресни.
---
В любом случае, спасибо за желание помочь... Буду разбираться...