IPFW шейпинг

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
HEDG_SS
сержант
Сообщения: 198
Зарегистрирован: 2008-11-22 20:37:07

IPFW шейпинг

Непрочитанное сообщение HEDG_SS » 2011-06-06 18:49:09

Добрый день.
Выстраивается новый фаер для шейпинга с использованием ipfw pipe
Столкнулся со странным поведением шейпера.
Шейпер работает, режет трафик, но выдает скорость в два раза меньше .
Скорость не соответствует, как по входу, так и по исходу.
Не понятно с чем это может быть связано...
При этом через тестовый шепер ходит только один писюк.
Пробовал при стандартом sysctl.

Подскажите пожалуйста, если у кого есть какие-то мысли на этот счет...

Оставил минимальный набор правил, картина не изменилась:

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

00100     0        0 deny log ip from any to any frag
00200     0        0 check-state
00300     0        0 allow ip from any to any via lo0
00400     3      192 deny ip from any to any dst-port 69,135,139,445,1434,4444
01000   958   797499 skipto 60000 ip from any to me
01100  1301   165529 skipto 60000 ip from me to any
05400 34823 19963423 pipe tablearg ip from table(11) to any
33400 20361 27517021 pipe tablearg ip from any to table(10)
59999    15     1401 deny log ip from any to any
60100     0        0 allow ip from 91.202.108.128/28 to 224.0.0.4/30 out
60200  2871  2394717 allow ip from me to 91.202.108.128/28 keep-state
60500     0        0 deny log tcp from not table(99) to me dst-port 22 in setup
60600  1751   235936 allow tcp from table(99) to me in keep-state
60600     1       40 allow tcp from me 22 to any out established
60700     0        0 allow tcp from me to any out setup keep-state
60800     0        0 allow udp from table(2) to me dst-port 53 in keep-state
61000     0        0 allow udp from me to any dst-port 53,123 out keep-state
61100     0        0 allow icmp from me to any out icmptypes 8 keep-state
61300     0        0 allow icmp from table(2) to me in icmptypes 8 keep-state
65534     0        0 deny log ip from any to any
65535     0        0 allow ip from any to any
Таблицы 10 и 11 содержат ip, для которых нарезается скорость с соответствующими tablearg
Вот пример содержимого pipe и таблиц

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

# ipfw table 10 list | grep 200.200
172.17.200.200/32 9184

# ipfw pipe 9184 show
09184:   1.024 Mbit/s    0 ms burst 0
q140256  50 sl. 0 flows (1 buckets) sched 74720 weight 0 lmax 0 pri 0 droptail
 sched 74720 type FIFO flags 0x0 0 buckets 0 active

# ipfw table 11 list | grep 200.200
172.17.200.200/32 9185

# ipfw pipe 9185 show
09185:   1.024 Mbit/s    0 ms burst 0
q140257  50 sl. 0 flows (1 buckets) sched 74721 weight 0 lmax 0 pri 0 droptail
 sched 74721 type FIFO flags 0x0 0 buckets 0 active

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: IPFW шейпинг

Непрочитанное сообщение rmn » 2011-06-06 21:15:16

1. разделяй правила по интерфейсам и указывай направления прохождения пакетов:
2. не используй stateful-фаервол, если не знаешь, как правильно его настроить. Ощутимой разницы в нагрузке не будет.

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

100 allow ip from any to any via lo0
101 deny ip from any to 127.0.0.0/8
102 deny ip from 127.0.0.0/8 to any

###################################################

1000 skipto 10000 ip from any to any via ${int_if}
1001 skipto 20000 ip from any to any via ${out_if}

9999 skipto 65534 ip from any to any

###################################################
# правила для пакетов на внутреннем интерфейсе

#
# здесь запрещаем ненужные пакеты из внутренней сети,
# разрешаем пакеты из внутренней сети на шлюз и со шлюза 
# во внутреннюю сеть
#

11000 pipe tablearg ip from table(11) to any in
11000 pipe tablearg ip from any to table(10) out


19999 skipto 65534 ip from any to any

