The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Шейпинг в linux... Не работают фильтры с псевдоустройством I..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 27-Апр-09, 12:45 
Здравствуйте! =)
Второй день воюю с этим скриптом:
#!/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, но не работает! Что на роутере, что в локальной сети - все идет в общий дефолтный класс. Что я делаю не так? Помогите разобраться, почему не работают фильтры!
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 27-Апр-09, 13:24 
>Здравствуйте! =)
>Второй день воюю с этим скриптом:
>
#!/bin/bash 
>

не будет работать ifb с ppp (c ethernet или tap устройством - без проблем).
если ты посмотришь tcpdump на ifb0, то увидишь там полнейшую кашу, т.к. на
ifb0 копируется весь пакет включая транспортные данные.
поэтому в данном случае нужно
- либо использовать либо imq,
- либо маркировать пакеты на входе и препринимать какие-то
  действия на исходящих интерфейсах,
- либо использовать на вхоядщем интерфейсе iptables+limit
>[оверквотинг удален]
>match ip dst 192.168.1.2 flowid 1:120

Проблема в том, что фильтры словно

>не работают, работает только default 120, то есть как там и
>написано, я получаю общий канал для роутера (на котором и делаю)
>и для клиентов локальной сети 192.168.1.0/24. Попытка классифицировать трафик фильтрами ни
>разу не увенчалась успехом, непонятно почему, но весь трафик идет в
>дефолтный класс, хотя я уже и диапазон локальной сети задавал и
>адрес компьютера в ней 192.168.1.3, но не работает! Что на роутере,
>что в локальной сети - все идет в общий дефолтный класс.
>Что я делаю не так? Помогите разобраться, почему не работают фильтры!
>

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 27-Апр-09, 13:27 
Но вроде не каша:
root@gard-area51:/home/gard/run# tcpdump -i ifb0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ifb0, link-type EN10MB (Ethernet), capture size 96 bytes
15:26:50.013677 PPPoE  [ses 0xc4b4] IP broadband-77-37-166-28.nationalcablenetworks.ru.42487 > 188.16.14.143.43414: . 459094063:459095431(1368) ack 2191272929 win 65535 <nop,nop,timestamp 2171235 16757972>
15:26:50.058288 PPPoE  [ses 0xc4b4] IP 94.41.70.16.dynamic.ufanet.ru.40059 > 188.16.14.143.46224: . 678784163:678785511(1348) ack 402949569 win 64947 <nop,nop,timestamp 263323 16756649>
15:26:50.102815 PPPoE  [ses 0xc4b4] IP 94.41.70.16.dynamic.ufanet.ru.40059 > 188.16.14.143.46224: . 1348:2696(1348) ack 1 win 64947 <nop,nop,timestamp 263323 16756649>
15:26:50.147298 PPPoE  [ses 0xc4b4] IP 94.41.70.16.dynamic.ufanet.ru.40059 > 188.16.14.143.46224: P 2696:2917(221) ack 1 win 64947 <nop,nop,timestamp 263323 16756649>

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 27-Апр-09, 14:08 
>Но вроде не каша:
>
root@gard-area51:/home/gard/run# tcpdump -i ifb0 
>tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
>
>listening on ifb0, link-type EN10MB (Ethernet), capture size 96 bytes
>15:26:50.013677 PPPoE  [ses 0xc4b4] IP broadband-77-37-166-28.nationalcablenetworks.ru.42487 > 188.16.14.143.43414: . 459094063:459095431(1368) ack 2191272929 win 65535 <nop,nop,timestamp 2171235 16757972>
>15:26:50.058288 PPPoE  [ses 0xc4b4] IP 94.41.70.16.dynamic.ufanet.ru.40059 > 188.16.14.143.46224: . 678784163:678785511(1348) ack 402949569 win 64947 <nop,nop,timestamp 263323 16756649>
>15:26:50.102815 PPPoE  [ses 0xc4b4] IP 94.41.70.16.dynamic.ufanet.ru.40059 > 188.16.14.143.46224: . 1348:2696(1348) ack 1 win 64947 <nop,nop,timestamp 263323 16756649>
>15:26:50.147298 PPPoE  [ses 0xc4b4] IP 94.41.70.16.dynamic.ufanet.ru.40059 > 188.16.14.143.46224: P 2696:2917(221) ack 1 win 64947 <nop,nop,timestamp 263323 16756649>
>

