LINUX.ORG.RU

Приложи от 3.17. Если будут режекты или не скомпилируется - значит не подходит.

Если скомпилируется, значит на 99.9% будет работать.

vel ★★★★★
()

Я использую ядро Liquorix, там уже давно 3.18

Wind ★★★
()
Ответ на: комментарий от ne-vlezay

там режекты достаточно простые.

до выхода 3.18.3 нет смысла дергаться.

vel ★★★★★
()
Ответ на: комментарий от ne-vlezay

там рядом с 3.17.3 лежит патч linux-imqmq-3.18.2.patch.xz

Оно компилируется, но на работоспособность не проверялось.

Напиши, если оно работает.

vel ★★★★★
()
Ответ на: комментарий от ne-vlezay

тогда можно будет на него посмотреть/поставить.

Не горю желанием пройтись по граблям в первом ряду :)

Сетевой стек там правили - значит что-то сломали.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от ne-vlezay

«Да» - это что ?

Я перезалил патч.

Транзитный трафик ограничивается в любом месте (prerouting/postrouting)

Входящий ограничивается в prerouting.

Исходящий локальный трафик не ограничивается :( Проверял на 3.14, 3.17, 3.18.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Возможно кто-то сталкивался с подобным. Стоит CentOS 6. Уже давно собираю ядра с elrepo.org с патчем imq. Все было отлично, но с версии ядра 3.16 перестали работать ht tables. Все трафик режется, но уходит в класс по умолчанию. Перепроверил еще раз все имеющиеся ядра с 3.10 до 3.15, такой проблемы нет. 3.16, 3.17 и 3.18.3 только дефолтный класс работает. Трафик транзитный.

Также для всех ядер выше 3.10.10 не работает статистика по классам. Раньше можно было посмотреть количество отправленных пакетов и текущий rate для любого класса. В ядрах выше 3.10.10 все по нулям.

Писал уже Jussi, у него выложены патчи до 3.16 https://github.com/jkivilin/linux-imq/tree/linux-imqmq-3.16 результата к сожалению нет.

Tyran
()
Ответ на: комментарий от Tyran

Поправка. Исходящий локальный трафик ограничивается, просто нужно было дисциплины назначать после подъема интерфейсов imq.

«текущий rate для любого класса» он отключен давно. Чтоб включить нужно в /sys/modules/sch_htb/parameters/htb_rate_est записать 1

Сейчас проверил на 3.18.3 - все нормально классифицируется.

~# iptables -t mangle -nvL
Chain FORWARD (policy ACCEPT 6600 packets, 13M bytes)
 pkts bytes target     prot opt in     out     source               destination         
40204   63M CLASSIFY   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:5001 CLASSIFY set 1:20

Chain POSTROUTING (policy ACCEPT 6676 packets, 13M bytes)
 pkts bytes target     prot opt in     out     source               destination         
 6600   13M IMQ        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:5001 IMQ: todev 0 
~# tc -s class show dev imq0
class htb 1:40 parent 1:4 leaf 40: prio 0 rate 40000Kbit ceil 40000Kbit burst 15Kb cburst 1600b 
 Sent 50399728 bytes 33604 pkt (dropped 9, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 33604 borrowed: 0 giants: 0
 tokens: 47837 ctokens: 4837

class htb 1:4 root rate 100000Kbit ceil 100000Kbit burst 15337b cburst 1600b 
 Sent 63426308 bytes 42293 pkt (dropped 0, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 0 borrowed: 0 giants: 0
 tokens: 19122 ctokens: 1935

class htb 1:20 parent 1:4 leaf 20: prio 0 rate 10000Kbit ceil 10000Kbit burst 15Kb cburst 1600b 
 Sent 13026580 bytes 8689 pkt (dropped 9, overlimits 0 requeues 0) 
 rate 0bit 0pps backlog 0b 0p requeues 0 
 lended: 8689 borrowed: 0 giants: 0
 tokens: 180158 ctokens: 8158
iperf показывает 10Мбит, а если убрать правило из forward, то 40

vel ★★★★★
()
Ответ на: комментарий от vel

vel, супер. подправил /sys/module/sch_htb/parameters/htb_rate_est rate снова показывает. как долго этого не хватало :)


по поводу ht tables в новых ядрах. вот выдержка из скрипта. создается 1 дефолтный класс и для каждого ip свой класс с определенным rate. никаких ошибок в скрипте нет, на новых ядрах все классы и фильтры создаются также как на старых, специально проверил все. отличий никаких. но трафик почему-то попадает только в класс по умолчанию и больше никуда. патч imq из 3.15, где все работает в 3.16 ради интереса подправил сам. результат такой же.


EXTIF=imq0
INTIF=imq1
modprobe imq

/sbin/iptables -t mangle -A PREROUTING -i eth1 -m mark --mark 10 -j IMQ --todev 1 2> /dev/null
/sbin/iptables -t mangle -A POSTROUTING -o eth1 -m mark --mark 1 -j IMQ --todev 0 2> /dev/null
ip link set $EXTIF up 2> /dev/null
ip link set $INTIF up 2> /dev/null

$TC qdisc add dev $EXTIF root handle 1: htb default 4
$TC qdisc add dev $INTIF root handle 2: htb default 4


# default class
$TC class add dev $EXTIF parent 1:2 classid 1:4 htb rate 128kbit ceil 1mbit
$TC class add dev $INTIF parent 2:2 classid 2:4 htb rate 128kbit ceil 5mbit

# create class $ip
$TC class add dev $EXTIF parent 1:2 classid 1:$CLASSID htb rate ${S_OUT}kbit ceil ${S_OUTCEIL}kbit
$TC class add dev $INTIF parent 2:2 classid 2:$CLASSID htb rate ${S_IN}kbit ceil ${S_INCEIL}kbit

# create filter $ip
$TC filter add dev $EXTIF protocol ip parent 1:0 prio 100 u32 ht ${THANDLE}:${IPHEX}: \
        match ip src 192.168.${NET}.${IP} flowid 1:$CLASSID
$TC filter add dev $INTIF protocol ip parent 2:0 prio 100 u32 ht ${THANDLE}:${IPHEX}: \
        match ip dst 192.168.${NET}.${IP} flowid 2:$CLASSID

# generic ht tables
$TC filter add dev $EXTIF protocol ip parent 1:0 prio 100 u32 ht 800:: \
        match ip src 192.168.${NET}.0/24 \
        hashkey mask 0x000000ff at 12 \
        link ${THANDLE}:
$TC filter add dev $INTIF protocol ip parent 2:0 prio 100 u32 ht 800:: \
        match ip dst 192.168.${NET}.0/24 \
        hashkey mask 0x000000ff at 16 \
        link ${THANDLE}:

Tyran
()
Ответ на: комментарий от Tyran

если честно, то меня напрягает «tc filter» и я обычно использую iptables "-j CLASSIFY" для классификации.

Кроме этого есть htb.init который удобен для простых вариантов.

vel ★★★★★
()
Ответ на: комментарий от vel

как я понял, теоретически его пожно переделать, чтобы ему можно было задавать свои данные. Я бы переделал стантартный -m string

ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ne-vlezay

после ковыряния исходников выяснилось , что nDPI умеет идентифицировать протокол по полю host, но эта возможность пока не портирована в ndpi-netfilter.

vel ★★★★★
()
Ответ на: комментарий от ne-vlezay

попробуй это

у меня работает вроде норм, например так

WEBURL  --contains_regex \.(zip|xz|rar|7z|tar|tgz|gz|rpm|deb|bz2|arj|iso|ogg|wav|wma|mid|sf2|asf|sm|s3m|aud|raw|gig|rm|ra?m|аре|flac|shn|avi|qt|divx|vob|qt|wmf|wmv|mov|3gp|flv|vqf|pdf|msi|exe|prz|ppt|inf|mp(3|4|g|eg?)|bin)(\?.*)?$ --path_only
stasn77
()
Ответ на: комментарий от ne-vlezay

довольно просто вживляется вручную подсовыванием в исходники ядра и iptables. Я чтобы не возиться каждый раз при обновлении ядер и iptables оформил для себя патчами: iptables и kernel.

stasn77
()
Ответ на: комментарий от ne-vlezay

вплоть до 3.19 включительно, потому как они по сути не меняют ничего в исходниках ядра и iptables, а только добавляют модуль (в конфиге ядра потом включить IP_NF_MATCH_WEBURL). У меня работает в боевом режиме на 3.18.7

stasn77
()
Ответ на: комментарий от stasn77

можно на сырцы ядра которое сейчас работает с тем же конфигом наложить патч, собрать модуль и сразу без перезагрузки подгрузить его

stasn77
()
Ответ на: комментарий от stasn77

Как компилировать. На iptables патч наложил, но при попытке добавить правило:

iptables -A FORWARD -j WEBURL
iptables v1.4.19.1: Couldn't load target `WEBURL':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
root@router:/usr/src/iptables-1.4.19.1

root@router:/usr/src/iptables-1.4.19.1# iptables -v
iptables v1.4.19.1: no command specified
Try `iptables -h' or 'iptables --help' for more information.
root@router:/usr/src/iptables-1.4.19.1#
ne-vlezay ★★★★★
() автор топика
Последнее исправление: ne-vlezay (всего исправлений: 1)
Ответ на: комментарий от ne-vlezay

1. наложить патч

2. скомпилировать iptables

3. установить (libipt_weburl.so среди прочего должен оказаться в /usr/lib/xtables, ну или куда там в твоем дистре это добро ложится)

на ядро тоже предварительно накладываем патч, в конфиге включаем, make modules, make modules_install, modporbe ipt_weburl

stasn77
()
Ответ на: комментарий от ne-vlezay

странно, может оно в статик режиме у тебя, тогда модуля там и не будет - все в одном бинарнике, а трабл из-за того что это не таргет

stasn77
()
Ответ на: комментарий от stasn77
iptables v1.4.19.1: Couldn't load match `weburl':No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
root@router:/usr/src/iptables-1.4.19.1#
ne-vlezay ★★★★★
() автор топика
Ответ на: комментарий от ne-vlezay

он не кривой, просто у меня в генту в ебилде с -p0 накладывается, так и выложил его...

как пользоваться уже модулем? iptables -m weburl --help

stasn77
()
Ответ на: комментарий от ne-vlezay
-p tcp -m weburl --contains porn
-p tcp -m weburl --contains_regex *iptv*[2] 
-p tcp -m weburl --matches_exactly google.jp
-p tcp -m weburl --contains test-test --domain_only
-p tcp -m weburl --contains_regex "\.(zip|xz|rar|7z|tar|tgz|gz|rpm|deb|bz2|arj|iso|ogg|wav|wma|mid|sf2|asf|sm|s3m|aud|raw|gig|rm|ra?m|аре|flac|shn|avi|q
t|divx|vob|qt|wmf|wmv|mov|3gp|flv|vqf|pdf|msi|exe|prz|ppt|inf|mp(3|4|g|eg?)|bin)(\?.*)?$" --path_only 
stasn77
()
Ответ на: комментарий от ne-vlezay

в смысле? думаю, что никак... он в хттп запросах (GET, POST, CONNECT) в урлах ищет что укажешь

stasn77
()
Ответ на: комментарий от vel

Нет случайно патча imq для iptables из Development Snapshots? 1.4.21 с патчем imq собирается отлично, а с последними снепами трабл, ошибка при сборке после патча.

С tc filter наконец разобрался. Сам виноват, патчил новые ядра с imq BA вместо AB, каким-то образом ошибка в патч конфига ядра закралась :)

