Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: [FAQ] Ограничение скорости для клиентов на Ubuntu-Server (htb.init)  (Прочитано 321069 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SergER

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Lion-Simba, спасибо, вечером попробую:)

____________________________
Все работает, маркировку убрал. спасибо за помощь!
« Последнее редактирование: 20 Марта 2009, 01:06:22 от SergER »

Оффлайн AVATAR777

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Здравствуйте уважаемые Форумчане! есть такая проблемка , у меня дома 4 компа, один из них я сделал сервером на Linux что бы регулировал скорость интернета и давал всем поровну ну если никто другой не пользуется то весь канал интернета, у нашего провайдера есть еще внутренняя сеть VPN через нее работает торрент, так вот в чем вопрос, VPN запущен на Linux интерфейсе tap0 (10.11.*.* адрес получает динамически )через канал интернета eth0 (192.169.1.2). в локалку смотрит eth1 (192.168.1.24) , мне надо чтобы как только я захожу в инет трафик VPN полностью блокировался, так как очень сильно влияет на пинг, ну и как только в инете никого нет VPN трафик снова возобновлялся. есть еще обычный торрент через интернет, так вот его желательно тоже глушить, еще раз акцентирую что это все стоит на сервере...
« Последнее редактирование: 22 Марта 2009, 15:18:52 от AVATAR777 »

Оффлайн SergER

  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
AVATAR777, я сделал у себя нечто подобное, когда поднял качалку на сервере. но у меня нет VPN, у сервера 2 интерфейса, eth0 для локалки и eth1 для адсл-модема. защиту от посторонних подключений сделал простейшую: в списке правил iptables указал кому можно лезть к серверу с интерфейса eth0, а остальные входящие с eth0 запретил (-j DROP).
со скоростью сервера и клиентов сделал так. сначала маркирую входящие пакеты
iptables -t mangle -A INPUT -i eth1 -j MARK --set-mark 103
iptables -t mangle -A FORWARD -d 192.168.100.1 -i eth1 -j MARK --set-mark 101
iptables -t mangle -A FORWARD -d 192.168.100.2 -i eth1 -j MARK --set-mark 102
INPUT - если этот пакет приходит непосредственно серверу,
FORWARD -d 1.2.3.4 - если пакет перебрасывается на адрес 1.2.3.4
потом htbinit:
eth1-2:50.128kb
RATE=125Kbit

eth1-2:50:501.server_low_priority
RATE=1Kbit
CEIL=125Kbit
PRIO=2
MARK=103

eth1-2:50:502.clients_high_priority
RATE=124Kbit

eth1-2:50:502:5021.first_client
RATE=62Kbit
CEIL=124Kbit
PRIO=1
MARK=101

eth1-2:50:502:5022.second_client
RATE=62Kbit
CEIL=124Kbit
PRIO=1
MARK=102
Чем меньше значение PRIO, тем выше приоритет очереди. Другими словами, обработка пакетов с PRIO=2 приостановится, пока у тебя не пройдут пакеты с PRIO=1... как-то так...
ну и для резки исходящих с сервера понадобится OUTPUT, т.е. пакет формируется на интерфейсе сервера, а не НАТом; и FORWARD -s 1.2.3.4
Я сначала сделал так, как посоветовал Lion-Simba, но когда поднял торрент, решил переделать. у меня уже несколько дней работает такая схема, вроде все нормально

Оффлайн technic1

  • Участник
  • *
  • Сообщений: 202
    • Просмотр профиля
вопрос такой,
у меня у провайдера скорость не стабильнаям т.е. максимум 1Мбит  а иногда канал загружен и может быть 500kbit
если в eth0-2.root указать rate 500kbit(т.е. скорость которая точно есть), то когда у провайдера всё ок будет ли у меня скорость  1Мбит?
В локалке 2 компа надо настроить приоритет нескольким протоколам.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
если в eth0-2.root указать rate 500kbit(т.е. скорость которая точно есть), то когда у провайдера всё ок будет ли у меня скорость  1Мбит?
Нет, не будет.
Можно использовать параметр CEIL=1mbit.
При делении канала так и писать - гарантированную скорость в RATE, максимально-возможную - в CEIL.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн technic1

  • Участник
  • *
  • Сообщений: 202
    • Просмотр профиля
tc class add dev ifb0 parent 1: classid 1:2 htb rate 500kbit ceil 1000kbit
   tc class add dev ifb0 parent 1:2 classid 1:10 htb rate 250kbit ceil 1000kbit  #ftp
   tc class add dev ifb0 parent 1:2 classid 1:20 htb rate 250kbit ceil 1000kbit  #http

при таком задвании классов я так понимаю, что закачка http должна быть при неглючищем провайдере 1мбит но она не подымается выше 500кбит
« Последнее редактирование: 16 Апреля 2009, 23:58:41 от technic1 »

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
tc class add dev ifb0 parent 1: classid 1:2 htb rate 500kbit ceil 1000kbit
   tc class add dev ifb0 parent 1:2 classid 1:10 htb rate 250kbit ceil 1000kbit  #ftp
   tc class add dev ifb0 parent 1:2 classid 1:20 htb rate 250kbit ceil 1000kbit  #http

при таком задвании классов я так понимаю, что закачка http должна быть при неглючищем провайдере 1мбит но она не подымается выше 500кбит
Попробуй первое правило заменить таким:
tc class add dev ifb0 parent 1: classid 1:2 htb rate 1000kbit
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн technic1

  • Участник
  • *
  • Сообщений: 202
    • Просмотр профиля
