LINUX.ORG.RU
ФорумAdmin

еще про imq


0

0

Создал пару новых цепочек:
${ipt} -t mangle -N OUTPUT_LAN
${ipt} -t mangle -A OUTPUT_LAN -j IMQ --todev 2
${ipt} -t mangle -N OUTPUT_INET
${ipt} -t mangle -A OUTPUT_INET -j IMQ --todev 3
${ipt} -t mangle -A POSTROUTING -o ppp0 -d 10.0.0.0/255.0.0.0 -j OUTPUT_LAN
${ipt} -t mangle -A POSTROUTING -o ppp0 -j OUTPUT_INET

где предполагается, что локальный трафик падает в imq 2, все остальное соответственно в imq 3
Проверил правилами -j LOG что пакеты попадают в цепочки как надо.
Стал проверять tc -s class show dev imq2(3) и понял, что весь трафик идет исключительно в dev3. Т.е. -d 10.0.0.0/255.0.0.0 не кидает (или OUTPUT_LAN -j IMQ не принимает?) правило на нужный девайс (dev2). Видит кто ошибку?

anonymous

Внимательно прочитай две последние строки !
Естественно все попадет в dev3.
в предпоследней строки назначение есть а в последней источника нет то бишь и источник и назначение попадают в dev3.

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

В последней просто нельзя указать источник, так как это весь интернет. Как можно решить эту проблему?

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

а указать кроме твоей сетки слабо ?

-s !localnet типа этого

sova ★★
()

да еще можно

в первой строке -s 0/0 -d 10.0.0.0/255.0.0.0 во второй строке -s 10.0.0.0/255.0.0.0 -d 0/0

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

Ну сделал вот так: ${ipt} -t mangle -N OUTPUT_LAN ${ipt} -t mangle -A OUTPUT_LAN -j IMQ --todev 2 ${ipt} -t mangle -N OUTPUT_INET ${ipt} -t mangle -A OUTPUT_INET -j IMQ --todev 3 ${ipt} -t mangle -A POSTROUTING -o ppp0 -d 10.0.0.0/255.0.0.0 -j OUTPUT_LAN ${ipt} -t mangle -A POSTROUTING -o ppp0 -d ! 10.0.0.0/255.0.0.0 -j OUTPUT_INET

Все равно локальный трафик во второй девайс не падает, а только в 3. Добавил ${ipt} -t mangle -I OUTPUT_LAN -j LOG --log-prefix "OUTPUT LAN" Туда трафик доходит нормально и поидее все должно быть правильно. Судтя по -t mangle -nvL пакетики падают тоже как надо. Но по tc -s class show dev imq2 все пусто, везде нули.

Может imq2 просто не принимает его почему-то?

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

Ну сделал вот так:
${ipt} -t mangle -N OUTPUT_LAN
${ipt} -t mangle -A OUTPUT_LAN -j IMQ --todev 2
${ipt} -t mangle -N OUTPUT_INET
${ipt} -t mangle -A OUTPUT_INET -j IMQ --todev 3
${ipt} -t mangle -A POSTROUTING -o ppp0 -d 10.0.0.0/255.0.0.0 -j OUTPUT_LAN
${ipt} -t mangle -A POSTROUTING -o ppp0 -d ! 10.0.0.0/255.0.0.0 -j OUTPUT_INET

Все равно локальный трафик во второй девайс не падает, а только в 3. Добавил:
${ipt} -t mangle -I OUTPUT_LAN -j LOG --log-prefix "OUTPUT LAN"
Туда трафик доходит нормально и поидее все должно быть правильно. Судтя по -t mangle -nvL пакетики падают тоже как надо.
Но по tc -s class show dev imq2 все пусто, везде нули.

Может imq2 просто не принимает его почему-то?

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

А такое не поможет ?
${ipt} -t mangle -A OUTPUT_LAN -j ACCEPT
${ipt} -t mangle -A OUTPUT_INET -j ACCEPT
т.е. чтоб после -j IMQ сразу было правило с -j ACCEPT, чтоб пакет прекращал проход по mangle POSTROUTING цепочке.

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

Более того, в OUTPUT_INET попадают даже те пакеты, у котоврых -d 10.0.0.0/255.0.0.0, что вообще обсурд Что это за косяки то такие?

anonymous
()

На всякий случай: что подразумевается под "локальный трафик"? ppp0 - это интерфейс на провайдера или на клиента? imq-nat патч стоит?

Попробуй делать -j RETURN всему трафику, который не нужен в IMQ - вроде работает.

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

>В последней просто нельзя указать источник, так как это весь интернет.

А как это у тебя на -o ppp0 (именно на -o) и интернет и абонент?

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

ну вот блин ты сам подумай

${ipt} -t mangle -A POSTROUTING -o ppp0 -d 10.0.0.0/255.0.0.0 -j OUTPUT_LAN
${ipt} -t mangle -A POSTROUTING -o ppp0 -d ! 10.0.0.0/255.0.0.0 -j OUTPUT_INET

Это одно и тоже двумя строками !
флаг -o исходящий интерфейс А у тебя и входящий и исходящий одинаков
Короче чтобы работали счетчики
Пример (переделаешь на свой imq):

Создаем цепочку band-out собирать исходящую статистику
iptables -N band-out

Создаем цепочку band-in собирать входящую статистику
iptables -N band-in

Добавляем правило обработки для источник назначение
iptables -A band-out -s $IP -j ACCEPT
iptables -A band-in -d $IP -j ACCEPT

Перенаправляем статистику в счетчик
iptables -A FORWARD -s $IP -j band-out
iptables -A FORWARD -d $IP -j band-in

Читать со счетчиков с интервалом 1с
watch -n 1 iptables -L band-out -n -v -x
watch -n 1 iptables -L band-in -n -v -x

Надеюсь поможет =)




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

Всем спасибо, поставил библиотеку прямые_руки.so, все работает) Надо было с -j RETURN позаморачиваться.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.