Ограничение скорости по IPFW
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- ефрейтор
- Сообщения: 57
- Зарегистрирован: 2012-01-10 20:16:03
Ограничение скорости по IPFW
Подскажите пожалуйста не могу разобраться почему скорость не режет по второму IP, а точнее режет но берёт другой параметр (bw1_out=4096Kbit/s), а должен брать для каждого указанного IP.
Помогите пожалуйста. В чём моя ошибка.
Рассмотрю другие варианты.
8192Kbit/s для 10.128.0.2
4096Kbit/s для 10.128.0.3
% ee /etc/rc.conf
firewall_enable="YES"
firewall_script="/usr/script/ipfw_load.sh"
-----------------------------------------------------------------------------------
% /usr/script/ipfw_load.sh
# FIREWALL
#!/bin/sh
fwcmd="/sbin/ipfw -q"
ngctl="/usr/sbin/ngctl"
# Main
oif="nfe0"
oif_ip="10.128.0.2"
bw_out=8192Kbit/s
bw_in=256Kbit/s
# Maks
oif1="nfe0"
oif1_ip="10.128.0.3"
bw1_out=4096Kbit/s
bw1_in=256Kbit/s
########################################################
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from any to any via $oif out
${fwcmd} add 1010 queue 2 ip from any to any via $oif in
#oif1
${fwcmd} pipe 1 config bw $bw1_out
${fwcmd} pipe 2 config bw $bw1_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1020 queue 1 ip from any to any via $oif1 out
${fwcmd} add 1030 queue 2 ip from any to any via $oif1 in
Помогите пожалуйста. В чём моя ошибка.
Рассмотрю другие варианты.
8192Kbit/s для 10.128.0.2
4096Kbit/s для 10.128.0.3
% ee /etc/rc.conf
firewall_enable="YES"
firewall_script="/usr/script/ipfw_load.sh"
-----------------------------------------------------------------------------------
% /usr/script/ipfw_load.sh
# FIREWALL
#!/bin/sh
fwcmd="/sbin/ipfw -q"
ngctl="/usr/sbin/ngctl"
# Main
oif="nfe0"
oif_ip="10.128.0.2"
bw_out=8192Kbit/s
bw_in=256Kbit/s
# Maks
oif1="nfe0"
oif1_ip="10.128.0.3"
bw1_out=4096Kbit/s
bw1_in=256Kbit/s
########################################################
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from any to any via $oif out
${fwcmd} add 1010 queue 2 ip from any to any via $oif in
#oif1
${fwcmd} pipe 1 config bw $bw1_out
${fwcmd} pipe 2 config bw $bw1_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1020 queue 1 ip from any to any via $oif1 out
${fwcmd} add 1030 queue 2 ip from any to any via $oif1 in
Услуги хостинговой компании Host-Food.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/
Тарифы на виртуальные сервера (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/
- Shuba
- ст. сержант
- Сообщения: 365
- Зарегистрирован: 2008-03-25 10:58:21
- Откуда: Минск
- Контактная информация:
Re: Ограничение скорости по IPFW
Конечто будет 4 мегобита, т.к. ты в обоих случаях используешь именно их. Выставь на 1-ую сетевуху пайпы с номерами 1 и 2, а на вторую 3 и 4 к примеру, тогда они будут разные
Сила ночи, сила дня - одинакова фигня!
-
- ефрейтор
- Сообщения: 57
- Зарегистрирован: 2012-01-10 20:16:03
Re: Ограничение скорости по IPFW
"10.128.0.2" и "10.128.0.3" - это два разных компа. шлюз работает:
Вход интернета о одной ситевухе (vro)
Пользователь слушают на втором интерфейсе (nfe0).
Вход интернета о одной ситевухе (vro)
Пользователь слушают на втором интерфейсе (nfe0).
-
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2008-04-27 23:54:31
- Откуда: Витебск, Беларусь
- Контактная информация:
Re: Ограничение скорости по IPFW
Ошибка в том, что pipe и queue принимают значение с самого начала, до всех правил. Их расположение в конфиге ни на что не влияет.
Если посмотришь на свой конфиг, то там сначала pipe 1 присваивается значение $bw_out, а затем ему же присваивается $bw1_out.
Вот $bw1_out и будет применяться ко всем правилам.
И смысл Shuba правильно сказал, надо делать разные pipe на каждый ip.
Если посмотришь на свой конфиг, то там сначала pipe 1 присваивается значение $bw_out, а затем ему же присваивается $bw1_out.
Вот $bw1_out и будет применяться ко всем правилам.
И смысл Shuba правильно сказал, надо делать разные pipe на каждый ip.
-
- ефрейтор
- Сообщения: 57
- Зарегистрирован: 2012-01-10 20:16:03
Re: Ограничение скорости по IPFW
Всё равно берёт самую большую скорость для любого указанного IP, вот мой IPFW config:
# FIREWALL
#!/bin/sh
fwcmd="/sbin/ipfw -q"
ngctl="/usr/sbin/ngctl"
ext_if="nfe0"
ext_ip="192.168.1.2"
####### MAIN #################################
oif="nfe0"
oif_ip="10.128.0.2"
bw_out=8192Kbit/s
bw_in=2048Kbit/s
####### MAKS #################################
oif1="nfe0"
oif1_ip="10.128.0.3"
bw1_out=4096Kbit/s
bw1_in=256Kbit/s
########################################################
${fwcmd} -f flush
${fwcmd} add 00001 allow all from any to any via lo0
${fwcmd} add deny all from any to me 22 via vr0
${fwcmd} add deny all from any to me 23 via vr0
${fwcmd} add deny all from any to me 80 in via vr0
${fwcmd} add deny all from any to me 8080 via vr0
${fwcmd} add allow all from any to me via nfe0
${fwcmd} add allow all from me to any via nfe0
${fwcmd} add allow all from me to any via vr0
${fwcmd} add allow all from any to me via vr0
${fwcmd} add allow all from any to any via vr0
${fwcmd} add allow all from any to any via nfe0
${fwcmd} add allow all from any to any
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from any to any via $oif out
${fwcmd} add 1010 queue 2 ip from any to any via $oif in
#oif1
${fwcmd} pipe 3 config bw $bw1_out
${fwcmd} pipe 4 config bw $bw1_in
${fwcmd} queue 3 config pipe 3 mask src-ip 0xffffffff
${fwcmd} queue 4 config pipe 4 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 3 ip from any to any via $oif1 out
${fwcmd} add 1010 queue 4 ip from any to any via $oif1 in
# FIREWALL
#!/bin/sh
fwcmd="/sbin/ipfw -q"
ngctl="/usr/sbin/ngctl"
ext_if="nfe0"
ext_ip="192.168.1.2"
####### MAIN #################################
oif="nfe0"
oif_ip="10.128.0.2"
bw_out=8192Kbit/s
bw_in=2048Kbit/s
####### MAKS #################################
oif1="nfe0"
oif1_ip="10.128.0.3"
bw1_out=4096Kbit/s
bw1_in=256Kbit/s
########################################################
${fwcmd} -f flush
${fwcmd} add 00001 allow all from any to any via lo0
${fwcmd} add deny all from any to me 22 via vr0
${fwcmd} add deny all from any to me 23 via vr0
${fwcmd} add deny all from any to me 80 in via vr0
${fwcmd} add deny all from any to me 8080 via vr0
${fwcmd} add allow all from any to me via nfe0
${fwcmd} add allow all from me to any via nfe0
${fwcmd} add allow all from me to any via vr0
${fwcmd} add allow all from any to me via vr0
${fwcmd} add allow all from any to any via vr0
${fwcmd} add allow all from any to any via nfe0
${fwcmd} add allow all from any to any
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from any to any via $oif out
${fwcmd} add 1010 queue 2 ip from any to any via $oif in
#oif1
${fwcmd} pipe 3 config bw $bw1_out
${fwcmd} pipe 4 config bw $bw1_in
${fwcmd} queue 3 config pipe 3 mask src-ip 0xffffffff
${fwcmd} queue 4 config pipe 4 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 3 ip from any to any via $oif1 out
${fwcmd} add 1010 queue 4 ip from any to any via $oif1 in
- Shuba
- ст. сержант
- Сообщения: 365
- Зарегистрирован: 2008-03-25 10:58:21
- Откуда: Минск
- Контактная информация:
Re: Ограничение скорости по IPFW
В правилах чёрт ногу сломит. На одной сетевухе 3 адреса (nfe0), вторая вроде как есть (vr0), но в макросах её нету. Далее
пропустят всё и вся без всякого шейпинга
на стоках шейпинга вроде как имеются номера (но даже они одинаковые в обоих секциях), и возможно они будут задействованы, но это точно не известно.
Далее, в самом шейпинге 2 секции, в которых фигурирует одна и та же сетевуха с адресами any to any.
Вот и получается, что трафик если и будет шейпиться вообще, то только по первой секции.
Вообщем нарисуй схему, что, откуда, куда и через што должно идти и с какими скоростями
Код: Выделить всё
${fwcmd} add allow all from any to me via nfe0
${fwcmd} add allow all from me to any via nfe0
${fwcmd} add allow all from me to any via vr0
${fwcmd} add allow all from any to me via vr0
${fwcmd} add allow all from any to any via vr0
${fwcmd} add allow all from any to any via nfe0
${fwcmd} add allow all from any to any
на стоках шейпинга вроде как имеются номера (но даже они одинаковые в обоих секциях), и возможно они будут задействованы, но это точно не известно.
Далее, в самом шейпинге 2 секции, в которых фигурирует одна и та же сетевуха с адресами any to any.
Вот и получается, что трафик если и будет шейпиться вообще, то только по первой секции.
Вообщем нарисуй схему, что, откуда, куда и через што должно идти и с какими скоростями
Сила ночи, сила дня - одинакова фигня!
-
- ефрейтор
- Сообщения: 57
- Зарегистрирован: 2012-01-10 20:16:03
Re: Ограничение скорости по IPFW
Код: Выделить всё
${fwcmd} -f flush
${fwcmd} add 00001 allow all from any to any via lo0
${fwcmd} add deny all from any to me 22 via vr0
${fwcmd} add deny all from any to me 23 via vr0
${fwcmd} add deny all from any to me 80 in via vr0
${fwcmd} add deny all from any to me 8080 via vr0
${fwcmd} add allow all from any to me via nfe0
${fwcmd} add allow all from me to any via nfe0
${fwcmd} add allow all from me to any via vr0
${fwcmd} add allow all from any to me via vr0
${fwcmd} add allow all from any to any via vr0
${fwcmd} add allow all from any to any via nfe0
${fwcmd} add allow all from any to any
Код: Выделить всё
${fwcmd} add allow all from any to any
Дело не в этом, а вот в чём не могу понять. Я все правила отрубаю оставляю только вышеуказанную строку. и всё равно скорость режется не правильно берётся самая верхняя скорость.
Я пробывал вот так даже, чтобы вам было понятно: (оставляю только ниже указанные строки)
# /usr/script/ipfw_load.sh
Код: Выделить всё
# FIREWALL
#!/bin/sh
fwcmd="/sbin/ipfw -q"
ngctl="/usr/sbin/ngctl"
ext_if="nfe0"
ext_ip="192.168.1.2"
####### MAIN #################################
oif="nfe0"
oif_ip="10.128.0.2"
bw_out=8192Kbit/s
bw_in=2048Kbit/s
####### MAKS #################################
oif1="nfe0"
oif1_ip="10.128.0.3"
bw1_out=4096Kbit/s
bw1_in=256Kbit/s
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from any to any via $oif out
${fwcmd} add 1010 queue 2 ip from any to any via $oif in
#oif1
${fwcmd} pipe 3 config bw $bw1_out
${fwcmd} pipe 4 config bw $bw1_in
${fwcmd} queue 3 config pipe 3 mask src-ip 0xffffffff
${fwcmd} queue 4 config pipe 4 mask dst-ip 0xffffffff
${fwcmd} add 1020 queue 3 ip from any to any via $oif1 out
${fwcmd} add 1030 queue 4 ip from any to any via $oif1 in
Код: Выделить всё
bw_out=8192Kbit/s
bw_in=2048Kbit/s
- Shuba
- ст. сержант
- Сообщения: 365
- Зарегистрирован: 2008-03-25 10:58:21
- Откуда: Минск
- Контактная информация:
Re: Ограничение скорости по IPFW
Блин, ну почитай ты доки про прохождению трафика во фряхе вообще и в ipfw в частности. Вот тебе ссыль.
Ну и конкретно по твоим правилам:
Получаем такое:
Видно, что 1000 и 1020 практически одинаковые, также как и 1010 с 1030, отличается только номера в queue. Правила в ipfw срабатывают по первому совпадению, т.е. у тебя всё идёт через 1000 и 1010, ниодного пакета до 1020 и 1030 не дойдёт. Всё это можно просмотреть с помощью ipfw show
Ну и конкретно по твоим правилам:
Получаем такое:
Код: Выделить всё
${fwcmd} add 1000 queue 1 ip from any to any via nfe0 out
${fwcmd} add 1010 queue 2 ip from any to any via nfe0 in
${fwcmd} add 1020 queue 3 ip from any to any via nfe0 out
${fwcmd} add 1030 queue 4 ip from any to any via nfe0 in
Сила ночи, сила дня - одинакова фигня!
-
- мл. сержант
- Сообщения: 131
- Зарегистрирован: 2008-04-27 23:54:31
- Откуда: Витебск, Беларусь
- Контактная информация:
Re: Ограничение скорости по IPFW
Не факт. Всё зависит от переменной net.inet.ip.fw.one_pass.в ipfw срабатывают по первому совпадению, т.е. у тебя всё идёт через 1000 и 1010, ниодного пакета до 1020 и 1030 не дойдёт. Всё это можно просмотреть с помощью ipfw show
-
- лейтенант
- Сообщения: 719
- Зарегистрирован: 2007-08-23 10:56:51
- Откуда: Украина, г. Киев, г. Белая Церковь
- Контактная информация:
Re: Ограничение скорости по IPFW
Код: Выделить всё
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from any to any via $oif out
${fwcmd} add 1010 queue 2 ip from any to any via $oif in
#oif1
${fwcmd} pipe 3 config bw $bw1_out
${fwcmd} pipe 4 config bw $bw1_in
${fwcmd} queue 3 config pipe 3 mask src-ip 0xffffffff
${fwcmd} queue 4 config pipe 4 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 3 ip from any to any via $oif1 out
${fwcmd} add 1010 queue 4 ip from any to any via $oif1 in
Вы делаете комбинацию
Код: Выделить всё
ip from any to any via
Или указывайте явно адреса компов, или создайте таблицы и в них добавте нужные адреса и потом на отдельные таблицы отдельные очереди создавайте.
-
- ефрейтор
- Сообщения: 57
- Зарегистрирован: 2012-01-10 20:16:03
Re: Ограничение скорости по IPFW
Я буду вам очень признателен. Можно с этого момента по подробнее.
-
- лейтенант
- Сообщения: 719
- Зарегистрирован: 2007-08-23 10:56:51
- Откуда: Украина, г. Киев, г. Белая Церковь
- Контактная информация:
Re: Ограничение скорости по IPFW
Пожалуйста!maestro0728 писал(а):Я буду вам очень признателен. Можно с этого момента по подробнее.
Код: Выделить всё
# FIREWALL
#!/bin/sh
fwcmd="/sbin/ipfw -q"
ngctl="/usr/sbin/ngctl"
ext_if="nfe0"
ext_ip="192.168.1.2"
####### MAIN #################################
oif="nfe0"
oif_ip="10.128.0.2"
bw_out=8192Kbit/s
bw_in=2048Kbit/s
####### MAKS #################################
oif1="nfe0"
oif1_ip="10.128.0.3"
bw1_out=4096Kbit/s
bw1_in=256Kbit/s
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from ${oif_ip} to any out
${fwcmd} add 1010 queue 2 ip from any to ${oif_ip} in
#oif1
${fwcmd} pipe 3 config bw $bw1_out
${fwcmd} pipe 4 config bw $bw1_in
${fwcmd} queue 3 config pipe 3 mask src-ip 0xffffffff
${fwcmd} queue 4 config pipe 4 mask dst-ip 0xffffffff
${fwcmd} add 1020 queue 3 ip from ${oif1_ip} to any out
${fwcmd} add 1030 queue 4 ip from any to ${oif1_ip} in
Для большего кол-ва клиентов лучше использовать таблицы
Код: Выделить всё
# FIREWALL
#!/bin/sh
fwcmd="/sbin/ipfw -q"
ngctl="/usr/sbin/ngctl"
ext_if="nfe0"
ext_ip="192.168.1.2"
####### MAIN #################################
oif="nfe0"
oif_ip="10.128.0.2"
bw_out=8192Kbit/s
bw_in=2048Kbit/s
####### MAKS #################################
oif1="nfe0"
oif1_ip="10.128.0.3"
bw1_out=4096Kbit/s
bw1_in=256Kbit/s
${fwcmd} table 1 add $oif_ip
${fwcmd} table 1 add 10.128.0.4/32
${fwcmd} table 2 add $oif1_ip
${fwcmd} table 2 add 10.128.0.5/32
${fwcmd} table 2 add 10.128.1.0/24
#oif
${fwcmd} pipe 1 config bw $bw_out
${fwcmd} pipe 2 config bw $bw_in
${fwcmd} queue 1 config pipe 1 mask src-ip 0xffffffff
${fwcmd} queue 2 config pipe 2 mask dst-ip 0xffffffff
${fwcmd} add 1000 queue 1 ip from table\(1\) to any out
${fwcmd} add 1010 queue 2 ip from any to table\(1\) in
#oif1
${fwcmd} pipe 3 config bw $bw1_out
${fwcmd} pipe 4 config bw $bw1_in
${fwcmd} queue 3 config pipe 3 mask src-ip 0xffffffff
${fwcmd} queue 4 config pipe 4 mask dst-ip 0xffffffff
${fwcmd} add 1020 queue 3 ip from table\(2\) to any out
${fwcmd} add 1030 queue 4 ip from any to table\(2\) in