марта 30 2008 05:39 пп

Настройка ограничения и распределения канала (HTB Shaper)

Если у Вас есть Ваша собственная домашняя сеть с двумя или более компьютерами и она подключена к интернету, вы точно знаете о тех проблемах с одновременным доступом к сети, которые практически неизбежны при таком подключении. Самой большой и раздражающей проблемой является разделение ширины канала между всеми участниками сети: когда вы пытаетесь работать через ssh с удалённым сервером, а в этот момент ваша wife/брат/друг решает поглядеть новый и очень классный видео клип с Google Video или YouTube, Ваше соединение замирает и вы можете забыть о комфортабельной работе . В этой маленькой статье я дам вам простое решение этой проблемы, которое позволит вам делать все, что угодно не думая о проблемах разделения трафика!

Для начала замечу, что Ваша сеть должна быть подключена к Internet при помощи Linux сервера. Если Вы подключены через какой-то тупой аппаратный маршрутизатор, то Вам сильно не повезло и вы не сможете воспользоваться приведенным примером.

CBQ и HTB — представляют собой систему ограничения трафика по скорости. Это наиболее распространённые варианты шейперов.
HTB — более точнее ограничивает скорость и удобней настраивается.

Шейпер работает так: все ИСХОДЯЩИЕ пакеты, т.е. предназначенные для выдачи на любой интерфейс вместо того, чтобы быть отправляться напрямую на интерфейс ставятся в разные очереди. Длина каждой очереди настраивается. Настраиваются также: скорость выдачи данных из очереди (это и есть собственно лимит), длина очереди (размер в байтах), размер пакета, выходящего из очереди (может не совпадать с длиной поступающих пакетов) и многое другое. Пакеты, не помещающиеся в очередь, сбрасываются. Данные из очереди выдаются на интерфейс и далее — к клиенту. Вот как раз каждый файл конфигурации и представляет собой описание одной очереди.

Далее приведен пример настройки шейпера с использованием скрипта htb.init, на сервере с дистрибутивом Ubuntu, с каналом в интернет 6Mbit/sec in/out и локальной сетью 100Mbit/sec in/out,
с 2мя интерфейсами eth0 (интернет) и eth1 (локальная сеть), а так же на сервере используется NAT реализованный с помощью iptables. Имеется 3 компьютера в локальной сети которые получают доступ в интернет и другую локальную сеть через этот сервер.

Для начала скачайте сам скрипт htb.init который будет генерировать вам правила шейпера согласно созданным вами файлам конфигурации.
Сайт проекта http://sourceforge.net/projects/htbinit/
Затем назовем скачанный скрипт htb и поместим в директорию /usr/sbin, присвоим аттрибуты для запуска командой chmod +x /usr/sbin/htb.
По желанию можно добавить скрипт в автозагрузку системы, сделать это можно следующими командами:
Код:


ln -sf /usr/sbin/htb /etc/init.d/htb
update-rc.d htb start 20 0 1 2 3 4 5 .

Теперь надо создать директории и файлы необходимые для правильной работы скрипта.
Код:


mkdir /etc/sysconfig
mkdir /etc/sysconfig/htb
touch /var/cache/htb.init

Теперь можно приступать к написанию конфигурационных файлов нашего шейпера.
Создадим основные файлы для интерфейса eth0
Код:


cd /etc/sysconfig/htb
touch eth0
vim eth0

Впишите в файл следующие строки:
Код:


DEFAULT=0
R2Q=100

Этот файл указывает номер класса в который попадет весь не классифицированный трафик и точность шейпера, чем меньше значение R2Q тем меньше погрешности в плюс или минус по скорости, в Kbit/sec.

Создадим следующий файл
Код:


touch eth0-2.root
vim eth0-2.root

Впишите в файл следующее:
Код:


RATE=100Mbit
CEIL=100Mbit

Этот файл корневого класса для интерфейса, в нем содержится макисмально возможная скорость, из которого будут брать ресурсы дочерние классы.

Помните, что надо располагать файлы классов по порядку от большей скорости к меньшей во избежание проблем. Классы распределяются по номерам, и чем выше скорость класса тем меньше должен быть его номер.

Далее создадим файлы для пользователей которые выходят в интернет через наш сервер, и имеют разную скорость доступа. Назовем пользователей vasya, petya, dima и дадим пользователю vasya скорость доступа 1600Kbit/sec in/out, пользователю petya 800Kbit/sec in/out и пользователю dima 256Kbit/sec in/out. Так же на сервере стоит фтп, и надо разрешить пользователям качать с него со скоростью выше чем скорость доступа к интернету. Так же при использовании NAT необходимо использовать iptables для маркировки пакетов, иначе шейпер будет ограничивать только скорость закачки пользователей.
Адресация нашей локальной сети у нас будет 192.168.0.0/22
Адресация локальной сети за интерфейсом eth0 у нас 10.0.0.0/8
Адрес сервера 192.168.0.1 и далее по порядку адреса клиентов.

Создадим файл eth0-2:05.default
Код:


touch eth0-2:05.default
vim eth0-2:05.default

Впишите в файл следующее:
Код:


RATE=99Mbit
CEIL=99Mbit
LEAF=sfq

Этот файл является классом для всего трафика который не подходит под другие классы.

Далее следующий файл
Код:


touch eth0-2:06.lanload
vim eth0-2:06.lanload

Впишем в файл
Код:


RATE=50Mbit
CEIL=50Mbit
LEAF=sfq
PRIO=99
RULE=10.0.0.0/8,10.20.30.40/22

Этот файл ограничивает скорость закачки для клиентов локальной сети которая находится за интерфейсом eth0 и имеет адресацию 10.0.0.0/8, а сам интерфейс eth0 имеет адрес 10.20.30.40

Теперь файлы для наших трех компьютеров
Код:


touch eth0-2:07.vasya
vim eth0-2:07.vasya

Впишите в файл
Код:


BURST=50Kb
RATE=1600Kbit
CEIL=1600Kbit
LEAF=sfq
PRIO=1
MARK=102

Этот файл отвечает за ограничение исходящей скорости доступа в интернет для абонента vasya,
но для корректной работы надо добавить правила маркировки пакетов от этого пользователя в iptables IP адрес у пользователя vasya 192.168.0.2, создадим для него правила фаервола.
Код:


iptables -t mangle -A PREROUTING -s 192.168.0.2 -j MARK --set-mark 102
iptables -t mangle -A PREROUTING -s 192.168.0.2 -j RETURN

Если на вашем сервере на котором будет работать шейпер не используется NAT вы можете не использовать маркировку пакетов и просто заменить параметр MARK=102 на RULE=192.168.0.2/22.
На этом с пользователем vasya Закончим и перейдем к следующему.

Создадим файл eth0-2:08.petya
Код:


touch eth0-2:08.petya
vim eth0-2:08.petya

Впишите в файл
Код:


BURST=50Kb
RATE=800Kbit
CEIL=800Kbit
LEAF=sfq
PRIO=1
MARK=103

Этот файл является классом для пользователя petya, не забудьте так же создать правила фаервола для маркировки пакетов.
Код:


iptables -t mangle -A PREROUTING -s 192.168.0.3 -j MARK --set-mark 103
iptables -t mangle -A PREROUTING -s 192.168.0.3 -j RETURN

Следующий пользователь dima
Код:


touch eth0-2:09.dima
vim eth0-2:09.dima

Впишите в файл
Код:


BURST=50Kb
RATE=256Kbit
CEIL=256Kbit
LEAF=sfq
PRIO=1
MARK=104

