Четверг, 25.04.2024, 11:17
Приветствую Вас Гость | RSS
Мой сайт
Главная
Регистрация
Вход
Форма входа

Меню сайта

Категории раздела
Об ОС Windows [137]
В категории размещаются статьи, касающщиеся операционных систем от Microsoft.
Об ОС *Nix [198]
В данной категории собраны статьи об ОС семейства Unix/Linux/FreeBSD/...
Справочные материалы [351]
Справка по всему разделу.
Виртуализация и Облака [46]
Networks & Routing [86]
DataBases [22]

Наш опрос
Оцените мой сайт
Всего ответов: 209

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Системное администрирование » Об ОС *Nix

Настройка ограничения и распределения канала (HTB Shaper)">Настройка ограничения и распределения канала (HTB Shaper)
марта 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: unranked

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

Добавить в del.icio.usДобавить в news2.ruДобавить в google.comДобавить в bobrdobr.ruДобавить в memori.ruДобавить в moemesto.ruДобавить в mister-wong.ruДобавить в rumarkz.ruДобавить в rucity.comДобавить в linkstore.ruДобавить в myscoop.ruДобавить в vaau.ruДобавить в newsland.ru
Дай же, не жадничай!

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

1.

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

может надо было просто настроить shorewall wink
2.

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

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

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

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

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

1) шоревол основан на iptables
2) шейпить он умеет
3) статья то не про 3000 пользователей правда wink
линки в тему:
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 трафик, и в гугле куча примеров smile
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 и еще что то, не помню smile
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, и так же отключать его при отключении этого интерфейса.

тоесть вы мне предлагаете сидеть на стремё всё время??
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 это количество трафика которые юзер может скачать на максимальной скорости вашего канала, затем скорость урезается до отведенной ему, это создает впечатление что инет работает быстрее, например при открытии сайтов.

Источник: http://sudouser.com/nastrojka-ogranicheniya-i-raspredeleniya-kanala-htb-shaper.html

Категория: Об ОС *Nix | Добавил: admin (28.06.2010)
Просмотров: 3080 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024