марта 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 который будет генерировать вам правила шейпера согласно созданным вами файлам конфигурации.
Сайт проекта
Затем назовем скачанный скрипт 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 по адресу
Надеюсь эта статья была полезна для вас =) Удачи в настройке.
Popularity: 36%
55 Комментариев »
55 Responses to “Настройка ограничения и распределения канала (HTB Shaper)”
Leave a Reply
You must be logged in to post a comment.
может надо было просто настроить shorewall
Насколько я помню, shorewall это фаервол, ну умеет он траффик фильтровать, но он же не для этого сделан. Никогда им не пользовался, меня полностью устраивают iptables. Настроек по фильтрации и тд в нем мало. Имхо надо использовать то что для этого сделано, а не гвозди микроскопом забивать Да и тут пример на три пользователя, а вот на 3000 вы тоже shorewall предложите?
Я поздравляю вас с 1 апреля! Почему именно вас — можно узнать в моём блоге.
1) шоревол основан на iptables
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
2) шейпить он умеет
3) статья то не про 3000 пользователей правда
линки в тему:
1) Для 3000 пользователей не используются «роутеры», на основе РСков. для этого есть более серъезное оборудование.
2) Есть категория аппаратных роутеров. в ценовом диапазоне от 4-5т.р., которая имеет не меньшие возможности для настройки, при меньших затратах.
3) Ваше предложение действительно подходит для маааленькой сети, но при количестве пользователей от 10-ка и более требует слишком много трудозатрат.
4) Iptables тоже файрволл. ничем не лучше и не хуже shorewall.
Идеология разная.
используюьт писюки и для более крупных сетей, не то что 3к узеров
«Так же на сервере стоит фтп, и надо разрешить пользователям качать с него со скоростью выше чем скорость доступа к интернету»
— вот это не срабатывает. Что-то я делаю не так, но не знаю что… У меня не используется НАТ, адреса и конфиги приведены ниже.
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. =( Помогите пожалуйста..
создайте файлик еще специально для фтп и все заработает…
### eth0-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.83,
—————————
### eth1-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.83
Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…
### eth0-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.87,
—————————
### eth1-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.87
Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…
в самом скрипте htb.init приведены примеры как урезать например весь WWW трафик, и в гугле куча примеров
Здравствуйте, установил все и прописал как написанно в доке. Но когда пытаюсь запустить его выдает сообщение: «**HTB: iproute2 utilities not installed or executable!»
Хелп ми.
У Вас видимо не установлен пакет iproute
Забыл добавить. Стоит SUSE 11.0, пакет «iproute2-2.6.23-75.1″ — установлен
Проверьте, соответствуют ли пути к файлам в скрипте реальности. Скрипт используетс tc и еще что то, не помню
Я все поправил, теперь запускаеться, спасибо. Вот только ошибки следующие выдает:
«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.»
На это можно не обращать внимания, это баг в программе find, ничего страшного в нем нет.
Всё вроде заработало, спасибо ещё раз. А при помощи него можно резать по объёму файла? (типа больше 30 МБ файл, скачать нельзя)
Нет, это умеет squid
но тогда надо настраивать прокси на клиентах, а мне бы желательно на клиентах ничего не настраивать, а это только NAT.
Никто вам не мешает настроить прозрачный прокси, но это не относится к данной теме.
А что делать если вместо 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 REROUTING ACCEPT [364003:218603990]
:INPUT ACCEPT [92330:24844565]
:FORWARD ACCEPT [270980:193686155]
:OUTPUT ACCEPT [191150:179553216] 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 REROUTING ACCEPT [5005:381591] OSTROUTING ACCEPT [555:41386]
:OUTPUT ACCEPT [25:1501]
-A POSTROUTING -s 169.254.0.5 -j MASQUERADE
Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.
[quote]Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.[/quote]
тоесть вы мне предлагаете сидеть на стремё всё время??
С таким подходом вам не юниксы, а венду надо. Напишите скрипт который сделает это сам.
Вопрос к автору: дом сетка из 3 компов через «тупой аппаратный маршрутизатор»), а шейпер хоцца, проблема с забивием канала как и у всех, что можете посоветовать? Я наивно полагал, что если прозрачным squid сделать, скажем на однм из компов, то весь траффик через него буде перенаправляться на остальные и обратно и мож быть тогда удасться по вашему примеру настроить шейпер.
Вместо тупого маршрутизатора поставить комп, можно самый слабый, на нем поднять все необходимое (DHCP, SHAPER, SAMBA)http://linux.xlibs.net/2008/03/21/trickle-traffic-limiter/
Ну или если на машинках стоит линукс то можно на приложения индивидуально резать скорость при помощи софтинки Trickle, ссылка на сабж
Привет не могу разобратся в чём дело может поможеш???http://serfingwmz.ucoz.ru/htb_primer.tar.gz
Значит есть у меня eth0 (122.2.0.6) eth1 (172.24.1.81) eth2 (192.168.16.47)
нужно раздать инет на eth2
настроил iptables чтобы пропускал тока те адреса которые мне нужно и выпустил их в нет
теперь осталось токо настроить скорость для клиентов
канал 8мегабит использую htb.init примеры моих настроек прилагаются
в итоге чёто он не правильно делит скоростя
Прошу помощи
Вот мои настройки
Файлов много, читать лень, пиши сюда, что не так.
вообщем скорость у клиента на 2mbit а 1 mbit а у другого вместо 2mbit 512kbit а у третьего вместо 512kbit 1.5mbit
Ну а более подробно, и со знаками препинания. И правила iptables сюда же пишите, которые для ограничения скорости используются.
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
У вас нет маркировки пакетов, потому скорость режет только на выход. Проверяйте корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле, а затем ее надо делить, если суммарно раздать скорости в файлах клиентов более чем скорость в корневом файле то работать не будет.
можете прислать пример «корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле» а на счёт маркировки я понял
Статью то прочитали? Или только скопировали что то куда то, и не завелось? Все описано в статье, у людей все работает, а вам примеры выслать надо которые приведены в статье. Может хотите что бы я за вас настроил все?
значит я промаркировал в 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 и он вообще перестал ограничивать скорость
Внимательно перечитать статью столько раз, сколько надо для полного понимания что куда вписывать, а главное зачем.
я всё прочитал и всё понимаю что и зачем только где-то каряво написал.Сам не пойму что потому и пришёл сюда чтоб вы сказали «со стороны виднее»
маркирую я правильно?
Если бы все было понятно, то думаю не возниколо бы вопросов по настройке. Маркировка верно, а вот как в конфигах htb я не знаю. В статье описано подробно куда маркировка, куда без нее, и тд.
когда я запускаю свой 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.
»
подскажи что не так и почему
Правила не верно написаны. Почему не так? Наверное не читал мануалы, не по шейперу не по iptables. И я думаю что вам на форум с таким количеством вопросов надо обратиться, а не в комментарии писать, я подсказал уже не раз, толку особо не вижу. Если есть лишняя денюжка — могу настроить вам шейпинг.
сколько денег пишите обдумаю
Напишите мне в ICQ, номер в разделе Контакты (http://sudouser.com/?page_id=2 ), или свяжитесь через форму которая находится там же, если не пользуетесь ICQ.
канал инета 2 мбит, но его забивают юзеры качая траф.
внтури же стоит asterisk и качество звука режется при подключении извне
1 правило — 512кбит на ip 192.168.1.121 — asterisk
2 — 1536кбит на 192.168.1.0\24 — для остальных
затык в том что на линуксе почта и т.п, но вместо скорости гигабит для внутреннего пользователя идет подключение к ресурсу линукса на скорости 1536кбит.
как ограничить канал для внешнего подключения, не трогая внутреннее?
Создайте правило для внутренней сети, с номером файла меньшим, чем для внешней
простите, не догоняю..
сейчас так:
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
ограничения отрабатывают.
если убрать нижние два, то не отрабатывает.
и правило для внутренней сети вроде есть..
Правило для локальной сети создайте, в статье написано как, файл lanload.
спасибо, за помощь. все ок.
имеется ли возможность, наподобие реализованного в CBQ , заимствования у родительского класса неиспользуемой полосы пропускания?
Тут ничего не подскажу, не смотрел в сторону CBQ.
При попытке добавить в автозагрузку системы (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
Как мне быть?
З.Ы. Второй день как поставил эту ось
При наборе команд использовать клавишу TAB. Команда update-rc.d.
Огромное спасибо.
Вроде все получилось.
Подскажите, пожалуйста, какие значения параметров(R2Q, BURST и т.д.) мне лучше использовать.
Мои параметры:
количество юзверей: 30
прием: 20-21 Мбит
отдача: 512-600 Кбит
И подскажите от чего вы отталкиваетесь, подбирая значения.
Заранее благодарю.
R2Q это точность работы шейпера, с ней можно поэкспериментировать. BURST это количество трафика которые юзер может скачать на максимальной скорости вашего канала, затем скорость урезается до отведенной ему, это создает впечатление что инет работает быстрее, например при открытии сайтов.
Файл 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. =( Помогите пожалуйста..
создайте файлик еще специально для фтп и все заработает…
### eth0-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.83,
—————————
### eth1-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.83
Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…
### eth0-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.87,
—————————
### eth1-2:11.ftp
PRIO=1
RATE=5Mbit
RULE=194.*.*.87
Все равно скачивается с прежней скоростью. Я так думаю, если сервак поставить рядом с клиентами, то тогда эти правила для фтп сработают. Сейчас хтб ограничивает весь трафик проходящий через него. И ему без разницы — направлен он (по исходнику) к фтп или куда нидь еще. Можно было хтб перекинуть на другой хаб, но при этом не смогу поставить реальный адрес…
в самом скрипте htb.init приведены примеры как урезать например весь WWW трафик, и в гугле куча примеров
Здравствуйте, установил все и прописал как написанно в доке. Но когда пытаюсь запустить его выдает сообщение: «**HTB: iproute2 utilities not installed or executable!»
Хелп ми.
У Вас видимо не установлен пакет iproute
Забыл добавить. Стоит SUSE 11.0, пакет «iproute2-2.6.23-75.1″ — установлен
Проверьте, соответствуют ли пути к файлам в скрипте реальности. Скрипт используетс tc и еще что то, не помню
Я все поправил, теперь запускаеться, спасибо. Вот только ошибки следующие выдает:
«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.»
На это можно не обращать внимания, это баг в программе find, ничего страшного в нем нет.
Всё вроде заработало, спасибо ещё раз. А при помощи него можно резать по объёму файла? (типа больше 30 МБ файл, скачать нельзя)
Нет, это умеет squid
но тогда надо настраивать прокси на клиентах, а мне бы желательно на клиентах ничего не настраивать, а это только NAT.
Никто вам не мешает настроить прозрачный прокси, но это не относится к данной теме.
А что делать если вместо 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 REROUTING ACCEPT [364003:218603990]
:INPUT ACCEPT [92330:24844565]
:FORWARD ACCEPT [270980:193686155]
:OUTPUT ACCEPT [191150:179553216] 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 REROUTING ACCEPT [5005:381591] OSTROUTING ACCEPT [555:41386]
:OUTPUT ACCEPT [25:1501]
-A POSTROUTING -s 169.254.0.5 -j MASQUERADE
Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.
[quote]Попробуйте инициализировать шейпер в момент включения интерфейса ppp0, и так же отключать его при отключении этого интерфейса.[/quote]
тоесть вы мне предлагаете сидеть на стремё всё время??
С таким подходом вам не юниксы, а венду надо. Напишите скрипт который сделает это сам.
Вопрос к автору: дом сетка из 3 компов через «тупой аппаратный маршрутизатор»), а шейпер хоцца, проблема с забивием канала как и у всех, что можете посоветовать? Я наивно полагал, что если прозрачным squid сделать, скажем на однм из компов, то весь траффик через него буде перенаправляться на остальные и обратно и мож быть тогда удасться по вашему примеру настроить шейпер.
Вместо тупого маршрутизатора поставить комп, можно самый слабый, на нем поднять все необходимое (DHCP, SHAPER, SAMBA)http://linux.xlibs.net/2008/03/21/trickle-traffic-limiter/
Ну или если на машинках стоит линукс то можно на приложения индивидуально резать скорость при помощи софтинки Trickle, ссылка на сабж
Привет не могу разобратся в чём дело может поможеш???http://serfingwmz.ucoz.ru/htb_primer.tar.gz
Значит есть у меня eth0 (122.2.0.6) eth1 (172.24.1.81) eth2 (192.168.16.47)
нужно раздать инет на eth2
настроил iptables чтобы пропускал тока те адреса которые мне нужно и выпустил их в нет
теперь осталось токо настроить скорость для клиентов
канал 8мегабит использую htb.init примеры моих настроек прилагаются
в итоге чёто он не правильно делит скоростя
Прошу помощи
Вот мои настройки
Файлов много, читать лень, пиши сюда, что не так.
вообщем скорость у клиента на 2mbit а 1 mbit а у другого вместо 2mbit 512kbit а у третьего вместо 512kbit 1.5mbit
Ну а более подробно, и со знаками препинания. И правила iptables сюда же пишите, которые для ограничения скорости используются.
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
У вас нет маркировки пакетов, потому скорость режет только на выход. Проверяйте корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле, а затем ее надо делить, если суммарно раздать скорости в файлах клиентов более чем скорость в корневом файле то работать не будет.
можете прислать пример «корневые файлы на интерфейсы, скорость должна быть 100 или 1000 мбит в корневом файле» а на счёт маркировки я понял
Статью то прочитали? Или только скопировали что то куда то, и не завелось? Все описано в статье, у людей все работает, а вам примеры выслать надо которые приведены в статье. Может хотите что бы я за вас настроил все?
значит я промаркировал в 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 и он вообще перестал ограничивать скорость
Внимательно перечитать статью столько раз, сколько надо для полного понимания что куда вписывать, а главное зачем.
я всё прочитал и всё понимаю что и зачем только где-то каряво написал.Сам не пойму что потому и пришёл сюда чтоб вы сказали «со стороны виднее»
маркирую я правильно?
Если бы все было понятно, то думаю не возниколо бы вопросов по настройке. Маркировка верно, а вот как в конфигах htb я не знаю. В статье описано подробно куда маркировка, куда без нее, и тд.
когда я запускаю свой 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.
»
подскажи что не так и почему
Правила не верно написаны. Почему не так? Наверное не читал мануалы, не по шейперу не по iptables. И я думаю что вам на форум с таким количеством вопросов надо обратиться, а не в комментарии писать, я подсказал уже не раз, толку особо не вижу. Если есть лишняя денюжка — могу настроить вам шейпинг.
сколько денег пишите обдумаю
Напишите мне в ICQ, номер в разделе Контакты (http://sudouser.com/?page_id=2 ), или свяжитесь через форму которая находится там же, если не пользуетесь ICQ.
канал инета 2 мбит, но его забивают юзеры качая траф.
внтури же стоит asterisk и качество звука режется при подключении извне
1 правило — 512кбит на ip 192.168.1.121 — asterisk
2 — 1536кбит на 192.168.1.0\24 — для остальных
затык в том что на линуксе почта и т.п, но вместо скорости гигабит для внутреннего пользователя идет подключение к ресурсу линукса на скорости 1536кбит.
как ограничить канал для внешнего подключения, не трогая внутреннее?
Создайте правило для внутренней сети, с номером файла меньшим, чем для внешней
простите, не догоняю..
сейчас так:
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
ограничения отрабатывают.
если убрать нижние два, то не отрабатывает.
и правило для внутренней сети вроде есть..
Правило для локальной сети создайте, в статье написано как, файл lanload.
спасибо, за помощь. все ок.
имеется ли возможность, наподобие реализованного в CBQ , заимствования у родительского класса неиспользуемой полосы пропускания?
Тут ничего не подскажу, не смотрел в сторону CBQ.
При попытке добавить в автозагрузку системы (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
Как мне быть?
З.Ы. Второй день как поставил эту ось
При наборе команд использовать клавишу TAB. Команда update-rc.d.
Огромное спасибо.
Вроде все получилось.
Подскажите, пожалуйста, какие значения параметров(R2Q, BURST и т.д.) мне лучше использовать.
Мои параметры:
количество юзверей: 30
прием: 20-21 Мбит
отдача: 512-600 Кбит
И подскажите от чего вы отталкиваетесь, подбирая значения.
Заранее благодарю.
R2Q это точность работы шейпера, с ней можно поэкспериментировать. BURST это количество трафика которые юзер может скачать на максимальной скорости вашего канала, затем скорость урезается до отведенной ему, это создает впечатление что инет работает быстрее, например при открытии сайтов.
Файл 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 , к примеру, то это может идти до бесконечности?
Здравствуйте. Имею:
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,