Этот файл будет ограничивать скорость интернета пользователю dima, не забываем про фаервол
Код:


iptables -t mangle -A PREROUTING -s 192.168.0.4 -j MARK --set-mark 104
iptables -t mangle -A PREROUTING -s 192.168.0.4 -j RETURN

На этом настройки классов для интерфейса eth0 закончены, перейдем к интерфейсу eth1.

Создадим файлы конфигурации для интерфейса eth1
Так как NAT на интерфейсе eth1 у нас не используется то маркировать пакеты не надо, просто настроим шейпер на работу с адресами.
Создайте файл eth1 с содержимым
Код:


DEFAULT=0
R2Q=100

Создайте файл eth1-2.root с содержимым
Код:


RATE=100Mbit
CEIL=100Mbit

Создайте файл eth1-2:05.default с содержимым
Код:


RATE=99Mbit
CEIL=99Mbit
LEAF=sfq

Создайте файл eth1-2:06.lanload с содержимым
Код:


RATE=50Mbit
CEIL=50Mbit
LEAF=sfq
PRIO=99
RULE=192.168.0.0/22,192.168.0.1/22

Создайте файл eth1-2:07.vasya с содержимым
Код:


BURST=50Kb
RATE=1600Kbit
CEIL=1600Kbit
LEAF=sfq
PRIO=1
RULE=192.168.0.2/22

Создайте файл eth1-2:08.petya с содержимым
Код:


BURST=50Kb
RATE=800Kbit
CEIL=800Kbit
LEAF=sfq
PRIO=1
RULE=192.168.0.3/22

Создайте файл eth1-2:09.dima с содержимым
Код:


BURST=50Kb
RATE=256Kbit
CEIL=256Kbit
LEAF=sfq
PRIO=1
RULE=192.168.0.4/22

Вот собственно и все, прверьте что все созданные вами файлы находятся в каталоге /etc/sysconfig/htb и можно тестово прогнать скрипт командой
Код:


htb compile

В ответ на которую скрипт сгенерирует список правил шейпера согласно файлам конфигурации.

Далее можно применить настройки командой
Код:


htb start

Просто запустив команду htb вы увидите список команд скрипта, так же немного полезной информации содержится в самом скрипте, вы можете открыть его в текстовом редакторе и прочитать.
Так же советую вам ознакомится с устройством шейпера HTB по адресу http://remizov.pp.ru

Надеюсь эта статья была полезна для вас =) Удачи в настройке.


Popularity: 36%





55 Комментариев »