в данном случае просто повезло, т.к. это pppoe и tcpdump в этом разбирается.
но классификатор этого не понимает - ему в принципе все равно что внутри пакета,
т.к. он оперирует смещением от начала пакета, сравнением шаблона и маской.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 27-Апр-09, 14:12 
Даааа... ну и какой тогда прок от ifb.. никак значит не реализовать его связку с ppp? Ладно, надоело возиться, наверное плюну и оставлю просто шейпинг на eth1, глядящей в сеть. Жаль что роутеру этот шейпинг побоку.

А если как то можно подцепить ifb к eth0? Схема у меня такая:
Internet - ppp0(eth0) - Router - eth1 - LAN

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 27-Апр-09, 16:35 
>Даааа... ну и какой тогда прок от ifb.. никак значит не реализовать

ну это на самом деле не совсем так. прок есть.
>его связку с ppp? Ладно, надоело возиться, наверное плюну и оставлю
>просто шейпинг на eth1, глядящей в сеть. Жаль что роутеру этот
>шейпинг побоку.

если машина используется как рутер, то я совершенно не вижу причин
по которым не стоит делать управление трафиком именно на eth1, ведь
фактически ifb оперирует пакетами которые уже попали на компьютер.
>
>А если как то можно подцепить ifb к eth0? Схема у меня
>такая:
>Internet - ppp0(eth0) - Router - eth1 - LAN

я не совсем понял - в какую сторону нужно трафик обрезать ?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard (ok) on 27-Апр-09, 21:28 
Машина именно как роутер. Сейчас у меня настроены правила iptables на ppp0, подвешена входящая дисциплина (ограничитель) на ppp0, которая обрезает (police drop) входящий ко мне из инета трафик до 896кбит, и на ppp0 же подвешана корневая дисциплина, которая шейпит трафик, идущий от меня и локальной сети в Инет (чтоб не забивать модем очередями). Все это для малого пинга. Фактически нужный шейпер висит на eth1, которая смотрит в локальную сеть, и он режет общий канал 896кбит на пользователей локальной сети. Проблема в том, что я, сидя на роутере (мой компьютер) не попадаю под действие шейпера на eth1, так как оказываюсь "до" него. А хочется разделать трафик для роутера и локальной сети одной общей дисциплиной. Что посоветуете?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 28-Апр-09, 11:35 
>[оверквотинг удален]
>подвешена входящая дисциплина (ограничитель) на ppp0, которая обрезает (police drop) входящий
>ко мне из инета трафик до 896кбит, и на ppp0 же
>подвешана корневая дисциплина, которая шейпит трафик, идущий от меня и локальной
>сети в Инет (чтоб не забивать модем очередями). Все это для
>малого пинга. Фактически нужный шейпер висит на eth1, которая смотрит в
>локальную сеть, и он режет общий канал 896кбит на пользователей локальной
>сети. Проблема в том, что я, сидя на роутере (мой компьютер)
>не попадаю под действие шейпера на eth1, так как оказываюсь "до"
>него. А хочется разделать трафик для роутера и локальной сети одной
>общей дисциплиной. Что посоветуете?

здесь дело такое - если нужно только ограничение полосы пропускания и не нужно
переупорядочивать и приоритизировать пакеты, то вполне подойдет dropper на
входящем интерфейсе. как-то сложилось мнение, что shaper это более православное
решение, чем dropper, но ни в литературе, ни по личному опыту не могу сказать, что
результаты применения shaper vs dropper различаются - результат получается примерно
одинаковый.
если же нужно что-то более сложное, то наиболее простой путь - применение imq, которое
является как и ifb промежуточным псевдоустройством, на котром можно организовывать
очереди, но в отличие от ifb imq не имеет ограничений по типу интерфейса.
если же не хочется патчить ядро и iptables, то есть еще варианты, но их стоит проверить,
например попробовать зацепиться на метаданные пакеты, например fwmark:

tc -batch << EOF

qdisc add dev ifb0 root handle 1: htb default 120
class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
class add dev ifb0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 1
qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 384kbit prio 2
class add dev ifb0 parent 1:20 classid 1:110 htb rate 384kbit ceil 384kbit prio 3
qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
class add dev ifb0 parent 1:20 classid 1:120 htb rate 256kbit ceil 256kbit prio 4
qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10

