Linux и серверы

Шейпер трафика: режем скорость.

Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.

LINUX - Жизнь в консоли ЕСТЬ!!!
вконтакте
твиттер
фэйсбук
Главное меню
Основные команды линукс
Сеть
Текстовые редакторы
Системные утилиты
Мультимедиа
CD, DVD, HDD, USB-Flash
Графика
Игры
Юмор о Linux
Заметки о разном...
Полезные ссылки
Коротко о себе...
Для возможности комментирования статей необходима авторизация:
Логин
Пароль
Запомнить меня
Забыли пароль?
Забыли логин?
Регистрация
Последние статьи
TOR - обеспечиваем анонимность в сети
Консольная игра Pac-Man
Monit: автоматический перезапуск сервера 1С при падении
Установка нового ядра linux 3.3 в Ubuntu
Bastet - консольный tetris
Слушаем музыку онлайн с сайта vk.com ( vkontakte.ru ) из консоли
Просмотр конфигурационных файлов без комментариев и пустых строк
Инкрементный бэкап расшаренного каталога.
HTOP - монитор процессов.
SMART. Смотрим состояние жесткого диска.
Счетчики
20.03.2011 19:23
Шейпер трафика: режем скорость.
htb.init - это скрипт, который с помощью утилит ip, tc настраивает пропускную способность канала.
Адрес проекта HTB.init
http://sourceforge.net/projects/htbinit/
Немного теории:
Шейпер может ограничивать только ИСХОДЯЩИЙ трафик, распределяя его по разным очередям.
Пакеты, не помещающиеся в очередь, отбрасываются. Данные из очереди выдаются на сетевой интерфейс и далее к клиенту.
Каждый конфигурационный файл описывает очередь, это заложено в самом названии файла, который имеет формат:
$HTB_PATH/<ifname>-<clsid>(:<clsid>).<description>
или если "по-русски":
$HTB_PATH/<Имя интерфейса>-<Номер класса>(:<Номер дочернего класса>).<Комментарий>
clsid
- задается цифровыми значениями от 0x2 до 0xFFFF (записывается без приставки 0x)
Сам интерфейс описывается файлом только с именем ifname. Например:
eth0
имеет идентификатор класса clsid=0.
eth0-2
- основной (корневой) класс с clsid=2
eth0-2:3
- класс очереди clsid=3, унаследует ограничения от родительского clsid=2
eth0-2:3:4
- класс очередь clsid=4, унаследует ограничения от родительского clsid=3 и 2, т.е. накладываются еще более жесткие ограничения.
Параметры
DEFAULT=30
: указывает номер класса, куда попадает трафик не попавший ни под одно правило.
R2Q=10
: точность шейпера.
RATE=5Mbit
: выделенная (гарантированная) пропускная способность очереди, задается в Kbit, Mbit или bps (bytes per second)
CEIL=6MBit
: максимальная пропускная способность очереди. если не указывать, то по умолчанию CEIL=RATE
BURST=<bytes>
: количество байт без ограничения скорости
PRIO=<number>
: приоритет трафика очереди к другим очередям в классе. Чем меньше число, тем выше приоритет. По умолчанию 0
LEAF=<параметр>
правило распределения внутри самой очереди. default "none". LEAF=sfq - равномерное распределение между участниками очереди.
RULE=
: правило, определяющее трафик, который должен проходить через данную очередь. В одном файле могут присутствовать сразу несколько правил.
RULE=[[source_addr][:port[/mask]],][destination_addr][:port[/mask]]
Если трафик попадает по условиям в очередь -2:10 (например где правило задано по маске), то дальше он уже не будет проверять условия в -2:20 (где допустим будет описано правило с конкретно этим ip), -2:30
MARK
=<метка> : трафик имеющий метку. Например если надо ограничить исходящий трафик от клиента в лок. сети, находящегося за NATом, RULE не прокатит, нужно использовать MARK, и метить нужные пакеты в фаерволе примерно так:
iptables -t mangle -A PREROUTING -s 192.168.0.1 -j MARK –set-mark 101
TIME
: временные параметры. TIME=18:00-06:00;256Kbit
Для корректной работы скрипта, сумма всех RATE дочерних классов (очередей) не должна превышать RATE корневого класса, а значение CEIL в каждой очереди не должно превышать значение в корневом классе.
Установка htb.init
Качаем скрипт htb.init который будет генерировать вам правила шейпера согласно созданным вами файлам конфигурации. Сайт проекта
http://sourceforge.net/projects/htbinit/
Переименуем покороче скачанный скрипт, назовем например просто htb и поместим в директорию
/usr/sbin
. Разрешим выполнение этого скрипта:
chmod +x /usr/sbin/htb
По желанию можно добавить скрипт в автозагрузку системы, например добавив в
rc.local
строку
/usr/sbin/htb start
Теперь надо создать директории и файлы необходимые для правильной работы скрипта.
mkdir /etc/sysconfig
mkdir /etc/sysconfig/htb
touch /var/cache/htb.init
Теперь можно приступать к написанию конфигурационных файлов нашего шейпера.
cd /etc/sysconfig/htb
На сервере имеется локалка на интерфейсе eth0, интернет на eth1. Используется NAT. Скорость интернет-канала 30Мбит\с. Необходимо обеспечить гарантированную скорость доступа по rdp (на сервере проброшены порты к некоторым компам) и ограничить скорость интернет для некоторых компьютеров в сети, при этом не ограничивая скорость в локалке (на сервере еще файлопомойка).
Создаем конфигурационные файлы:
Для входящего трафика:
sudo touch eth0
# Описываем интерфейс eth0
sudo nano eth0
DEFAULT=10
# метка на файл, создаваемый ниже, eth0-2:10.dfl
R2Q=100
# точность ограничений
sudo touch eth0-2.root
# корневой класс
sudo nano eth0-2.root
RATE=100Mbit
# гарантированная пропускная способность
CEIL=100Mbit
# максимальная пропускная способность
BURST=15k
# первые 15k без ограничений
Позвонить +7 (343) 382-33-16