55 Responses to “Настройка ограничения и распределения канала (HTB Shaper)”

  1. sanych on 30 Мар 2008 at 18:10 #

    может надо было просто настроить shorewall ;)

  2. Stepanoff on 30 Мар 2008 at 22:49 #

    Насколько я помню, shorewall это фаервол, ну умеет он траффик фильтровать, но он же не для этого сделан. Никогда им не пользовался, меня полностью устраивают iptables. Настроек по фильтрации и тд в нем мало. Имхо надо использовать то что для этого сделано, а не гвозди микроскопом забивать :) Да и тут пример на три пользователя, а вот на 3000 вы тоже shorewall предложите?

  3. abo on 01 Апр 2008 at 15:42 #

    Я поздравляю вас с 1 апреля! Почему именно вас — можно узнать в моём блоге.

  4. sanych on 02 Апр 2008 at 09:23 #

    1) шоревол основан на iptables
    2) шейпить он умеет
    3) статья то не про 3000 пользователей правда ;)
    линки в тему:
    http://www.shorewall.net/3.0/traffic_shaping_ru.html
    http://www.shorewall.net/standalone_ru.html
    http://www.uptimebox.ru/2007/10/traffic-shapingcontrol-shorewall.html

  5. AlCher on 07 Апр 2008 at 16:21 #

    1) Для 3000 пользователей не используются «роутеры», на основе РСков. для этого есть более серъезное оборудование.
    2) Есть категория аппаратных роутеров. в ценовом диапазоне от 4-5т.р., которая имеет не меньшие возможности для настройки, при меньших затратах.
    3) Ваше предложение действительно подходит для маааленькой сети, но при количестве пользователей от 10-ка и более требует слишком много трудозатрат.
    4) Iptables тоже файрволл. ничем не лучше и не хуже shorewall.
    Идеология разная.

  6. dimka on 09 Апр 2008 at 09:49 #

    используюьт писюки и для более крупных сетей, не то что 3к узеров

  7. kolya on 15 Июл 2008 at 14:26 #

    «Так же на сервере стоит фтп, и надо разрешить пользователям качать с него со скоростью выше чем скорость доступа к интернету»
    — вот это не срабатывает. Что-то я делаю не так, но не знаю что… У меня не используется НАТ, адреса и конфиги приведены ниже.
    eth0 — 194.*.*.83
    eth1 — 10.10.0.1
    ftp — 194.*.*.87
    user — 10.10.0.2
    gateway — 194.*.*.81

    ——————
    ###eth0
    DEFAULT=FFFF
    R2Q=4

    ——————
    ###eth0-2.root
    RATE=100Mbit

    ——————
    ###eth0-2:10.mynet
    PRIO=1
    RATE=10Mbit
    RULE=194.*.*.80/28,194.*.*.83,

    ——————
    ###eth0-2:11.user1
    RATE=512Kbit
    LEAF=sfq
    PRIO=5
    RULE=10.10.0.2,

    ——————
    ###eth1
    DEFAULT=FFFF
    R2Q=4

    ——————
    ###eth1-2.root
    RATE=100Mbit

    ——————
    ###eth1-2:10.mynet
    PRIO=1
    RATE=10Mbit
    RULE=194.*.*.80/28,194.*.*.83

    ——————
    ###eth1-2:11.user1
    RATE=512Kbit
    LEAF=sfq
    PRIO=5
    RULE=10.10.0.2

    При таких конфигах юзер1 качает с фтп(194.*.*.87) со скоростью 512K, хотя должен со скоростью 10M. =( Помогите пожалуйста..

  8. Stepanoff on 15 Июл 2008 at 19:38 #

    создайте файлик еще специально для фтп и все заработает…

  9. kolya on 17 Июл 2008 at 05:09 #

    ### eth0-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.83,
    —————————
    ### eth1-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.83

    Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…

  10. kolya on 17 Июл 2008 at 05:10 #

    ### eth0-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.87,
    —————————
    ### eth1-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.87

    Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…

  11. Stepanoff on 17 Июл 2008 at 12:21 #

    в самом скрипте htb.init приведены примеры как урезать например весь WWW трафик, и в гугле куча примеров :)

  12. mirage on 14 Ноя 2008 at 12:55 #

    Здравствуйте, установил все и прописал как написанно в доке. Но когда пытаюсь запустить его выдает сообщение: «**HTB: iproute2 utilities not installed or executable!»
    Хелп ми.

  13. Stepanoff on 14 Ноя 2008 at 12:56 #

    У Вас видимо не установлен пакет iproute

  14. mirage on 14 Ноя 2008 at 12:57 #

    Забыл добавить. Стоит SUSE 11.0, пакет «iproute2-2.6.23-75.1″ — установлен

  15. Stepanoff on 14 Ноя 2008 at 13:02 #

    Проверьте, соответствуют ли пути к файлам в скрипте реальности. Скрипт используетс tc и еще что то, не помню :)

  16. mirage on 14 Ноя 2008 at 16:53 #

    Я все поправил, теперь запускаеться, спасибо. Вот только ошибки следующие выдает:

    «suse:/etc/sysconfig/htb # htb start
    find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

    find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.»

  17. Stepanoff on 14 Ноя 2008 at 17:02 #

    На это можно не обращать внимания, это баг в программе find, ничего страшного в нем нет.

  18. mirage on 14 Ноя 2008 at 18:16 #

    Всё вроде заработало, спасибо ещё раз. А при помощи него можно резать по объёму файла? (типа больше 30 МБ файл, скачать нельзя)

  19. Stepanoff on 14 Ноя 2008 at 22:01 #

    Нет, это умеет squid

  20. mirage on 15 Ноя 2008 at 06:16 #

    но тогда надо настраивать прокси на клиентах, а мне бы желательно на клиентах ничего не настраивать, а это только NAT.

  21. Stepanoff on 15 Ноя 2008 at 14:49 #

    Никто вам не мешает настроить прозрачный прокси, но это не относится к данной теме.

  22. pechkin on 15 Мар 2009 at 08:42 #

    А что делать если вместо eth0 интернтом являеться ppp0??
    Нужно ограничеть трафик идущий от ppp0, а ресурсы городской сети eth0 оставить без ограничений.
    Я пробывал не выходит… вернее выходит — но режиться всё.. и локалка и инет…
    вот мои конфиги:

    «ppp0″
    DEFAULT=0
    R2Q=10

    # cat ppp0-2:05.default
    RATE=100Mbit
    CEIL=100Mbit
    LEAF=sfq

    # cat ppp0-2:09.vitya
    RATE=5Мbit
    CEIL=5Мbit
    LEAF=sfq
    PRIO=1
    MARK=105

    # cat eth1-2:09.vitya
    RATE=5Mbit
    CEIL=5Mbit
    LEAF=sfq
    PRIO=1
    RULE=169.254.0.5

    Я здесь привёл наиболее значимые по моему мнению конфиги, если нужно выложить всё — пришите воложу…

    и Iptables
    *mangle :P REROUTING ACCEPT [364003:218603990]
    :INPUT ACCEPT [92330:24844565]
    :FORWARD ACCEPT [270980:193686155]
    :OUTPUT ACCEPT [191150:179553216] :P OSTROUTING ACCEPT [462130:373239371]
    -A PREROUTING -s 169.254.0.5 -j MARK —set-mark 0×69
    -A PREROUTING -s 169.254.0.5 -j RETURN
    COMMIT

    Затем NAT
    *nat :P REROUTING ACCEPT [5005:381591] :P OSTROUTING ACCEPT [555:41386]
    :OUTPUT ACCEPT [25:1501]
    -A POSTROUTING -s 169.254.0.5 -j MASQUERADE

  23. Stepanoff on 15 Мар 2009 at 13:01 #

    Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.

  24. pechkin on 17 Мар 2009 at 02:06 #

    [quote]Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.[/quote]
    тоесть вы мне предлагаете сидеть на стремё всё время??

  25. Stepanoff on 17 Мар 2009 at 21:11 #

    С таким подходом вам не юниксы, а венду надо. Напишите скрипт который сделает это сам.

  26. ssa on 08 Апр 2009 at 23:31 #

    Вопрос к автору: дом сетка из 3 компов через «тупой аппаратный маршрутизатор»), а шейпер хоцца, проблема с забивием канала как и у всех, что можете посоветовать? Я наивно полагал, что если прозрачным squid сделать, скажем на однм из компов, то весь траффик через него буде перенаправляться на остальные и обратно и мож быть тогда удасться по вашему примеру настроить шейпер.

  27. Stepanoff on 08 Апр 2009 at 23:44 #

    Вместо тупого маршрутизатора поставить комп, можно самый слабый, на нем поднять все необходимое (DHCP, SHAPER, SAMBA)
    Ну или если на машинках стоит линукс то можно на приложения индивидуально резать скорость при помощи софтинки Trickle, ссылка на сабж http://linux.xlibs.net/2008/03/21/trickle-traffic-limiter/

  28. odybahchik on 24 Янв 2010 at 19:01 #

    Привет не могу разобратся в чём дело может поможеш???
    Значит есть у меня eth0 (122.2.0.6) eth1 (172.24.1.81) eth2 (192.168.16.47)
    нужно раздать инет на eth2
    настроил iptables чтобы пропускал тока те адреса которые мне нужно и выпустил их в нет
    теперь осталось токо настроить скорость для клиентов
    канал 8мегабит использую htb.init примеры моих настроек прилагаются
    в итоге чёто он не правильно делит скоростя
    Прошу помощи
    Вот мои настройки http://serfingwmz.ucoz.ru/htb_primer.tar.gz

  29. Stepanoff on 24 Янв 2010 at 19:03 #

    Файлов много, читать лень, пиши сюда, что не так.

  30. odybahchik on 24 Янв 2010 at 20:22 #

    вообщем скорость у клиента на 2mbit а 1 mbit а у другого вместо 2mbit 512kbit а у третьего вместо 512kbit 1.5mbit

  31. Stepanoff on 25 Янв 2010 at 08:37 #

    Ну а более подробно, и со знаками препинания. И правила iptables сюда же пишите, которые для ограничения скорости используются.

  32. odybahchik on 25 Янв 2010 at 09:01 #

    IPTABLES имеет вот такой вид:
    #!/bin/bash
    PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
    export PATH
    LANG=ru_RU.UTF8
    export LANG

    IPTABLES=/sbin/iptables

    $IPTABLES -F
    $IPTABLES -F INPUT
    $IPTABLES -F OUTPUT
    $IPTABLES -F FORWARD
    $IPTABLES -F -t nat

    $IPTABLES -P INPUT DROP
    $IPTABLES -P OUTPUT DROP
    $IPTABLES -P FORWARD DROP

    # Bad TCP packets — REJECT
    $IPTABLES -X bad_tcp_packets
    $IPTABLES -N bad_tcp_packets

    $IPTABLES -A bad_tcp_packets -p tcp —tcp-flags SYN,ACK SYN,ACK -m state —state NEW -j REJECT —reject-with tcp-reset
    ###$IPTABLES -A bad_tcp_packets -p tcp ! —syn -m state —state NEW -j LOG —log-prefix «New not syn:»
    $IPTABLES -A bad_tcp_packets -p tcp ! —syn -m state —state NEW -j DROP

    $IPTABLES -A INPUT -p tcp -j bad_tcp_packets
    $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
    $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

    # netbios
    $IPTABLES -X netbios_packets
    $IPTABLES -N netbios_packets
    #
    $IPTABLES -A netbios_packets -p tcp -m multiport —dports 135,137,138,139,445 -j DROP
    $IPTABLES -A netbios_packets -p tcp -m multiport —sports 135,137,138,139,445 -j DROP
    $IPTABLES -A netbios_packets -p udp -m multiport —dports 135,137,138,139,445 -j DROP
    $IPTABLES -A netbios_packets -p udp -m multiport —sports 135,137,138,139,445 -j DROP
    #
    $IPTABLES -A INPUT -j netbios_packets
    $IPTABLES -A FORWARD -j netbios_packets
    #
    $IPTABLES -A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -A OUTPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -m state —state RELATED,ESTABLISHED -j ACCEPT
    #
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A OUTPUT -o lo -j ACCEPT
    #
    $IPTABLES -A OUTPUT -o eth1 -j ACCEPT
    #
    #Разрешаем на 2 сетевухе всё
    $IPTABLES -A INPUT -i eth0 -j ACCEPT
    $IPTABLES -A OUTPUT -o eth0 -j ACCEPT
    #
    #Разрешаем подключатся подсети на eth0
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 172.24.1.0/24 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 172.24.1.0/24 -j ACCEPT
    $IPTABLES -A FORWARD -d 172.24.1.0/24 -j ACCEPT
    $IPTABLES -A OUTPUT -s 172.24.1.0/24 -j ACCEPT
    #
    #
    #Разрешаем админу порты FTP и SSH из фирмы
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.30.30 —dport 20:22 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.16.126 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.68 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.32 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.182 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP

    ##Разрешаем заходить кому-то еще
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.16.126 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.16.126 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.16.126 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.16.126 -j ACCEPT
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.68 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.20.68 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.20.68 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.20.68 -j ACCEPT
    #
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.32 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.20.32 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.20.32 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.20.32 -j ACCEPT
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.30.30 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.30.30 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.30.30 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.30.30 -j ACCEPT
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.182 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.20.182 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.20.182 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.20.182 -j ACCEPT
    #
    #Разрешаем ICMP
    $IPTABLES -A INPUT -p icmp -m icmp —icmp-type 255 -j ACCEPT
    $IPTABLES -A OUTPUT -p icmp -m icmp —icmp-type 255 -j ACCEPT
    $IPTABLES -A FORWARD -p icmp -m icmp —icmp-type 255 -j ACCEPT
    # Разрешаем выход в инет для остальных (если инет на eth1)
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.16.126/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.30.30/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.20.32/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.20.182/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.20.68/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 172.24.1.0/24 ! -d 172.24.1.0/24 -j SNAT —to-source 172.24.1.81
    #$IPTABLES -t nat -A POSTROUTING -s XXX.XXX.XXX.XXX -j LOG —log-prefix «POSTROUTING : »

    echo «1″ > /proc/sys/net/ipv4/ip_forward

    Теперь пример клиента htb:
    eth1-2:07.devils —>
    RATE=2500Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.16.126/32
    этому клиенту дает меньше 2mbit

    eth1-2:08.andrey —>
    RATE=2000Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.20.182/32
    этому клиенту дает меньше 1mbit

    eth1-2:09.vasya —>
    RATE=2000Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.20.32/32
    этому дает тоже меньше 1mbit

    когда выключаю htb.init stop, тогда скорость делится поровну на всех,канал 8mbit

  33. Stepanoff on 25 Янв 2010 at 09:47 #

    У вас нет маркировки пакетов, потому скорость режет только на выход. Проверяйте корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле, а затем ее надо делить, если суммарно раздать скорости в файлах клиентов более чем скорость в корневом файле то работать не будет.

  34. odybahchik on 25 Янв 2010 at 14:24 #

    можете прислать пример «корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле» а на счёт маркировки я понял

  35. Stepanoff on 25 Янв 2010 at 15:15 #

    Статью то прочитали? Или только скопировали что то куда то, и не завелось? Все описано в статье, у людей все работает, а вам примеры выслать надо которые приведены в статье. Может хотите что бы я за вас настроил все?

  36. odybahchik on 25 Янв 2010 at 17:43 #

    значит я промаркировал в iptables

    #маркирую devilsa №102
    $iptables -t mangle -A PREROUTING -s 192.168.16.126 -j MARK —set-mark 102
    $iptables -t mangle -A PREROUTING -s 192.168.16.126 -j RETURN
    #маркирую chirika №103
    $iptables -t mangle -A PREROUTING -s 192.168.20.32 -j MARK —set-mark 103
    $iptables -t mangle -A PREROUTING -s 192.168.20.32 -j RETURN
    #маркирую telefoni №104
    $iptables -t mangle -A PREROUTING -s 192.168.20.182 -j MARK —set-mark 104
    $iptables -t mangle -A PREROUTING -s 192.168.20.182 -j RETURN
    #маркирую odybah №105
    $iptables -t mangle -A PREROUTING -s 192.168.30.30 -j MARK —set-mark 105
    $iptables -t mangle -A PREROUTING -s 192.168.30.30 -j RETURN
    #маркирую capkuvatiy №106
    $iptables -t mangle -A PREROUTING -s 192.168.20.68 -j MARK —set-mark 106
    $iptables -t mangle -A PREROUTING -s 192.168.20.68 -j RETURN

    и в файлах подабавлял MARK=102 и так далее
    запустил htb и он вообще перестал ограничивать скорость

  37. Stepanoff on 25 Янв 2010 at 17:48 #

    Внимательно перечитать статью столько раз, сколько надо для полного понимания что куда вписывать, а главное зачем.

  38. odybahchik on 25 Янв 2010 at 18:35 #

    я всё прочитал и всё понимаю что и зачем только где-то каряво написал.Сам не пойму что потому и пришёл сюда чтоб вы сказали «со стороны виднее»
    маркирую я правильно?

  39. Stepanoff on 25 Янв 2010 at 18:39 #

    Если бы все было понятно, то думаю не возниколо бы вопросов по настройке. Маркировка верно, а вот как в конфигах htb я не знаю. В статье описано подробно куда маркировка, куда без нее, и тд.

  40. odybahchik on 25 Янв 2010 at 19:00 #

    когда я запускаю свой iptables с этими маркировками мне пишет «./iptables.sh: line 72: -t: команда не найдена
    ./iptables.sh: line 73: -t: команда не найдена
    ./iptables.sh: line 75: -t: команда не найдена
    ./iptables.sh: line 76: -t: команда не найдена
    ./iptables.sh: line 78: -t: команда не найдена
    ./iptables.sh: line 79: -t: команда не найдена
    ./iptables.sh: line 81: -t: команда не найдена
    ./iptables.sh: line 82: -t: команда не найдена
    ./iptables.sh: line 84: -t: команда не найдена
    ./iptables.sh: line 85: -t: команда не найдена
    »
    когда убираю -t mangle тогда пишет «iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    »
    подскажи что не так и почему

  41. Stepanoff on 25 Янв 2010 at 23:40 #

    Правила не верно написаны. Почему не так? Наверное не читал мануалы, не по шейперу не по iptables. И я думаю что вам на форум с таким количеством вопросов надо обратиться, а не в комментарии писать, я подсказал уже не раз, толку особо не вижу. Если есть лишняя денюжка — могу настроить вам шейпинг.

  42. odybahchik on 26 Янв 2010 at 09:08 #

    сколько денег пишите обдумаю

  43. Stepanoff on 26 Янв 2010 at 09:34 #

    Напишите мне в ICQ, номер в разделе Контакты (http://sudouser.com/?page_id=2), или свяжитесь через форму которая находится там же, если не пользуетесь ICQ.

  44. inner on 03 Фев 2010 at 10:54 #

    канал инета 2 мбит, но его забивают юзеры качая траф.
    внтури же стоит asterisk и качество звука режется при подключении извне
    1 правило — 512кбит на ip 192.168.1.121 — asterisk
    2 — 1536кбит на 192.168.1.0\24 — для остальных
    затык в том что на линуксе почта и т.п, но вместо скорости гигабит для внутреннего пользователя идет подключение к ресурсу линукса на скорости 1536кбит.
    как ограничить канал для внешнего подключения, не трогая внутреннее?

  45. Stepanoff on 03 Фев 2010 at 11:28 #

    Создайте правило для внутренней сети, с номером файла меньшим, чем для внешней

  46. inner on 03 Фев 2010 at 16:00 #

    простите, не догоняю..
    сейчас так:

    inet-2:06.ats
    RATE=512Kbit
    CEIL=512Kbit
    LEAF=sfq
    PRIO=1
    MARK=101

    iptables -t mangle -A PREROUTING -s 192.168.1.121 -j MARK —set-mark 101
    iptables -t mangle -A PREROUTING -s 192.168.1.121 -j RETURN

    inet-2:07.all
    RATE=1536Kbit
    CEIL=1536Kbit
    LEAF=sfq
    PRIO=1
    MARK=102

    iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j MARK —set-mark 102
    iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j RETURN

    loca-2:06.ats
    RATE=512Kbit
    CEIL=512Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.1.121/32

    loca-2:07.all
    RATE=1534Kbit
    CEIL=1534Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.1.0/24

    ограничения отрабатывают.
    если убрать нижние два, то не отрабатывает.
    и правило для внутренней сети вроде есть..

  47. Stepanoff on 03 Фев 2010 at 16:36 #

    Правило для локальной сети создайте, в статье написано как, файл lanload.

  48. inner on 04 Фев 2010 at 16:30 #

    спасибо, за помощь. все ок.

    имеется ли возможность, наподобие реализованного в CBQ , заимствования у родительского класса неиспользуемой полосы пропускания?

  49. Stepanoff on 04 Фев 2010 at 16:42 #

    Тут ничего не подскажу, не смотрел в сторону CBQ.

  50. Petrovi4 on 18 Мар 2010 at 16:07 #

    При попытке добавить в автозагрузку системы (Ubuntu 9.10) вот такое:
    root@Server:~# update -rc.d htb start 20 0 1 2 3 4 5
    No command ‘update’ found, did you mean:
    Command ‘uupdate’ from package ‘devscripts’ (main)
    Command ‘lupdate’ from package ‘libqt4-dev’ (main)
    Command ‘lupdate’ from package ‘qt3-dev-tools’ (main)
    update: command not found
    и даже если так:
    root@Server:/etc/init.d# update -rc.d htb start 20 0 1 2 3 4 5
    No command ‘update’ found, did you mean:
    Command ‘uupdate’ from package ‘devscripts’ (main)
    Command ‘lupdate’ from package ‘libqt4-dev’ (main)
    Command ‘lupdate’ from package ‘qt3-dev-tools’ (main)
    update: command not found
    Как мне быть?
    З.Ы. Второй день как поставил эту ось

  51. Stepanoff on 18 Мар 2010 at 16:09 #

    При наборе команд использовать клавишу TAB. Команда update-rc.d.

  52. Petrovi4 on 02 Июн 2010 at 02:39 #

    Огромное спасибо.
    Вроде все получилось.
    Подскажите, пожалуйста, какие значения параметров(R2Q, BURST и т.д.) мне лучше использовать.
    Мои параметры:
    количество юзверей: 30
    прием: 20-21 Мбит
    отдача: 512-600 Кбит
    И подскажите от чего вы отталкиваетесь, подбирая значения.
    Заранее благодарю.

  53. Максим Степанов on 02 Июн 2010 at 10:13 #

    R2Q это точность работы шейпера, с ней можно поэкспериментировать. BURST это количество трафика которые юзер может скачать на максимальной скорости вашего канала, затем скорость урезается до отведенной ему, это создает впечатление что инет работает быстрее, например при открытии сайтов.

  54. asta on 24 Янв 2011 at 12:47 #

    Файл eth0-2:07.vasya и eth1-2:07.vasya , к примеру, что обозначает 2:07 — перечитал несколько раз ничего не понял. Если у меня 5 клиентов с ограничением 1024kbit/c для —————
    ###eth1-2:11.user1
    RATE=512Kbit
    LEAF=sfq
    PRIO=5
    RULE=10.10.0.2

    При таких конфигах юзер1 качает с фтп(194.*.*.87) со скоростью 512K, хотя должен со скоростью 10M. =( Помогите пожалуйста..

  55. Stepanoff on 15 Июл 2008 at 19:38 #

    создайте файлик еще специально для фтп и все заработает…

  56. kolya on 17 Июл 2008 at 05:09 #

    ### eth0-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.83,
    —————————
    ### eth1-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.83

    Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…

  57. kolya on 17 Июл 2008 at 05:10 #

    ### eth0-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.87,
    —————————
    ### eth1-2:11.ftp
    PRIO=1
    RATE=5Mbit
    RULE=194.*.*.87

    Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…

  58. Stepanoff on 17 Июл 2008 at 12:21 #

    в самом скрипте htb.init приведены примеры как урезать например весь WWW трафик, и в гугле куча примеров :)

  59. mirage on 14 Ноя 2008 at 12:55 #

    Здравствуйте, установил все и прописал как написанно в доке. Но когда пытаюсь запустить его выдает сообщение: «**HTB: iproute2 utilities not installed or executable!»
    Хелп ми.

  60. Stepanoff on 14 Ноя 2008 at 12:56 #

    У Вас видимо не установлен пакет iproute

  61. mirage on 14 Ноя 2008 at 12:57 #

    Забыл добавить. Стоит SUSE 11.0, пакет «iproute2-2.6.23-75.1″ — установлен

  62. Stepanoff on 14 Ноя 2008 at 13:02 #

    Проверьте, соответствуют ли пути к файлам в скрипте реальности. Скрипт используетс tc и еще что то, не помню :)

  63. mirage on 14 Ноя 2008 at 16:53 #

    Я все поправил, теперь запускаеться, спасибо. Вот только ошибки следующие выдает:

    «suse:/etc/sysconfig/htb # htb start
    find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

    find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.»

  64. Stepanoff on 14 Ноя 2008 at 17:02 #

    На это можно не обращать внимания, это баг в программе find, ничего страшного в нем нет.

  65. mirage on 14 Ноя 2008 at 18:16 #

    Всё вроде заработало, спасибо ещё раз. А при помощи него можно резать по объёму файла? (типа больше 30 МБ файл, скачать нельзя)

  66. Stepanoff on 14 Ноя 2008 at 22:01 #

    Нет, это умеет squid

  67. mirage on 15 Ноя 2008 at 06:16 #

    но тогда надо настраивать прокси на клиентах, а мне бы желательно на клиентах ничего не настраивать, а это только NAT.

  68. Stepanoff on 15 Ноя 2008 at 14:49 #

    Никто вам не мешает настроить прозрачный прокси, но это не относится к данной теме.

  69. pechkin on 15 Мар 2009 at 08:42 #

    А что делать если вместо eth0 интернтом являеться ppp0??
    Нужно ограничеть трафик идущий от ppp0, а ресурсы городской сети eth0 оставить без ограничений.
    Я пробывал не выходит… вернее выходит — но режиться всё.. и локалка и инет…
    вот мои конфиги:

    «ppp0″
    DEFAULT=0
    R2Q=10

    # cat ppp0-2:05.default
    RATE=100Mbit
    CEIL=100Mbit
    LEAF=sfq

    # cat ppp0-2:09.vitya
    RATE=5Мbit
    CEIL=5Мbit
    LEAF=sfq
    PRIO=1
    MARK=105

    # cat eth1-2:09.vitya
    RATE=5Mbit
    CEIL=5Mbit
    LEAF=sfq
    PRIO=1
    RULE=169.254.0.5

    Я здесь привёл наиболее значимые по моему мнению конфиги, если нужно выложить всё — пришите воложу…

    и Iptables
    *mangle :P REROUTING ACCEPT [364003:218603990]
    :INPUT ACCEPT [92330:24844565]
    :FORWARD ACCEPT [270980:193686155]
    :OUTPUT ACCEPT [191150:179553216] :P OSTROUTING ACCEPT [462130:373239371]
    -A PREROUTING -s 169.254.0.5 -j MARK —set-mark 0×69
    -A PREROUTING -s 169.254.0.5 -j RETURN
    COMMIT

    Затем NAT
    *nat :P REROUTING ACCEPT [5005:381591] :P OSTROUTING ACCEPT [555:41386]
    :OUTPUT ACCEPT [25:1501]
    -A POSTROUTING -s 169.254.0.5 -j MASQUERADE

  70. Stepanoff on 15 Мар 2009 at 13:01 #

    Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.

  71. pechkin on 17 Мар 2009 at 02:06 #

    [quote]Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.[/quote]
    тоесть вы мне предлагаете сидеть на стремё всё время??

  72. Stepanoff on 17 Мар 2009 at 21:11 #

    С таким подходом вам не юниксы, а венду надо. Напишите скрипт который сделает это сам.

  73. ssa on 08 Апр 2009 at 23:31 #

    Вопрос к автору: дом сетка из 3 компов через «тупой аппаратный маршрутизатор»), а шейпер хоцца, проблема с забивием канала как и у всех, что можете посоветовать? Я наивно полагал, что если прозрачным squid сделать, скажем на однм из компов, то весь траффик через него буде перенаправляться на остальные и обратно и мож быть тогда удасться по вашему примеру настроить шейпер.

  74. Stepanoff on 08 Апр 2009 at 23:44 #

    Вместо тупого маршрутизатора поставить комп, можно самый слабый, на нем поднять все необходимое (DHCP, SHAPER, SAMBA)
    Ну или если на машинках стоит линукс то можно на приложения индивидуально резать скорость при помощи софтинки Trickle, ссылка на сабж http://linux.xlibs.net/2008/03/21/trickle-traffic-limiter/

  75. odybahchik on 24 Янв 2010 at 19:01 #

    Привет не могу разобратся в чём дело может поможеш???
    Значит есть у меня eth0 (122.2.0.6) eth1 (172.24.1.81) eth2 (192.168.16.47)
    нужно раздать инет на eth2
    настроил iptables чтобы пропускал тока те адреса которые мне нужно и выпустил их в нет
    теперь осталось токо настроить скорость для клиентов
    канал 8мегабит использую htb.init примеры моих настроек прилагаются
    в итоге чёто он не правильно делит скоростя
    Прошу помощи
    Вот мои настройки http://serfingwmz.ucoz.ru/htb_primer.tar.gz

  76. Stepanoff on 24 Янв 2010 at 19:03 #

    Файлов много, читать лень, пиши сюда, что не так.

  77. odybahchik on 24 Янв 2010 at 20:22 #

    вообщем скорость у клиента на 2mbit а 1 mbit а у другого вместо 2mbit 512kbit а у третьего вместо 512kbit 1.5mbit

  78. Stepanoff on 25 Янв 2010 at 08:37 #

    Ну а более подробно, и со знаками препинания. И правила iptables сюда же пишите, которые для ограничения скорости используются.

  79. odybahchik on 25 Янв 2010 at 09:01 #

    IPTABLES имеет вот такой вид:
    #!/bin/bash
    PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
    export PATH
    LANG=ru_RU.UTF8
    export LANG

    IPTABLES=/sbin/iptables

    $IPTABLES -F
    $IPTABLES -F INPUT
    $IPTABLES -F OUTPUT
    $IPTABLES -F FORWARD
    $IPTABLES -F -t nat

    $IPTABLES -P INPUT DROP
    $IPTABLES -P OUTPUT DROP
    $IPTABLES -P FORWARD DROP

    # Bad TCP packets — REJECT
    $IPTABLES -X bad_tcp_packets
    $IPTABLES -N bad_tcp_packets

    $IPTABLES -A bad_tcp_packets -p tcp —tcp-flags SYN,ACK SYN,ACK -m state —state NEW -j REJECT —reject-with tcp-reset
    ###$IPTABLES -A bad_tcp_packets -p tcp ! —syn -m state —state NEW -j LOG —log-prefix «New not syn:»
    $IPTABLES -A bad_tcp_packets -p tcp ! —syn -m state —state NEW -j DROP

    $IPTABLES -A INPUT -p tcp -j bad_tcp_packets
    $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
    $IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

    # netbios
    $IPTABLES -X netbios_packets
    $IPTABLES -N netbios_packets
    #
    $IPTABLES -A netbios_packets -p tcp -m multiport —dports 135,137,138,139,445 -j DROP
    $IPTABLES -A netbios_packets -p tcp -m multiport —sports 135,137,138,139,445 -j DROP
    $IPTABLES -A netbios_packets -p udp -m multiport —dports 135,137,138,139,445 -j DROP
    $IPTABLES -A netbios_packets -p udp -m multiport —sports 135,137,138,139,445 -j DROP
    #
    $IPTABLES -A INPUT -j netbios_packets
    $IPTABLES -A FORWARD -j netbios_packets
    #
    $IPTABLES -A INPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -A OUTPUT -m state —state RELATED,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -m state —state RELATED,ESTABLISHED -j ACCEPT
    #
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A OUTPUT -o lo -j ACCEPT
    #
    $IPTABLES -A OUTPUT -o eth1 -j ACCEPT
    #
    #Разрешаем на 2 сетевухе всё
    $IPTABLES -A INPUT -i eth0 -j ACCEPT
    $IPTABLES -A OUTPUT -o eth0 -j ACCEPT
    #
    #Разрешаем подключатся подсети на eth0
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 172.24.1.0/24 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 172.24.1.0/24 -j ACCEPT
    $IPTABLES -A FORWARD -d 172.24.1.0/24 -j ACCEPT
    $IPTABLES -A OUTPUT -s 172.24.1.0/24 -j ACCEPT
    #
    #
    #Разрешаем админу порты FTP и SSH из фирмы
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.30.30 —dport 20:22 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.16.126 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.68 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.32 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.182 —dport 20:22 -m state —state NEW,ESTABLISHED -j DROP

    ##Разрешаем заходить кому-то еще
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.16.126 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.16.126 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.16.126 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.16.126 -j ACCEPT
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.68 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.20.68 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.20.68 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.20.68 -j ACCEPT
    #
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.32 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.20.32 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.20.32 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.20.32 -j ACCEPT
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.30.30 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.30.30 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.30.30 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.30.30 -j ACCEPT
    #
    $IPTABLES -A INPUT -p tcp -m tcp -s 192.168.20.182 -m state —state NEW,ESTABLISHED -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.20.182 -j ACCEPT
    $IPTABLES -A FORWARD -d 192.168.20.182 -j ACCEPT
    $IPTABLES -A OUTPUT -s 192.168.20.182 -j ACCEPT
    #
    #Разрешаем ICMP
    $IPTABLES -A INPUT -p icmp -m icmp —icmp-type 255 -j ACCEPT
    $IPTABLES -A OUTPUT -p icmp -m icmp —icmp-type 255 -j ACCEPT
    $IPTABLES -A FORWARD -p icmp -m icmp —icmp-type 255 -j ACCEPT
    # Разрешаем выход в инет для остальных (если инет на eth1)
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.16.126/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.30.30/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.20.32/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.20.182/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 192.168.20.68/32 ! -d 192.168.0.0/19 -j SNAT —to-source 172.24.1.81
    $IPTABLES -t nat -A POSTROUTING -o eth1 -s 172.24.1.0/24 ! -d 172.24.1.0/24 -j SNAT —to-source 172.24.1.81
    #$IPTABLES -t nat -A POSTROUTING -s XXX.XXX.XXX.XXX -j LOG —log-prefix «POSTROUTING : »

    echo «1″ > /proc/sys/net/ipv4/ip_forward

    Теперь пример клиента htb:
    eth1-2:07.devils —>
    RATE=2500Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.16.126/32
    этому клиенту дает меньше 2mbit

    eth1-2:08.andrey —>
    RATE=2000Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.20.182/32
    этому клиенту дает меньше 1mbit

    eth1-2:09.vasya —>
    RATE=2000Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.20.32/32
    этому дает тоже меньше 1mbit

    когда выключаю htb.init stop, тогда скорость делится поровну на всех,канал 8mbit

  80. Stepanoff on 25 Янв 2010 at 09:47 #

    У вас нет маркировки пакетов, потому скорость режет только на выход. Проверяйте корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле, а затем ее надо делить, если суммарно раздать скорости в файлах клиентов более чем скорость в корневом файле то работать не будет.

  81. odybahchik on 25 Янв 2010 at 14:24 #

    можете прислать пример «корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле» а на счёт маркировки я понял

  82. Stepanoff on 25 Янв 2010 at 15:15 #

    Статью то прочитали? Или только скопировали что то куда то, и не завелось? Все описано в статье, у людей все работает, а вам примеры выслать надо которые приведены в статье. Может хотите что бы я за вас настроил все?

  83. odybahchik on 25 Янв 2010 at 17:43 #

    значит я промаркировал в iptables

    #маркирую devilsa №102
    $iptables -t mangle -A PREROUTING -s 192.168.16.126 -j MARK —set-mark 102
    $iptables -t mangle -A PREROUTING -s 192.168.16.126 -j RETURN
    #маркирую chirika №103
    $iptables -t mangle -A PREROUTING -s 192.168.20.32 -j MARK —set-mark 103
    $iptables -t mangle -A PREROUTING -s 192.168.20.32 -j RETURN
    #маркирую telefoni №104
    $iptables -t mangle -A PREROUTING -s 192.168.20.182 -j MARK —set-mark 104
    $iptables -t mangle -A PREROUTING -s 192.168.20.182 -j RETURN
    #маркирую odybah №105
    $iptables -t mangle -A PREROUTING -s 192.168.30.30 -j MARK —set-mark 105
    $iptables -t mangle -A PREROUTING -s 192.168.30.30 -j RETURN
    #маркирую capkuvatiy №106
    $iptables -t mangle -A PREROUTING -s 192.168.20.68 -j MARK —set-mark 106
    $iptables -t mangle -A PREROUTING -s 192.168.20.68 -j RETURN

    и в файлах подабавлял MARK=102 и так далее
    запустил htb и он вообще перестал ограничивать скорость

  84. Stepanoff on 25 Янв 2010 at 17:48 #

    Внимательно перечитать статью столько раз, сколько надо для полного понимания что куда вписывать, а главное зачем.

  85. odybahchik on 25 Янв 2010 at 18:35 #

    я всё прочитал и всё понимаю что и зачем только где-то каряво написал.Сам не пойму что потому и пришёл сюда чтоб вы сказали «со стороны виднее»
    маркирую я правильно?

  86. Stepanoff on 25 Янв 2010 at 18:39 #

    Если бы все было понятно, то думаю не возниколо бы вопросов по настройке. Маркировка верно, а вот как в конфигах htb я не знаю. В статье описано подробно куда маркировка, куда без нее, и тд.

  87. odybahchik on 25 Янв 2010 at 19:00 #

    когда я запускаю свой iptables с этими маркировками мне пишет «./iptables.sh: line 72: -t: команда не найдена
    ./iptables.sh: line 73: -t: команда не найдена
    ./iptables.sh: line 75: -t: команда не найдена
    ./iptables.sh: line 76: -t: команда не найдена
    ./iptables.sh: line 78: -t: команда не найдена
    ./iptables.sh: line 79: -t: команда не найдена
    ./iptables.sh: line 81: -t: команда не найдена
    ./iptables.sh: line 82: -t: команда не найдена
    ./iptables.sh: line 84: -t: команда не найдена
    ./iptables.sh: line 85: -t: команда не найдена
    »
    когда убираю -t mangle тогда пишет «iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    iptables: No chain/target/match by that name.
    »
    подскажи что не так и почему

  88. Stepanoff on 25 Янв 2010 at 23:40 #

    Правила не верно написаны. Почему не так? Наверное не читал мануалы, не по шейперу не по iptables. И я думаю что вам на форум с таким количеством вопросов надо обратиться, а не в комментарии писать, я подсказал уже не раз, толку особо не вижу. Если есть лишняя денюжка — могу настроить вам шейпинг.

  89. odybahchik on 26 Янв 2010 at 09:08 #

    сколько денег пишите обдумаю

  90. Stepanoff on 26 Янв 2010 at 09:34 #

    Напишите мне в ICQ, номер в разделе Контакты (http://sudouser.com/?page_id=2), или свяжитесь через форму которая находится там же, если не пользуетесь ICQ.

  91. inner on 03 Фев 2010 at 10:54 #

    канал инета 2 мбит, но его забивают юзеры качая траф.
    внтури же стоит asterisk и качество звука режется при подключении извне
    1 правило — 512кбит на ip 192.168.1.121 — asterisk
    2 — 1536кбит на 192.168.1.0\24 — для остальных
    затык в том что на линуксе почта и т.п, но вместо скорости гигабит для внутреннего пользователя идет подключение к ресурсу линукса на скорости 1536кбит.
    как ограничить канал для внешнего подключения, не трогая внутреннее?

  92. Stepanoff on 03 Фев 2010 at 11:28 #

    Создайте правило для внутренней сети, с номером файла меньшим, чем для внешней

  93. inner on 03 Фев 2010 at 16:00 #

    простите, не догоняю..
    сейчас так:

    inet-2:06.ats
    RATE=512Kbit
    CEIL=512Kbit
    LEAF=sfq
    PRIO=1
    MARK=101

    iptables -t mangle -A PREROUTING -s 192.168.1.121 -j MARK —set-mark 101
    iptables -t mangle -A PREROUTING -s 192.168.1.121 -j RETURN

    inet-2:07.all
    RATE=1536Kbit
    CEIL=1536Kbit
    LEAF=sfq
    PRIO=1
    MARK=102

    iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j MARK —set-mark 102
    iptables -t mangle -A PREROUTING -s 192.168.1.0/24 -j RETURN

    loca-2:06.ats
    RATE=512Kbit
    CEIL=512Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.1.121/32

    loca-2:07.all
    RATE=1534Kbit
    CEIL=1534Kbit
    LEAF=sfq
    PRIO=1
    RULE=192.168.1.0/24

    ограничения отрабатывают.
    если убрать нижние два, то не отрабатывает.
    и правило для внутренней сети вроде есть..

  94. Stepanoff on 03 Фев 2010 at 16:36 #

    Правило для локальной сети создайте, в статье написано как, файл lanload.

  95. inner on 04 Фев 2010 at 16:30 #

    спасибо, за помощь. все ок.

    имеется ли возможность, наподобие реализованного в CBQ , заимствования у родительского класса неиспользуемой полосы пропускания?

  96. Stepanoff on 04 Фев 2010 at 16:42 #

    Тут ничего не подскажу, не смотрел в сторону CBQ.

  97. Petrovi4 on 18 Мар 2010 at 16:07 #

    При попытке добавить в автозагрузку системы (Ubuntu 9.10) вот такое:
    root@Server:~# update -rc.d htb start 20 0 1 2 3 4 5
    No command ‘update’ found, did you mean:
    Command ‘uupdate’ from package ‘devscripts’ (main)
    Command ‘lupdate’ from package ‘libqt4-dev’ (main)
    Command ‘lupdate’ from package ‘qt3-dev-tools’ (main)
    update: command not found
    и даже если так:
    root@Server:/etc/init.d# update -rc.d htb start 20 0 1 2 3 4 5
    No command ‘update’ found, did you mean:
    Command ‘uupdate’ from package ‘devscripts’ (main)
    Command ‘lupdate’ from package ‘libqt4-dev’ (main)
    Command ‘lupdate’ from package ‘qt3-dev-tools’ (main)
    update: command not found
    Как мне быть?
    З.Ы. Второй день как поставил эту ось

  98. Stepanoff on 18 Мар 2010 at 16:09 #

    При наборе команд использовать клавишу TAB. Команда update-rc.d.

  99. Petrovi4 on 02 Июн 2010 at 02:39 #

    Огромное спасибо.
    Вроде все получилось.
    Подскажите, пожалуйста, какие значения параметров(R2Q, BURST и т.д.) мне лучше использовать.
    Мои параметры:
    количество юзверей: 30
    прием: 20-21 Мбит
    отдача: 512-600 Кбит
    И подскажите от чего вы отталкиваетесь, подбирая значения.
    Заранее благодарю.

  100. Максим Степанов on 02 Июн 2010 at 10:13 #

    R2Q это точность работы шейпера, с ней можно поэкспериментировать. BURST это количество трафика которые юзер может скачать на максимальной скорости вашего канала, затем скорость урезается до отведенной ему, это создает впечатление что инет работает быстрее, например при открытии сайтов.

  101. asta on 24 Янв 2011 at 12:47 #

    Файл eth0-2:07.vasya и eth1-2:07.vasya , к примеру, что обозначает 2:07 — перечитал несколько раз ничего не понял. Если у меня 5 клиентов с ограничением 1024kbit/c для каждого — то возникает три вопроса:
    1 — то что я указывал 2:07 в имени файла оставлять у всех одинаково? т.к. скорость не меняется но для каждого отдельно
    2 — параметр MARK — указывать для всех одинаковый? или если укажу одинаковый то не для каждого отдельно скорость будет, а одна указанная для всех?
    3 — если в имени файла увеличивать 2:07 2:08 ….. 2:12 , к примеру, то это может идти до бесконечности?

  102. VitalyVoskobovich on 30 Янв 2012 at 09:41 #

    Здравствуйте. Имею:
    ppp0 = 100Mbit (внешний мир)
    eth1 = 100Mbit (локальная сеть)
    Задача — Ограничить только скорость когда качают торрент.
    На сервере еще крутится сервер чата, для которого тоже должен быть запас.
    инет —> ppp0 —> сервер чат —> eth1 —> клиент. Нужно, что бы не оказалось, что для чата не хватает места в канале, что бы не было обрывов ибо там видео связь, передача файлов и прочее.
    На скачку торентов я выделяю 60Мбти\сек
    На серфинг сайтов 5 Мбит\сек
    Если что-то другое 10 Мбит\сек
    И на чат 25Мбит\сек (которые остаются свободными). Верно ли я мыслю?
    Чат доступен внешне и большее количество подключения будет из вне, у него есть конкреный рабочий порт, может можно как-то привязать к этим правилам что бы не оставлять запас такой?

    «ppp0″
    DEFAULT=30
    R2Q=10

    «ppp0-2.root»
    RATE=100Mbit
    CEIL=100Mbit

    «ppp0-2:20.www»
    RATE=5Mbit
    CEIL=100Mbit
    PRIO=1
    LEAF=sfq
    RULE=*:80,
    BURST=100Kb

    «ppp0-2:30.default»
    RATE=10Mbit
    CEIL=100Mbit
    PRIO=2
    LEAF=sfq

    «ppp0-2:10.torrents»
    RATE=60Mbit
    CEIL=100Mbit
    PRIO=3
    LEAF=sfq
    RULE=*:6881,
    RULE=*:6882,
    RULE=*:6883,
    RULE=*:6884,
    RULE=*:6885,
    RULE=*:6886,
    RULE=*:6887,
    RULE=*:6888,
    RULE=*:6889,

    «eth1″
    DEFAULT=30
    R2Q=10

    «eth1-2.root»
    RATE=100Mbit
    CEIL=100Mbit

    «eth1-2:20.www»
    RATE=5Mbit
    CEIL=100Mbit
    PRIO=1
    LEAF=sfq
    RULE=*:80,
    BURST=100Kb

    «eth1-2:30.default»
    RATE=10Mbit
    CEIL=100Mbit
    PRIO=2
    LEAF=sfq

    «eth1-2:10.torrents»
    RATE=60Mbit
    CEIL=100Mbit
    PRIO=3
    LEAF=sfq
    RULE=*:6881,
    RULE=*:6882,
    RULE=*:6883,
    RULE=*:6884,
    RULE=*:6885,
    RULE=*:6886,
    RULE=*:6887,
    RULE=*:6888,
    RULE=*:6889,

Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.


Самые популярные статьи

  • Установка Samba сервера на Ubuntu или Debian за 5 минут
  • Установка и настройка DNS сервера bind9 Ubuntu-Debian HOWTO
  • Установка почтового сервера Postfix + Dovecot + MYSQL и виртуальных доменов
  • Установка и настройка Open VPN сервера на Debian и Ubuntu
  • Настройка маршрутизации в Ubuntu Linux для начинающих
  • Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH
  • Установка и настройка DHCP сервера
  • Настройка шлюза в локальной сети, лимитирование скорости (shaper), фаервол (iptables).
  • Установка и настройка VSFTPD + MYSQL (Ubuntu & Debian)
  • Настройка ограничения и распределения канала (HTB Shaper)
  • Настройка sudo в Debian GNU/Linux и Ubuntu Linux
  • Установка и настройка L2TP сервера xl2tpd или l2tpd
  • Mail.ru Агент в Linux
  • Установка хостинг панели ISPConfig 3 на Ubuntu 9.04
  • Как установить LDAP сервер и его клиентов. (ldap linux debian & ubuntu auth)
  • Сетевые утилиты онлайн - NSLOOKUP
  • Подробное руководство по настройке wifi соединения с шифрованием разных типов
  • Установка apache2.2.x во FreeBSD 7.0
  • IP телефония в Ubuntu или Debian на базе Asterisk за 15 минут
  • Различия в ядрах Ubuntu Server и Ubuntu Desktop
  • Linux в роли WI-FI точки доступа
  • Игры в Linux
  • Установка Ubuntu на RAID-1 диски
  • Настройка рабочего стола Ubuntu, или как догнать и перегнать Windows!
  • Ставим и настраиваем XEN сервер
  • Установка Nginx, PHP5, FastCGI, XCache и MySQL на Ubuntu
  • Открылся русскоязычный Linux торрент трекер
  • HDR обои на рабочий стол 1920×1200
  • Настройка маршрутизации с помощью Quagga (zebra)
  • Сборка Midnight Commander 4.6.3 на Mac OS Leopard

  • « | »

    Рейтинг блогов Rambler's Top100
    службы мониторинга серверов
  • Теги

    apache apple backup bash script canonical compiz compiz fusion deb debian desktop wallpapers find firewall forum freebsd freebsd kernel ftp ftp server hd wallpapers ipfw iptables leopard linux linux ubuntu mac macbook mac leopard Mac OS mac os x new ubuntu opensource shell script torrent ubuntu ubuntu 8.04 ubuntu 8.10 ubuntu 9.04 ubuntu 9.10 ubuntu linux ubuntu server ubuntu wifi ubuntu wireless virtualization vmware wallpapers обои на рабочий стол
  • География посещений

  • Архивы

  • Рейтинг блогов Rambler's Top100
    службы мониторинга серверов