tc filter add dev ifb0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
tc filter add dev ifb0 parent 1: protocol ip prio 4 handle 20 fw flowid 1:20
tc filter add dev ifb0 parent 1: protocol ip prio 3 handle 110 fw flowid 1:110
tc filter add dev ifb0 parent 1: protocol ip prio 5 handle 120 fw  flowid 1:120

qdisc add dev ppp0 ingress
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 \
   action ipt -j MARK --set-mark 20 \
   action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.1 \
   action ipt -j MARK --set-mark 10 \
   action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.3 \
   action ipt -j MARK --set-mark 110 \
   action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.2 \
   action ipt -j MARK --set-mark 120 \
   action continue
filter add dev ppp0 parent fff: protocol ip pref 2 u32 match u32 0 0 \
   action mirrer egress redirect dev ifb0
EOF
если же этот вариант не прокатит, то можно попробовать все описать при помощи generic
action + pipe, но это будет значительно менее читабельно и более громоздко

пока писал это вспомнил еще один вариант

tc -batch <<EOF

qdisc add dev ppp0 ingress
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 flowid :20 action continue
filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.1 flowid :10 action continue
......
filter add dev ppp0 parent fff: protocol ip pref 2 u32 match u32 0 0 \
   action mirrer egress redirect dev ifb0

qdisc add dev ifb0 root handle 1: htb default 120
class add dev ifb0 parent 1: classid 1:1 htb rate 512kbit ceil 512kbit
class add dev ifb0 parent 1:1 classid 1:10 htb rate 512kbit ceil 512kbit prio 1
qdisc add dev ifb0 parent 1:10 handle 110: sfq perturb 10
class add dev ifb0 parent 1:1 classid 1:20 htb rate 384kbit ceil 384kbit prio 2
class add dev ifb0 parent 1:20 classid 1:110 htb rate 384kbit ceil 384kbit prio 3
qdisc add dev ifb0 parent 1:110 handle 110: sfq perturb 10
class add dev ifb0 parent 1:20 classid 1:120 htb rate 256kbit ceil 256kbit prio 4
qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10
EOF

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 28-Апр-09, 15:58 
Видно, что Вы разбираетесь! :) Спасибо большое, чуть попозже попробую. На самом деле пишу шейпер к диплому, а по сути примеряю на себя, ибо пинг бывает ужасен. Еще бы ядро пропатчить (вот будет времени немного) на IMQ и ESQF, а то включишь торрент и пинг взлетает. Сегодня дописал шейпинг исходящего в Инет трафика, выглядит как то пароноидально. А вот эти скрипты попробую сегодня, очень хочется посадить роутер на общий канал. Как я понял тут Вы сразу ставите маркер на пакет прямо средствами фильтра (через вызов iptables oO) и по этому же маркеру фильтруете?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 28-Апр-09, 16:15 
>Видно, что Вы разбираетесь! :) Спасибо большое, чуть попозже попробую. На самом
>деле пишу шейпер к диплому, а по сути примеряю на себя,
>ибо пинг бывает ужасен. Еще бы ядро пропатчить (вот будет времени
>немного) на IMQ и ESQF, а то включишь торрент и пинг
>взлетает. Сегодня дописал шейпинг исходящего в Инет трафика, выглядит как то
>пароноидально. А вот эти скрипты попробую сегодня, очень хочется посадить роутер
>на общий канал. Как я понял тут Вы сразу ставите маркер
>на пакет прямо средствами фильтра (через вызов iptables oO) и по
>этому же маркеру фильтруете?

да, все дело в том, что пакеты доставляются на ifb до того как проходят iptables,
поэтому для их маркировки приходится применять iptables hook в tc. В принципе все равно
какую часть метаданных пакета изменять (что там есть можно посмотреть в структуре
sk_buff в include/linux/skduff.h). второй вариант меняет tcindex.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 28-Апр-09, 16:52 
Ага, а как я понял с IMQ их туда можно передать из PREROUTING/POSTROUTING?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 29-Апр-09, 15:15 
Попробовал оба варианта (вот они):
1.
#!/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 128kbit ceil 128kbit 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 512kbit prio 2
            #user 1
            tc class add dev ifb0 parent 1:20 classid 1:110 htb rate 64kbit ceil 128kbit 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 128kbit ceil 384kbit prio 4
                tc qdisc add dev ifb0 parent 1:120 handle 120: sfq perturb 10