Цитировать
tc class add dev ifb0 parent 1: classid 1:2 htb rate 1000kbit
так всё работает, но не будет ли глюков если скорости такой нету??
« Последнее редактирование: 17 Апреля 2009, 20:10:49 от technic1 »

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Цитировать
tc class add dev ifb0 parent 1: classid 1:2 htb rate 1000kbit
так всё работает, но не будет ли глюков если скорости такой нету??
Думаю, что не будет, так как у дочерних классов суммарная гарантированная скорость равна 500.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн technic1

  • Участник
  • *
  • Сообщений: 202
    • Просмотр профиля
#поднимаем виртуальный интерфейс
   modprobe ifb
   ip link set dev ifb0 up
выкладываю всю настройку, может глюк где-то ещё:

tc qdisc add dev ifb0 root handle 1: htb default 30 r2q 10

tc class add dev ifb0 parent 1: classid 1:2 htb rate 500kbit ceil 1000kbit #burst 15k
tc class add dev ifb0 parent 1:2 classid 1:10 htb rate 250kbit ceil 1000kbit
tc class add dev ifb0 parent 1:2 classid 1:20 htb rate 10kbit ceil 1000kbit

tc qdisc add dev ifb0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev ifb0 parent 1:20 handle 20: sfq perturb 10

tc filter add dev ifb0 parent 1:0 protocol ip prio 1 u32 match ip sport 21 0xffff flowid 1:10
tc filter add dev ifb0 parent 1:0 protocol ip prio 1 u32 match ip sport 80 0xffff flowid 1:20

tc filter add dev ifb0 parent 1:0 protocol ip prio 1 u32 match ip dport 21 0xffff flowid 1:10
tc filter add dev ifb0 parent 1:0 protocol ip prio 1 u32 match ip dport 80 0xffff flowid 1:20

tc qdisc add dev ppp0 ingress
tc filter add dev ppp0 parent ffff: protocol ip u32 match u32 0 0 action mirred egress redirect dev ifb0

Оффлайн technic1

  • Участник
  • *
  • Сообщений: 202
    • Просмотр профиля
вобщем обошёлся и без этого, но всё же интересно это только у IFB такое? или со всеми интерфейсами?

Оффлайн gard

  • Любитель
  • *
  • Сообщений: 84
  • -=:area51:=-
    • Просмотр профиля
Здравствуйте! =)
Второй день воюю с этим скриптом:
#!/bin/bash

modprobe ifb
#ifconfig ifb0 up
ip link set dev ifb0 up
#ip addr add 192.168.0.3/32 dev ifb0

tc qdisc del dev ifb0 root 2> /dev/null > /dev/null
tc qdisc del dev ibf0 ingress 2> /dev/null > /dev/null
tc qdisc del dev ppp0 root    2> /dev/null > /dev/null
tc qdisc del dev ppp0 ingress 2> /dev/null > /dev/null
#tc qdisc del dev eth1 root    2> /dev/null > /dev/null
#tc qdisc del dev eth1 ingress 2> /dev/null > /dev/null

#======interface ppp0======
tc qdisc add dev ppp0 ingress handle ffff:
#redirect
tc filter add dev ppp0 parent ffff: protocol ip prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb0

#======interface ifb0======
tc qdisc add dev ifb0 root handle 1: htb default 120
#root class
tc class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
#admin
tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 1
tc qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
#all user (local network)
tc class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 384kbit prio 2
#user 1
tc class add dev ifb0 parent 1:20 classid 1:110 htb rate 384kbit ceil 384kbit prio 3
tc qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
#default
tc class add dev ifb0 parent 1:20 classid 1:120 htb rate 256kbit ceil 256kbit prio 4
tc qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10

#filters
#admin ip
#tc filter add dev ifb0 parent 1: protocol ip prio 1 u32 match ip dst 192.168.1.1 flowid 1:10
#tc filter add dev ifb0 parent 1: protocol ip prio 2 u32 match ip dst 192.168.0.1 flowid 1:10
#users ip
#tc filter add dev ifb0 parent 1: protocol ip prio 4 u32 match ip dst 192.168.1.0/24 flowid 1:20
#user1 ip
tc filter add dev ifb0 parent 1: protocol ip prio 3 u32 match ip dst 192.168.1.3 flowid 1:110
#default
#tc filter add dev ifb0 parent 1: protocol ip prio 5 u32 match ip dst 192.168.1.2 flowid 1:120
Проблема в том, что фильтры словно не работают, работает только default 120, то есть как там и написано, я получаю общий канал для роутера (на котором и делаю) и для клиентов локальной сети 192.168.1.0/24. Попытка классифицировать трафик фильтрами ни разу не увенчалась успехом, непонятно почему, но весь трафик идет в дефолтный класс, хотя я уже и диапазон локальной сети задавал и адрес компьютера в ней 192.168.1.3, но не работает! Что на роутере, что в локальной сети - все идет в общий дефолтный класс. Что я делаю не так? Помогите разобраться, почему не работают фильтры!
gard.area51@jabber.ru..

Оффлайн Vorlog

  • Любитель
  • *
  • Сообщений: 60
    • Просмотр профиля
Такой вопрос а можно ли скрипт htb.init использовать на прозрачном мосту или он должен выступать как роутер.

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Такой вопрос а можно ли скрипт htb.init использовать на прозрачном мосту или он должен выступать как роутер.
Хороший вопрос. Попробуй - расскажешь.
Скажем сначала повесить на eth0 и посмотреть, будет ли работать. Потом попробовать повесить на br0.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Vorlog

  • Любитель
  • *
  • Сообщений: 60
    • Просмотр профиля
По стандартному попробовал не работает,но на форумах читаю что работает но как это сделать не описанно.

 

Страница сгенерирована за 0.051 секунд. Запросов: 21.