Здравствуйте! =)
Второй день воюю с этим скриптом:#!/bin/bashПроблема в том, что фильтры словно не работают, работает только default 120, то есть как там и написано, я получаю общий канал для роутера (на котором и делаю) и для клиентов локальной сети 192.168.1.0/24. Попытка классифицировать трафик фильтрами ни разу не увенчалась успехом, непонятно почему, но весь трафик идет в дефолтный класс, хотя я уже и диапазон локальной сети задавал и адрес компьютера в ней 192.168.1.3, но не работает! Что на роутере, что в локальной сети - все идет в общий дефолтный класс. Что я делаю не так? Помогите разобраться, почему не работают фильтры!modprobe ifb
#ifconfig ifb0 up
ip link set dev ifb0 up
#ip addr add 192.168.0.3/32 dev ifb0tc 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
>Здравствуйте! =)
>Второй день воюю с этим скриптом:
>#!/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, но не работает! Что на роутере,
>что в локальной сети - все идет в общий дефолтный класс.
>Что я делаю не так? Помогите разобраться, почему не работают фильтры!
>
Но вроде не каша: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>
>Но вроде не каша:
>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 в этом разбирается.
но классификатор этого не понимает - ему в принципе все равно что внутри пакета,
т.к. он оперирует смещением от начала пакета, сравнением шаблона и маской.
Даааа... ну и какой тогда прок от ifb.. никак значит не реализовать его связку с ppp? Ладно, надоело возиться, наверное плюну и оставлю просто шейпинг на eth1, глядящей в сеть. Жаль что роутеру этот шейпинг побоку.А если как то можно подцепить ifb к eth0? Схема у меня такая:
Internet - ppp0(eth0) - Router - eth1 - LAN
>Даааа... ну и какой тогда прок от ifb.. никак значит не реализоватьну это на самом деле не совсем так. прок есть.
>его связку с ppp? Ладно, надоело возиться, наверное плюну и оставлю
>просто шейпинг на eth1, глядящей в сеть. Жаль что роутеру этот
>шейпинг побоку.если машина используется как рутер, то я совершенно не вижу причин
по которым не стоит делать управление трафиком именно на eth1, ведь
фактически ifb оперирует пакетами которые уже попали на компьютер.
>
>А если как то можно подцепить ifb к eth0? Схема у меня
>такая:
>Internet - ppp0(eth0) - Router - eth1 - LANя не совсем понял - в какую сторону нужно трафик обрезать ?
Машина именно как роутер. Сейчас у меня настроены правила iptables на ppp0, подвешена входящая дисциплина (ограничитель) на ppp0, которая обрезает (police drop) входящий ко мне из инета трафик до 896кбит, и на ppp0 же подвешана корневая дисциплина, которая шейпит трафик, идущий от меня и локальной сети в Инет (чтоб не забивать модем очередями). Все это для малого пинга. Фактически нужный шейпер висит на eth1, которая смотрит в локальную сеть, и он режет общий канал 896кбит на пользователей локальной сети. Проблема в том, что я, сидя на роутере (мой компьютер) не попадаю под действие шейпера на eth1, так как оказываюсь "до" него. А хочется разделать трафик для роутера и локальной сети одной общей дисциплиной. Что посоветуете?
>[оверквотинг удален]
>подвешена входящая дисциплина (ограничитель) на 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 10tc 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:120qdisc 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 ifb0qdisc 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
Видно, что Вы разбираетесь! :) Спасибо большое, чуть попозже попробую. На самом деле пишу шейпер к диплому, а по сути примеряю на себя, ибо пинг бывает ужасен. Еще бы ядро пропатчить (вот будет времени немного) на IMQ и ESQF, а то включишь торрент и пинг взлетает. Сегодня дописал шейпинг исходящего в Инет трафика, выглядит как то пароноидально. А вот эти скрипты попробую сегодня, очень хочется посадить роутер на общий канал. Как я понял тут Вы сразу ставите маркер на пакет прямо средствами фильтра (через вызов iptables oO) и по этому же маркеру фильтруете?
>Видно, что Вы разбираетесь! :) Спасибо большое, чуть попозже попробую. На самом
>деле пишу шейпер к диплому, а по сути примеряю на себя,
>ибо пинг бывает ужасен. Еще бы ядро пропатчить (вот будет времени
>немного) на IMQ и ESQF, а то включишь торрент и пинг
>взлетает. Сегодня дописал шейпинг исходящего в Инет трафика, выглядит как то
>пароноидально. А вот эти скрипты попробую сегодня, очень хочется посадить роутер
>на общий канал. Как я понял тут Вы сразу ставите маркер
>на пакет прямо средствами фильтра (через вызов iptables oO) и по
>этому же маркеру фильтруете?да, все дело в том, что пакеты доставляются на ifb до того как проходят iptables,
поэтому для их маркировки приходится применять iptables hook в tc. В принципе все равно
какую часть метаданных пакета изменять (что там есть можно посмотреть в структуре
sk_buff в include/linux/skduff.h). второй вариант меняет tcindex.
Ага, а как я понял с IMQ их туда можно передать из PREROUTING/POSTROUTING?
Попробовал оба варианта (вот они):
1.#!/bin/bashmodprobe ifb
#ifconfig ifb0 up
ip link set dev ifb0 up
#ip addr add 192.168.0.3/32 dev ifb0tc 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:120tc 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/bashmodprobe ifb
#ifconfig ifb0 up
ip link set dev ifb0 up
#ip addr add 192.168.0.3/32 dev ifb0tc 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 ifb0tc 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 continuetc 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, когда время появится.. :) Но в любом случае спасибо! за помощь! =)
по первому варианту можно tc -s filter sh dev ppp0 parent ffff: ?
Сейчас, секудночку... вот запуск и информация: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 0action 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 0filter 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 0action 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 0filter 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 0action 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 0filter 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 0root@gard-area51:/home/gard/run#
>[оверквотинг удален]
> 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
пакетов это не статистика.
OK! завтра буду дома покачаю с локалки с ноута и выведу статистику.. я наверное сглупил, применил этот скрипт взамен предыдущего, а.. оупс! трафик то не прогнал *sorry*. В общем завтра сразу напишу =)
Сменил приоритет для локальной сети: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 0action 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 0filter 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 0action 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 0filter 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 0action 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 0filter 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 0action 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 0filter 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 0root@gard-area51:/home/gard/run#
>
>root@gard-area51:/home/gard/run#
>
>Видно, не отлавливает таки.у тебя в фильтры вообще ничего не попадает.
строка - Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) как раз об этом
и говорит. ты уверен, что фильтры правильные ? у тебя часом маскарад не установлен ?
>у тебя часом маскарад не установлен ?Вообще то да, установлен.. оО, DNS динамический. Это с маскарадингом не работает? Блин! =)
>>у тебя часом маскарад не установлен ?
>
>Вообще то да, установлен.. оО, DNS динамический. Это с маскарадингом не работает?
>Блин! =)dns то ту причем ? на входящем интерфейсе ppp0 у тебя получатель localhost,
классификатор ничего не знает про маскарад.
Ой блин, ум за разум уже, не DnS а IP динамический.. получается, что только с сетевки, смотрящей в сеть, то есть с eth1 ограничивать обычными средствами? А начальная задумка не получится?
кратко и без скриптов огласи "изначальную задумку"
>кратко и без скриптов огласи "изначальную задумку"Есть инет по pppoe (ADSl), есть брандмауэр настоенный, использует маскарадинг для локальной сети. Нужно - разделить входящий трафик, но так как я сижу на роутере, то роутера это разделение тоже хорошо бы чтоб качалось. Сейчас шейпинг идет на интерфейсе eth1, который смотрит в локальную сеть, если я включаю закачку, локальная сеть начинает бороться за выживание, так как шейпер на этом интерфейсе меня не ограничивает. Вот, нужно сделать общий канал для роутера и для локальной сети.
>>кратко и без скриптов огласи "изначальную задумку"
>
>Есть инет по pppoe (ADSl), есть брандмауэр настоенный, использует маскарадинг для локальной
>сети. Нужно - разделить входящий трафик, но так как я сижу
>на роутере, то роутера это разделение тоже хорошо бы чтоб качалось.
>Сейчас шейпинг идет на интерфейсе eth1, который смотрит в локальную сеть,
>если я включаю закачку, локальная сеть начинает бороться за выживание, так
>как шейпер на этом интерфейсе меня не ограничивает. Вот, нужно сделать
>общий канал для роутера и для локальной сети.Лучше не сидеть на роутере, потому как ограничение скорости в данном случае излишний геморой. Но если хочется -- то есть такой небольшой user-space daemon -- shaperd -- в debian'е присутствует с давних времён.
хм.. ну ладно, что поделать.. оставлю пока так..