#filters
tc filter add dev ifb0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10
tc filter add dev ifb0 parent 1: protocol ip prio 4 handle 20 fw flowid 1:20
tc filter add dev ifb0 parent 1: protocol ip prio 3 handle 110 fw flowid 1:110
tc filter add dev ifb0 parent 1: protocol ip prio 5 handle 120 fw  flowid 1:120

tc qdisc add dev ppp0 ingress handle ffff:
#tc filter add dev ppp0 parent ffff: protocol ip pref 1 u32 match ip dst 192.168.1.0/24 \
   #action ipt -j MARK --set-mark 20 \
   #action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 1 u32 match ip dst 192.168.1.1 \
   action ipt -j MARK --set-mark 10 \
   action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 2 u32 match ip dst 192.168.1.3 \
   action ipt -j MARK --set-mark 110 \
   action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 3 u32 match ip dst 192.168.1.2 \
   action ipt -j MARK --set-mark 120 \
   action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 10 u32 match u32 0 0 \
   action mirred egress redirect dev ifb0


2.
#!/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

tc qdisc add dev ppp0 ingress handle ffff:
tc filter add dev ppp0 parent ffff: protocol ip prio 1 u32 match ip dst 192.168.1.0/24 flowid :20 action continue
#tc filter add dev ppp0 parent ffff: protocol ip prio 2 u32 match ip dst 192.168.1.1 flowid :10 action continue
#tc filter add dev ppp0 parent ffff: protocol ip prio 3 u32 match ip dst 192.168.1.3 flowid :110 action continue

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

#======interface ifb0======
tc qdisc add dev ifb0 root handle 1: htb default 20
    #root class
    tc class add dev ifb0 parent 1: classid 1:1 htb rate 896kbit ceil 896kbit
        #admin
        tc class add dev ifb0 parent 1:1 classid 1:10 htb rate 640kbit ceil 896kbit 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 256kbit ceil 256kbit prio 2

#filters

Один раз показалось, что скорость изменилась, но при внимательном изучении вышло что опять-таки все идет лишь в дефолтный класс, борьба за полосу в котором происходит между роутером и локальной сетью по законам "кто успел тот и съел", то есть никакого шейпинга добиться не удалось. Фильтры видимо не хотят работать. Начинаю подумывать об IMQ, когда время появится.. :) Но в любом случае спасибо! за помощь! =)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 29-Апр-09, 16:50 
по первому варианту можно tc -s filter sh dev ppp0 parent ffff: ?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 29-Апр-09, 16:58 
Сейчас, секудночку... вот запуск и информация:
root@gard-area51:/home/gard/run# ./new3
RTNETLINK answers: File exists
tablename: mangle hook: NF_IP_PRE_ROUTING
    target: MARK set 0xa  index 0
tablename: mangle hook: NF_IP_PRE_ROUTING
    target: MARK set 0x6e  index 0
tablename: mangle hook: NF_IP_PRE_ROUTING
    target: MARK set 0x78  index 0
Action 4 device ifb0 ifindex 6
root@gard-area51:/home/gard/run# tc -s filter sh dev ppp0 parent ffff:
filter protocol ip pref 1 u32
filter protocol ip pref 1 u32 fh 800: ht divisor 1
filter protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 terminal flowid ???
  dst 192.168.1.1/32
    action order 1: tablename: mangle  hook: NF_IP_PRE_ROUTING
    target MARK set 0xa  
    index 76 ref 1 bind 1 installed 15 sec used 15 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    action order 2: gact action continue
     random type none pass val 0
     index 104 ref 1 bind 1 installed 15 sec used 15 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

filter protocol ip pref 2 u32
filter protocol ip pref 2 u32 fh 801: ht divisor 1
filter protocol ip pref 2 u32 fh 801::800 order 2048 key ht 801 bkt 0 terminal flowid ???
  dst 192.168.1.3/32
    action order 33: tablename: mangle  hook: NF_IP_PRE_ROUTING
    target MARK set 0x6e  
    index 77 ref 1 bind 1 installed 15 sec used 15 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    action order 34: gact action continue
     random type none pass val 0
     index 105 ref 1 bind 1 installed 15 sec used 15 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

