Нужна помощь в ограничении скорости

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
kuraltay-khan
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-03-22 11:13:14
Откуда: Барнаул
Контактная информация:

Нужна помощь в ограничении скорости

Непрочитанное сообщение kuraltay-khan » 2015-03-10 10:24:10

...ситуация такова: я не эксперт по фрям, но кое что могу. Сейчас стоит версия 9.2, использую ipfw и в нём таблицы с запрещёнными внешними \(1\) и внутренними \(2\) адресами, которые при проверке блокируются. Нужно ещё урезать скорость подключения к некоторым сайтам определённым людям, для этого создал очередную таблицу \(3\), в которую внёс внутренние адреса, которые надо по скорости ограничить, а также таблицу \(4\) тех сайтов, которые надо ограничивать. Как я понял это делается через pipe, в /etc/rc.conf добавил строку dummynet_enable="YES" чтоб не пересобирать ядро. Но не могу далее ума дать, чтоб включить ограничение в ipfw... :(

...отсюда 3 вопроса:

1. Можно ли в таблице \(4\) с ip-адресами для ограничения внешними использовать не сами ip-адреса, а их имена, к примеру, youtube.ru так как высекать все ip-адреса на которых он сидит - не реально
2. Как создать pipe 1 c ограничением по скорости, к примеру 1Мбит/сек (как я понял, то это правило ipfw add pipe 1 config bw 1Mbit/s или что-то типа того, но как его и куда всунуть? В файле rc.conf файерволл включен, параметр включения OPEN)
3. Как прописать в автозагрузочном скрипте правило, типа: для таблица \(3\) использовать pipe 1 с ограничением 1Mbit/s по отношению к адресам из таблица \(4\)

Хостинговая компания 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/

logout_90
мл. сержант
Сообщения: 72
Зарегистрирован: 2014-01-27 5:36:26

Нужна помощь в ограничении скорости

Непрочитанное сообщение logout_90 » 2015-03-10 10:49:29

А чем прокси сервер не нравится? Тот же squid умеет и ограничивать скорость и резать запрещенные сайты хоть по ip адресу, хоть по dns имени, хоть по регулярному выражению.

kuraltay-khan
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-03-22 11:13:14
Откуда: Барнаул
Контактная информация:

Нужна помощь в ограничении скорости

Непрочитанное сообщение kuraltay-khan » 2015-03-10 11:17:08

...если бы нужен был сквид - я бы его поставил. Это у меня входной шлюз, тупо на подсетки рубит и прочие тонкости (грубо говоря маршрутизатор), за ним уже прокси стоит...

logout_90
мл. сержант
Сообщения: 72
Зарегистрирован: 2014-01-27 5:36:26

Нужна помощь в ограничении скорости

Непрочитанное сообщение logout_90 » 2015-03-10 11:48:25

kuraltay-khan писал(а): 1. Можно ли в таблице \(4\) с ip-адресами для ограничения внешними использовать не сами ip-адреса, а их имена, к примеру, youtube.ru так как высекать все ip-адреса на которых он сидит - не реально
Насколько знаю, штатными средствами ipfw такую штуку не сделать (впрочем, возможно, знаю не все). Возможный вариант - скрипт, который будет определять по dns ip адрес хоста и запихивать нужные правила в фаерволл.
kuraltay-khan писал(а): 2. Как создать pipe 1 c ограничением по скорости, к примеру 1Мбит/сек (как я понял, то это правило ipfw add pipe 1 config bw 1Mbit/s или что-то типа того, но как его и куда всунуть? В файле rc.conf файерволл включен, параметр включения OPEN)
Если нужен пример работы очередей, то вот статья http://www.lissyara.su/articles/freebsd ... ueue_pipe/
Там только пример. Впрочем, из него понятно, как делать самый простой шейпер )))

Аватара пользователя
ADRE
майор
Сообщения: 2645
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Нужна помощь в ограничении скорости

Непрочитанное сообщение ADRE » 2015-03-10 19:19:22

самое простое загнать в queue и sched настроить и всё ок.
да, вариант, парсить днс конечного хоста и заносить его в таблицу.
//del

kuraltay-khan
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-03-22 11:13:14
Откуда: Барнаул
Контактная информация:

Нужна помощь в ограничении скорости

Непрочитанное сообщение kuraltay-khan » 2015-03-11 6:00:05

...сейчас автозапускаемый скрипт у меня выглядит так:

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


#!/bin/sh

###updade table 1 (bad_ip)
ipfw table 1 flush
cat /bin/bad_ip.txt | while read ip; do ipfw table 1 add $ip

done

###updade table 2 (ip-limit)
ipfw table 2 flush
cat /bin/ip-limit.txt | while read ip; do ipfw table 2 add $ip

done

###updade table 3 (ip-limit-speed)
ipfw table 3 flush
cat /bin/ip-limit-speed.txt | while read ip; do ipfw table 3 add $ip

done

###911 (do)
ipfw add 57 deny ip from table\(1\) to table\(2\)


...то есть в текстовики вручную набиваю ip-адреса, а они автоматом потом исключаются...