Kernel-3.19 + imq, iptables-1.4.21 + iproute2-3.19.0 все работает прекрасно. Для 3.19 изменения в патче imq минимальные.

Tyran
()
Ответ на: комментарий от Tyran

нет. Мне все лень туда заглянуть. А ведь для "-j SET" там должны быть революционные изменения.

Там мой хак 2-х летней давности вроде как осознали - если для элемента набора есть 32-х битная метка, то ее можно либо в mark записать, либо ей класс задать.

vel ★★★★★
()
Ответ на: комментарий от ne-vlezay

за дефрагментацию отвечает conntrack. Так что если не брать таблицу raw, и не отключать conntrack, то фрагменты не должны встречаться.

Веселей дело обстоит с gro.

vel ★★★★★
()
Ответ на: комментарий от vel

Ну он не просто матчит определенные протоколы как l7filter, а конкретно только в http заголовках запросов ищет соответствие на определенные строки или регулярные выражения, можно искать в какой-то определенной части запроса (домен или путь) или везде. Я, например, в http трафике определяю закачки файлов вместо сквида так:

-m weburl --path_only --contains_regex "\.(zip|xz|rar|7z|tar|tgz|gz|rpm|deb|bz2|arj|iso|ogg|wav|wma|mid|sf2|asf|sm|s3m|aud|raw|gig|rm|ra?m|aре|flac|shn|avi|qt|divx|vob|qt|wmf|wmv|mov|3gp|flv|vqf|pdf|txt|xlsx?|docx?|msi|exe|prz|ppt|inf|mp(3|4|g|eg?)|m3u8|webm|bin)(\?.*)?$"
stasn77
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.