powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / ограничить канал общий канал
12 сообщений из 12, страница 1 из 1
ограничить канал общий канал
    #37279655
Фотография vista-rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть канал от провайдера, 30мбит, делаю ограничение на вход скорость на интерфейсе
eth1 - интернет

tc qdisc add dev eth1 root handle 1: htb default 1
tc class add dev eth1 parent 1: classid 1:1 htb rate 15mbit burst 15k

Но почему то не ограничивает.
что то еще добавить?
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37279715
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vista-rusделаю ограничение на вход скорость на интерфейсе

Но почему то не ограничивает.
нет ничего удивительного, ввиду того, что шейпер не умеет входящий трафик резать
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37279729
Фотография vista-rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что тогда мне делать? если у меня 3 внутренних интерфейсов?
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37281738
Фотография vista-rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а rate-limit в iptables тоже не умеет резать вход. трафик?
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37284251
Фотография vista-rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v-да, тут легче найти решение, чем получить ответ. :(
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37284401
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vista-rusv-да, тут легче найти решение, чем получить ответ. :(ага, особенно если протоколы не знать, то вообще тяжко
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37288058
Мимоходец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vista-rusа rate-limit в iptables тоже не умеет резать вход. трафик?
Это как? Дропать пакеты? Может. Но пойдут ретрансмиты от отправителя, так что это НЕ управление входящим трафиком. Протокол TCP имеет встроенное средство TCP Window сигнализации "передающим" о временной невозможности принять пакеты, дабы они временно приостанавливали передачу. Но в общем сдучае, для всех протоколов, входящими потоками управлять невозможно.
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37288088
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимоходецДропать пакеты?
А делать задержку перед отсылкой ACK?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37288094
Мимоходец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovМимоходецДропать пакеты?
А делать задержку перед отсылкой ACK?..

А если UDP ? Там нету ACK
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37343192
Glazz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может чем то вам поможет мой шейпер, я новичек но вроде работает, заодно народ и покритикует и поправят меня если не прав

cat /home/glaz/rc.postfirewall

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
#!/bin/sh
modprobe ifb
export TC="/sbin/tc"
#внешний
export DEV="eth1"
#внутренний
export DEV_LOCAL="eth0.0001"

# koi8r
# цель управлять входящим(!!!) траффиком в разрезе портов дабы \
# пользователи торентов  не забивали канал ПОЛНОСТЬЮ закачаками \
# не давая нормально функционировать dns, icmp, почте, ssh, mstsc, http и прочему служебному траффику.

echo "поднимаем ifb0 интерфейс"
ip link set dev ifb0 up
echo "поднимаем ifb1 интерфейс"
ip link set dev ifb1 up

echo "скидываем дисциплины c интерфейсов "
#удаляем корневые дисциплины на наших интерфейсах
$TC qdisc del dev $DEV root  2 > /dev/null > /dev/null
$TC qdisc del dev $DEV ingress  2 > /dev/null > /dev/null
$TC qdisc del dev $DEV_LOCAL root  2 > /dev/null > /dev/null
$TC qdisc del dev $DEV_LOCAL ingress  2 > /dev/null > /dev/null
$TC qdisc del dev ifb0 root  2 > /dev/null > /dev/null
$TC qdisc del dev ifb0 ingress  2 > /dev/null > /dev/null
$TC qdisc del dev ifb1 root  2 > /dev/null > /dev/null
$TC qdisc del dev ifb1 ingress  2 > /dev/null > /dev/null

echo "создаем дисциплину на ifb0"
#создаем дисциплину htb привязаную к псевдо-интерфейсу  ifb0
#которую будет обслуживать класс  1 : 0  и с классом  2  по умолчанию
$TC qdisc add dev ifb0 root handle  1 : htb default  2 
echo "создаем классы к дисциплине на ifb0"
#создаем корневой класс привязывая его к корневой дисциплине
$TC class add dev ifb0 parent  1 : classid  1 : 1  htb rate 15mbit ceil 20mbit burst 512k quantum  32000  
#класс  2  по умолчанию   - в нем торрент закачки делятся меж собой и имеют наименьший приоритет к остальному траффику
$TC class add dev ifb0 parent  1 : 1  classid  1 : 2  htb rate 1kbps ceil 500kbps burst 128k quantum  5000  prio  10 
#класс  3  для http 
$TC class add dev ifb0 parent  1 : 1  classid  1 : 3  htb rate 1kbps ceil 15mbit burst 128k quantum  10000   prio  3 
#класс  4  для почты
$TC class add dev ifb0 parent  1 : 1  classid  1 : 4  htb rate 16kbps ceil 256kbps burst 64k quantum  1500  prio  2 
#класс  5  для упр и  уд доступа 
$TC class add dev ifb0 parent  1 : 1  classid  1 : 5  htb rate 16kbps ceil 10mbit burst 64k quantum  1500  prio  0 
#класс  6  для http с внешки
$TC class add dev ifb0 parent  1 : 1  classid  1 : 6  htb rate 1kbps ceil 1mbit burst 16k quantum  3000  prio  6 
#класс  7  для icmp
$TC class add dev ifb0 parent  1 : 1  classid  1 : 7  htb rate 1kbps ceil 32kbps burst 8k quantum  1500  prio  0 

echo "создаем фильтры к классам на ifb0"
#quantum=3DRate/r2q  и д.б.= 1500 (MTU).. 60000   - извлекаемый размер из очереди за раз
#теперь фильтры для перенаправления траффика в классы, т.к. на входящем до ната то только по портам
#echo "создаем фильтры для классов"
#SSH
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  22  0xffff flowid  1 : 5 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  22  0xffff flowid  1 : 5 
#внешний траффик к терминальному серверу
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  3389  0xffff flowid  1 : 5 
#и обратно! а то улетит в класс  2  к торрентам
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  3389  0xffff flowid  1 : 5 
#тож надо
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  15100  0xffff flowid  1 : 5 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  15100  0xffff flowid  1 : 5 
#MAIL
##mail извне
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  25  0xffff flowid  1 : 4 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  110  0xffff flowid  1 : 4 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  143  0xffff flowid  1 : 4 
##mail ициированого соеденения с локалки вовне - входящий траффик от майл сервера
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  25  0xffff flowid  1 : 4 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  110  0xffff flowid  1 : 4 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  143  0xffff flowid  1 : 4 

#внешний HTTP трафф(на наши сайты)
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  443  0xffff flowid  1 : 6 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  80  0xffff flowid  1 : 6 

#icmp+dns
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip protocol  1  0xff flowid  1 : 7 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  53  0xffff flowid  1 : 7 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip dport  53  0xffff flowid  1 : 7 

#squid (прозрачный так что и форварды все туточки)
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  443  0xffff flowid  1 : 3 
$TC filter add dev ifb0 parent  1 : protocol ip prio  1  u32 match ip sport  80  0xffff flowid  1 : 3 

#пример по источнику - но у меня все через squid и уже там я ввожу ограничения канала по пользователям,подсеткам и т.п.
#tc filter add dev ifb0 parent  1 : 0  protocol ip prio  1  u32 match ip src  192 . 0 . 0 . 0 / 8  flowid  1 : 2 

#включить перенаправление траффика с DEV$ на ifb0
#вешается дисциплина ingress - входящего траффика
# и добавляется пустой фильтр и action для редиректа на ifb0
# адрес ffff: зарезервирован для класса обсл. входящий траффик

echo "включаем перенаправление c $DEV на ifb0"
$TC qdisc add dev $DEV ingress handle ffff:
$TC filter add dev $DEV parent ffff: protocol ip u32 match u32  0   0  \
action mirred egress redirect dev ifb0





#теперь неплохобы занятся исходящим траффиком(про NAT незабываем если захотим по подсеткам резать)
echo "создаем дисциплину htb на ifb1"
$TC qdisc add dev ifb1 root handle  1 : htb default  2 
echo "создаем классы к дисциплине на ifb1"
#создаем корневой класс привязывая его к корневой дисциплине
$TC class add dev ifb1 parent  1 : classid  1 : 1  htb rate 15mbit ceil 20mbit burst 512k quantum  15000  
#класс  2  по умолчанию   - в нем торрент ОТДАЧИ делятся меж собой и имеют наименьший приоритет к остальному траффику
$TC class add dev ifb1 parent  1 : 1  classid  1 : 2  htb rate 1kbps ceil 256kbps burst 16k quantum  1500  prio  10 
#класс  3  upload для http пользователей локалки 
$TC class add dev ifb1 parent  1 : 1  classid  1 : 3  htb rate 1kbps ceil 15mbit burst 512k quantum  10000  prio  3 
#класс  4  для почты
$TC class add dev ifb1 parent  1 : 1  classid  1 : 4  htb rate 16kbps ceil 64kbps burst 10k quantum  1500  prio  2 
#класс  5  для упр и  уд доступа 
$TC class add dev ifb1 parent  1 : 1  classid  1 : 5  htb rate 16kbps ceil 10mbit burst 10k quantum  5000  prio  0 
#класс  6  для http запросов с внешки
$TC class add dev ifb1 parent  1 : 1  classid  1 : 6  htb rate 1kbps ceil 1mbit burst 16k quantum  3000  prio  6 
#класс  7  для icmp
$TC class add dev ifb1 parent  1 : 1  classid  1 : 7  htb rate 1kbps ceil 32kbps burst 1k quantum  3000  prio  0 

echo "создаем фильтры к классам на ifb1"
#SSH
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  22  0xffff flowid  1 : 5 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  22  0xffff flowid  1 : 5 
#терминальный траффик
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  3389  0xffff flowid  1 : 5 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  3389  0xffff flowid  1 : 5 
#MAIL
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  25  0xffff flowid  1 : 4 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  110  0xffff flowid  1 : 4 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  143  0xffff flowid  1 : 4 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  25  0xffff flowid  1 : 4 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  110  0xffff flowid  1 : 4 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  143  0xffff flowid  1 : 4 

#отдает наш HTTP сервер
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  443  0xffff flowid  1 : 6 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  80  0xffff flowid  1 : 6 

#icmp+dns
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip protocol  1  0xff flowid  1 : 7 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip sport  53  0xffff flowid  1 : 7 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  53  0xffff flowid  1 : 7 

#http траффик извне
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  443  0xffff flowid  1 : 3 
$TC filter add dev ifb1 parent  1 : protocol ip prio  1  u32 match ip dport  80  0xffff flowid  1 : 3 



#исходящий траффик заворачиваем на ifb1 добавляя фильтр на главном интерфейсе
echo "перенаправляем исходящий траффик на ifb1"
#добавим дисциплину prio
$TC qdisc add dev $DEV root handle  1 : prio
#добавим фильтр исходящего траффика для этой дисциплины
$TC filter add dev $DEV parent  1 : protocol ip u32 match u32  0   0  \
action mirred egress redirect dev ifb1


##Usage: mirred <DIRECTION> <ACTION> [index INDEX] <dev DEVICENAME>
##where:
##        DIRECTION := <ingress | egress>
##                ACTION := <mirror | redirect>
##                        INDEX  is the specific policy instance id
##                                DEVICENAME is the devicename

#mbps =  1024  kbps =  1024  *  1024  bps => byte/s
#mbit =  1024  kbit => kilo bit/s.
#mb =  1024  kb =  1024  *  1024  b => byte
#mbit =  1024  kbit => kilo bit    

#ip link - сущ. интерфейсы и их состояние
#ip link list - покажет конфигурацию интерфейсов;
#ip address show - покажет IP адреса на интерфейсах;
#ip route show - покажет таблицу маршрутов main (сравните с route -n);
#ip neigh show - покажет таблицу ARP;
#ip rule list - покажет список правил, согласно которым принимается решение о маршрутизации.
#tc -s class  show dev ifb0 - все классы висящие на устройстве и ТРАФФИК ПО НИМ
#tc -s filter show dev ifb0 parent  1 : -фильтры на коренном классе
#tc -s class  show dev ifb0 parent  1 : -классы наследники коренного класса
#tc -s qdisc show dev ifb0  #наличие пакетов в очереди
# http://speedtest.net - тестрировать скорость на клиенте(flash player gui)
# vnstat -i eth1 -l  - текущая скорость трансфера
# vnstat -i eth1 -h  - почасам.. и т.д. -d -w -m
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37511767
xneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите плиз, как можно отфильтровать трафик учитывая одновременно IP получателя и маркировку пакета? Можно это сделать классификатором u32 ?
...
Рейтинг: 0 / 0
ограничить канал общий канал
    #37511782
xneo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или может есть ещё какойто способ...
Моя задача: 2 внешних канала(провайдера), 1 внутренний. Надо ограничить входящий трафик к пользователю + повысить приоритет прохождения трафика к одному из провайдеров в разрезе этого пользователя. Тоесть к примеру при использовании торрента чтобы большая часть трафика шла через указанного провайдера.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / ограничить канал общий канал
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]