Jump to content
Калькуляторы

LinuxIMQ - количество устройств нормально работают только первые два интерфейса

Всех приветствую.

 

Столкнулся со следующей проблемкой: сделал 4 виртуальных интерфейса imq0 imq1 imq2 imq3, первые два работают уже год на благо QoS аплинка для vpn-щиков. Вторые два (imq2, imq3) пытаюсь со вчерашнего дня прикрутить для целей шейпа ipoe юзеров (да, да, только сейчас начали переходить потихоньку). На этой же машине NAT - это и является причиной использования IMQ, к сожалению, других вариантов пока нет.

Итак, интерфейсы по команде ip link set imq[2|3] up поднимаются, в iptables стоят соотв. правила

$IPT -t mangle -A PREROUTING -i $IF_LAN -m set --set IPOEUSERNETS src -j IMQ --todev 3
$IPT -t mangle -A POSTROUTING -o $IF_LAN -m set --set IPOEUSERNETS dst -j IMQ --todev 2

По правилам счётчики пакетов шевелятся, а вот на интерфейсах по команде ifconfig imq2 или imq3 счётчики стоят в нулях.

 

Пробую экспериментировать: убираю полностью использование QoS на imq0 и imq1 и отдаю их под мой новый шейпер и всё зашевелилось. Скорость у абонентов режется туда сюда отлично! Отсюда делаю предварительный вывод, что проблема в количестве этих самых устройств, прописываю в /etc/modules imq numdevs=4, перезагружаю модуль и все свои настройки (снова с 4-мя устройствами) - а не тут-то было, снова ничего не работает...

 

Коллеги, подскажите, в чём может быть дело? Если нужны какие-нибудь ещё данные по моей конфигурации для уточнения, спрашивайте. Буду рад любым комментариям.

Edited by lan-viper

Share this post


Link to post
Share on other sites

к сожалению, других вариантов пока нет.

Как это нет? А ifb?

Меня вообще удивляет, почему все так уверены, что ifb+nat не будет работать. Нужно redirect делать с внутреннего интерфейса, и можно будет фильтровать по серым адресам.

Share this post


Link to post
Share on other sites

к сожалению, других вариантов пока нет.

Как это нет? А ifb?

Меня вообще удивляет, почему все так уверены, что ifb+nat не будет работать. Нужно redirect делать с внутреннего интерфейса, и можно будет фильтровать по серым адресам.

А мне imq больше нравится. )))

 

Немного разобрался со своей проблемой, оказалось, что уткнулся в неприятную особенность работы модуля для iptables (причём в забугорном инете тоже попадались теже самые симптомы, проблему в явном виде так никто там и не решил...).

 

Я думал сделать так (часть правил для исходящего трафика):

$IPT -t mangle -A PREROUTING -i $IF_LAN -m set --set IPOEUSERIPS src -j IMQ --todev 3
$IPT -t mangle -A PREROUTING -i $IF_LAN -m set --set IPOEUSERNETS src -j IMQ --todev 3
$IPT -t mangle -A PREROUTING -i $IF_LAN -m set --set IPOEUSERIPS src -j IMQ --todev 1
$IPT -t mangle -A PREROUTING -i $IF_LAN -m set --set IPOEUSERNETS src -j IMQ --todev 1
$IPT -t mangle -A PREROUTING -i ppp+ -j IMQ --todev 1

где imq1 - это устройство с дисциплинами для приоритезации общего канала для всех, а imq3 - устройство, где находятся шейпы для счастливых абонентов без vpn-а.

Так вот, петрушка вся в том, что нельзя сделать перенаправление в одной цепочке (в данном случае PREROUTING) для одного конкретного интерфейса ($IF_LAN) на несколько imq устройств. Перенаправление будет работать только для последнего по цепочке правил imq устройства, т.е. imq1. imq3 идёт лесом...

Если оставить следующую цепочку правил, то всё работает:

$IPT -t mangle -A PREROUTING -i $IF_LAN -m set --set IPOEUSERIPS src -j IMQ --todev 3
$IPT -t mangle -A PREROUTING -i $IF_LAN -m set --set IPOEUSERNETS src -j IMQ --todev 3
$IPT -t mangle -A PREROUTING -i ppp+ -j IMQ --todev 1

Вот такие вот пироги. Остались мои ipoe-шники без приоритезации общего канала, а это огорчает...

Share this post


Link to post
Share on other sites

Используйте физические интерфейсы для части задачи. Например $IF_LAN для шейпера входящего для абонентов трафика (при этом imqX для приоретизации).

Share this post


Link to post
Share on other sites

Используйте физические интерфейсы для части задачи. Например $IF_LAN для шейпера входящего для абонентов трафика (при этом imqX для приоретизации).

По физ. интерфейсам: допустим, что $IF_WAN - интерфейс аплинка. На нём NAT => на физ интерфейс смысла нет что-либо вешать, т.е. мы лишаемся контроля над исходящим трафиком. Смысл использования IMQ как раз и заключается в том, что мы можем до NAT контролировать трафик с ещё серыми абонентскими адресами.

 

UPD

... хотяя, если речь вести только о приоритезации общего канала, где нет необходимости учёта ip абонентов, то идея с физ интерфейсами годная. Надо подумать.

Edited by lan-viper

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this