filter protocol ip pref 3 u32
filter protocol ip pref 3 u32 fh 802: ht divisor 1
filter protocol ip pref 3 u32 fh 802::800 order 2048 key ht 802 bkt 0 terminal flowid ???
  dst 192.168.1.2/32
    action order 65: tablename: mangle  hook: NF_IP_PRE_ROUTING
    target MARK set 0x78  
    index 78 ref 1 bind 1 installed 15 sec used 15 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    action order 66: gact action continue
     random type none pass val 0
     index 106 ref 1 bind 1 installed 15 sec used 15 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

filter protocol ip pref 10 u32
filter protocol ip pref 10 u32 fh 803: ht divisor 1
filter protocol ip pref 10 u32 fh 803::800 order 2048 key ht 803 bkt 0 terminal flowid ???
  match 00000000/00000000 at 0
    action order 97: mirred (Egress Redirect to device ifb0) stolen
    index 62 ref 1 bind 1 installed 15 sec used 2 sec
    Action statistics:
    Sent 986 bytes 11 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

root@gard-area51:/home/gard/run#


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 29-Апр-09, 18:06 
>[оверквотинг удален]
>  index 62 ref 1 bind 1 installed 15 sec used
>2 sec
>  Action statistics:
> Sent 986 bytes 11 pkt (dropped 0, overlimits 0 requeues 0)
>
> rate 0bit 0pps backlog 0b 0p requeues 0
>
>root@gard-area51:/home/gard/run#
>
>

пока я вижу, что ни в один фильтр ничего не попало. пускай некотрое время поработает - 11
пакетов это не статистика.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard (ok) on 29-Апр-09, 20:32 
OK! завтра буду дома покачаю с локалки с ноута и выведу статистику.. я наверное сглупил, применил этот скрипт взамен предыдущего, а.. оупс! трафик то не прогнал *sorry*. В общем завтра сразу напишу =)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 30-Апр-09, 14:25 
Сменил приоритет для локальной сети:
tc qdisc add dev ppp0 ingress handle ffff:
tc filter add dev ppp0 parent ffff: protocol ip prio 5 u32 match ip dst 192.168.1.0/24 \
   action ipt -j MARK --set-mark 20 \
   action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 1 u32 match ip dst 192.168.1.1 \
   action ipt -j MARK --set-mark 10 \
   action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 2 u32 match ip dst 192.168.1.3 \
   action ipt -j MARK --set-mark 110 \
   action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 3 u32 match ip dst 192.168.1.2 \
   action ipt -j MARK --set-mark 120 \
   action continue
tc filter add dev ppp0 parent ffff: protocol ip prio 10 u32 match u32 0 0 \
   action mirred egress redirect dev ifb0

Качал с ноутбука 192.168.1.3 адрес:
root@gard-area51:/home/gard/run# tc -s filter sh dev ppp0 parent ffff:
filter protocol ip pref 1 u32
filter protocol ip pref 1 u32 fh 801: ht divisor 1
filter protocol ip pref 1 u32 fh 801::800 order 2048 key ht 801 bkt 0 terminal flowid ???
  dst 192.168.1.1/32
    action order 1: tablename: mangle  hook: NF_IP_PRE_ROUTING
    target MARK set 0xa  
    index 83 ref 1 bind 1 installed 192 sec used 192 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    action order 2: gact action continue
     random type none pass val 0
     index 111 ref 1 bind 1 installed 192 sec used 192 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

filter protocol ip pref 2 u32
filter protocol ip pref 2 u32 fh 802: ht divisor 1
filter protocol ip pref 2 u32 fh 802::800 order 2048 key ht 802 bkt 0 terminal flowid ???
  dst 192.168.1.3/32
    action order 33: tablename: mangle  hook: NF_IP_PRE_ROUTING
    target MARK set 0x6e  
    index 84 ref 1 bind 1 installed 192 sec used 192 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    action order 34: gact action continue
     random type none pass val 0
     index 112 ref 1 bind 1 installed 192 sec used 192 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

filter protocol ip pref 3 u32
filter protocol ip pref 3 u32 fh 803: ht divisor 1
filter protocol ip pref 3 u32 fh 803::800 order 2048 key ht 803 bkt 0 terminal flowid ???
  dst 192.168.1.2/32
    action order 65: tablename: mangle  hook: NF_IP_PRE_ROUTING
    target MARK set 0x78  
    index 85 ref 1 bind 1 installed 192 sec used 192 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    action order 66: gact action continue
     random type none pass val 0
     index 113 ref 1 bind 1 installed 192 sec used 192 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