...честно говоря, пока не совсем понял как сделать, почитал указанный пример, но, честно говоря, как-то не допёрло до меня... :(
...поэтому, если кто может, то приведите код и куда его вставлять, для тех кто в танке...

Отправлено спустя 10 минут 4 секунды:
...да, и если не трудно, то про парсер ip адресов, о котором писали выше хотелось бы узнать как и что...

Аватара пользователя
ADRE
майор
Сообщения: 2645
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Нужна помощь в ограничении скорости

Непрочитанное сообщение ADRE » 2015-03-11 7:23:38

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

#!/bin/sh

cat ./links.txt |
{
while read link
do

echo `host -t A "${link}" | awk '{print $4}'`

done
}
как то так.
//del

kuraltay-khan
проходил мимо
Сообщения: 8
Зарегистрирован: 2013-03-22 11:13:14
Откуда: Барнаул
Контактная информация:

Нужна помощь в ограничении скорости

Непрочитанное сообщение kuraltay-khan » 2015-03-11 7:37:37

ADRE писал(а):

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

#!/bin/sh

cat ./links.txt |
{
while read link
do

echo `host -t A "${link}" | awk '{print $4}'`

done
}
как то так.

...как я понял это парсер, который делает из линков записанных в текстовике links.txt в таблицу table\(4\)?..

logout_90
мл. сержант
Сообщения: 72
Зарегистрирован: 2014-01-27 5:36:26

Нужна помощь в ограничении скорости

Непрочитанное сообщение logout_90 » 2015-03-11 11:46:23

Это скрипт, который выводит все ип адреса хостов, днс имена которых записаны в файл Links.txt.
Затем уже можно полученные ип адреса втыкать в правила фаервола.

Отправлено спустя 3 минуты 8 секунд:
З.ы. Скрипт выводит только А записи.

Отправлено спустя 1 час 47 минут 2 секунды:
Вот накатал тут тестовый скрипт для ограничени скорости:

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

#!/bin/sh

fw="/sbin/ipfw -q "

net="192.168.23.0/24"

$fw flush
$fw queue flush
$fw pipe flush

$fw pipe 1 config bw 1024Kbit/s queue 20
$fw queue 1 config pipe 1 weight 50  mask dst-ip 0xffffffff
$fw queue 11 config pipe 1 weight 50 mask src-ip 0xffffffff

$fw add queue 1 ip from any to $net
$fw add queue 11 ip from $net to any
Поясняю, что тут написано:

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

$fw pipe 1 config bw 1024Kbit/s queue 20
говорит нам о том, что создается труба1(pipe) с ограничением скорости в 1Мбит в которой в очередь может быть поставлено 20 пакетов.

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

$fw queue 1 config pipe 1 weight 50  mask dst-ip 0xffffffff
говорит о том, что здесь создается очередь, которую мы пихаем в трубу1 и устанавливаем вес в 50 (вес может быть от 0 до 100, чем больше вес, тем больше приоритет). Также говорим, чтобы для каждого dst-ip создавалась своя очередь с такими же параметрами, как у этой.

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

$fw add queue 1 ip from any to $net
тут собственно говорим фаеру использовать очередь, которую мы создали для всего что обращсается к нашей сети.

Отправлено спустя 1 час 11 минут 20 секунд:
ADRE, а не подскажешь, кстати, что можно почитать по теме ipfw advanced documentation? В хендбуке как то слишком мало описано. Ни принципа работы, ни вещей типа таблиц, пайпов и того же шедулера...

Аватара пользователя
ADRE
майор
Сообщения: 2645
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Нужна помощь в ограничении скорости

Непрочитанное сообщение ADRE » 2015-03-13 8:16:04

так-то читать нечего, в мане основное есть. Остальное стандартное, про типы очередей можно почитать, они решают и соответственно по разделению по src и dst, но там просто всё, по маскам. Были статьи где-то по работе с queue, на опеннете чтоли и бсдпоратале. А так надо смотреть по целям работы, что необходимо и оттуда отталкиваться. в форуме тут же есть тоже интересные решения.


https://www.freebsd.org/doc/ru/books/ha ... -ipfw.html - =)))

Отправлено спустя 9 минут 39 секунд:
http://info.iet.unipi.it/~luigi/papers/20120309-qfq.pdf

Отправлено спустя 22 секунды:
http://info.iet.unipi.it/~luigi/qfq/
//del

logout_90
мл. сержант
Сообщения: 72
Зарегистрирован: 2014-01-27 5:36:26

Нужна помощь в ограничении скорости

Непрочитанное сообщение logout_90 » 2015-03-13 9:27:38

ADRE писал(а):так-то читать нечего, в мане основное есть. Остальное стандартное, про типы очередей можно почитать, они решают и соответственно по разделению по src и dst, но там просто всё, по маскам. Были статьи где-то по работе с queue, на опеннете чтоли и бсдпоратале. А так надо смотреть по целям работы, что необходимо и оттуда отталкиваться. в форуме тут же есть тоже интересные решения.


https://www.freebsd.org/doc/ru/books/ha ... -ipfw.html - =)))

Отправлено спустя 9 минут 39 секунд:
http://info.iet.unipi.it/~luigi/papers/20120309-qfq.pdf

Отправлено спустя 22 секунды:
http://info.iet.unipi.it/~luigi/qfq/
:-D Первая ссыль откровенно улыбнула, а вот вторая это достаточно серьезный документ, до которого я пока еще не дорос :oops:
Про ман спасибо, я про него подумал вобще в самую последнюю очередь! :-D открыл, немного офигел от количества инфы. Поскольку на инглише немного неудобно воспринимать инфу, засел за перевод.