###################################################
# правила для пакетов на внешнем интерфейсе

#
# здесь запрещаем ненужные пакеты из внешней сети,
# разрешаем пакеты из внешней сети на шлюз и со шлюза 
# во внешнюю сеть
#

21000 allow ip from any to any


29999 skipto 65534 ip from any to any

###################################################

65534 deny ip from any to any
3. как сконфигурены пайпы?

HEDG_SS
сержант
Сообщения: 198
Зарегистрирован: 2008-11-22 20:37:07

Re: IPFW шейпинг

Непрочитанное сообщение HEDG_SS » 2011-06-07 10:25:28

Спасибо за советы по фаерволу.
Вроде проблем с пониманием работы фаера нет, в том числе и stateful. Правила stateful используются в случаях, когда не идет нарезка травика (обращение к самому серваку)
Здесь был представлен его урезаный альфа вариант.
Конфигурирование пайпов выполняется следующим образом

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

ipfw pipe 9184 config bw 1024Kbit/s
ipfw pipe 9185 config bw 1024Kbit/s
Т.к. под каждый ip создается свой пайп на вход и отдельно пайп на исход, то указывать какие либо дополнительные опции не вижу смысла...

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: IPFW шейпинг

Непрочитанное сообщение rmn » 2011-06-07 10:52:08

HEDG_SS писал(а):Спасибо за советы по фаерволу.
Вроде проблем с пониманием работы фаера нет, в том числе и stateful.
эти два правила говорят, что есть:

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

00200     0        0 check-state
60200  2871  2394717 allow ip from me to 91.202.108.128/28 keep-state
точнее отсутствие пакетов на первом и наличие на втором :)

HEDG_SS
сержант
Сообщения: 198
Зарегистрирован: 2008-11-22 20:37:07

Re: IPFW шейпинг

Непрочитанное сообщение HEDG_SS » 2011-06-07 11:06:22

Если я что-то не понимаю, был бы рад узнать, что именно (всегда рад узнать что-то новое)....
Вот вывод простейшего stateful фаервола в курсе BSDA
Счетчик возле check-state, также равен нулю...

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

# ipfw -d show
01000   0      0 check-state
02000 1194 704133 allow tcp from any to any keep-state
65535   0      0 deny ip from any to any
## Dynamic rules (18):
02000  44  38497 (296s) STATE tcp 194.1.161.14 2316 <-> 172.19.0.2 80
02000  26  18377 (296s) STATE tcp 194.1.161.14 2318 <-> 172.19.0.2 80
02000   4    320 (1s) STATE tcp 172.19.0.34 38100 <-> 172.19.0.2 22

HEDG_SS
сержант
Сообщения: 198
Зарегистрирован: 2008-11-22 20:37:07

Re: IPFW шейпинг

Непрочитанное сообщение HEDG_SS » 2011-06-07 11:14:09

Кстати аналогичный пример STATEFUL FIREWALL есть в man ipfw.

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: IPFW шейпинг

Непрочитанное сообщение rmn » 2011-06-07 11:24:13

а, да. Это я туплю :)

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: IPFW шейпинг

Непрочитанное сообщение rmn » 2011-06-07 11:29:58

проблема с пайпами вероятно в том, что через эти правила

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

05400 34823 19963423 pipe tablearg ip from table(11) to any
33400 20361 27517021 pipe tablearg ip from any to table(10)
пакеты проходили два раза:

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

in recv ${int_if}
и

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

out xmit ${out_if}
отсюда двойная задержка пакетов

HEDG_SS
сержант
Сообщения: 198
Зарегистрирован: 2008-11-22 20:37:07

Re: IPFW шейпинг

Непрочитанное сообщение HEDG_SS » 2011-06-07 11:39:52

Да бывает :), иногда простые вещи забываются....
Все, вопрос с шепингом решен, тоже туплю :)
Нарезка происходила дважды in(out) на внутренний интерфейс и out(in) на внешнем...
P.S. Ваши замечания навели меня на этот стандартный бок... Спасибо!!!!!

P.P.S. Как раз только отписался и Вы указали на мою ошибку :)