filter protocol ip pref 5 u32
filter protocol ip pref 5 u32 fh 800: ht divisor 1
filter protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0 terminal flowid ???
  dst 192.168.1.0/24
    action order 97: tablename: mangle  hook: NF_IP_PRE_ROUTING
    target MARK set 0x14  
    index 82 ref 1 bind 1 installed 193 sec used 193 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    action order 98: gact action continue
     random type none pass val 0
     index 110 ref 1 bind 1 installed 193 sec used 193 sec
    Action statistics:
    Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

filter protocol ip pref 10 u32
filter protocol ip pref 10 u32 fh 804: ht divisor 1
filter protocol ip pref 10 u32 fh 804::800 order 2048 key ht 804 bkt 0 terminal flowid ???
  match 00000000/00000000 at 0
    action order 129: mirred (Egress Redirect to device ifb0) stolen
    index 64 ref 1 bind 1 installed 192 sec
    Action statistics:
    Sent 7238108 bytes 5548 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

root@gard-area51:/home/gard/run#

Видно, не отлавливает таки.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 30-Апр-09, 14:59 

>
>root@gard-area51:/home/gard/run#
>
>Видно, не отлавливает таки.

у тебя в фильтры вообще ничего не попадает.
строка - Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) как раз об этом
и говорит. ты уверен, что фильтры правильные ? у тебя часом маскарад не установлен ?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 30-Апр-09, 15:20 
>у тебя часом маскарад не установлен ?

Вообще то да, установлен.. оО, DNS динамический. Это с маскарадингом не работает? Блин! =)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от Z0termaNN (ok) on 30-Апр-09, 18:02 
>>у тебя часом маскарад не установлен ?
>
>Вообще то да, установлен.. оО, DNS динамический. Это с маскарадингом не работает?
>Блин! =)

dns то ту причем ? на входящем интерфейсе ppp0 у тебя получатель localhost,
классификатор ничего не знает про маскарад.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

20. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard (ok) on 30-Апр-09, 18:54 
Ой блин, ум за разум уже, не DnS а IP динамический.. получается, что только с сетевки, смотрящей в сеть, то есть с eth1 ограничивать обычными средствами? А начальная задумка не получится?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

21. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от pavel_simple (ok) on 30-Апр-09, 19:52 
кратко и без скриптов огласи "изначальную задумку"
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

22. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard (ok) on 30-Апр-09, 23:34 
>кратко и без скриптов огласи "изначальную задумку"

Есть инет по pppoe (ADSl), есть брандмауэр настоенный, использует маскарадинг для локальной сети. Нужно - разделить входящий трафик, но так как я сижу на роутере, то роутера это разделение тоже хорошо бы чтоб качалось. Сейчас шейпинг идет на интерфейсе eth1, который смотрит в локальную сеть, если я включаю закачку, локальная сеть начинает бороться за выживание, так как шейпер на этом интерфейсе меня не ограничивает. Вот, нужно сделать общий канал для роутера и для локальной сети.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

23. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от pavel_simple (ok) on 01-Май-09, 00:36 
>>кратко и без скриптов огласи "изначальную задумку"
>
>Есть инет по pppoe (ADSl), есть брандмауэр настоенный, использует маскарадинг для локальной
>сети. Нужно - разделить входящий трафик, но так как я сижу
>на роутере, то роутера это разделение тоже хорошо бы чтоб качалось.
>Сейчас шейпинг идет на интерфейсе eth1, который смотрит в локальную сеть,
>если я включаю закачку, локальная сеть начинает бороться за выживание, так
>как шейпер на этом интерфейсе меня не ограничивает. Вот, нужно сделать
>общий канал для роутера и для локальной сети.

Лучше не сидеть на роутере, потому как ограничение скорости в данном случае излишний геморой. Но если хочется -- то есть такой небольшой user-space daemon -- shaperd -- в debian'е присутствует с давних времён.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

24. "Шейпинг в linux... Не работают фильтры с псевдоустройством I..."  
Сообщение от gard email(ok) on 01-Май-09, 11:40 
хм.. ну ладно, что поделать.. оставлю пока так..
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру