Перейти к содержимому
Калькуляторы

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-мя устройствами) - а не тут-то было, снова ничего не работает...

 

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

Изменено пользователем lan-viper

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Как это нет? А 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-шники без приоритезации общего канала, а это огорчает...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

UPD

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

Изменено пользователем lan-viper

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.