Нужно соответственно ограничить скорость как входящую, так и исходящую для каждого из пользователей согласно его ТП.
Не предлагать: Разнесение по разным тачкам, циску.
Нужно сделать это на одной тачке. По крайней мере фряха с этой задачей в другом сегменте справляется на ура (на неё и перейду, если всё таки не осилю шейпер в линуксе, но всё же сдаваться так просто не хочется).
По идее нужно сделать виртуальный ifb интерфейс, только не могу понять, как его подружить с in+out+nat+vlan.
А в чем, собственно, проблема? Маркируйте через iptables в mangle::FORWARD, после чего обычный HTB на vlan* и eth1, через filter fw загоняйте трафик в соотв. классы.
Шейпить будете соответственно исход с интерфейса. NAT абсолютно не помеха поскольку раскраска трафика происходит до него.
Поскольку вланов достаточно много, хотелось бы избавиться от необходимости включать на всех интерфейсах шейпер, к тому же нужно высчитывать на каком интерфейсе висит абонент, чтоб не заставлять ядро искать пользователя там где его нет.
Ещё где-то читал, что может быть не более 255 маркировок, хотя может это в старых ядрах было.
Откровенно говоря шейпер в ipfw НАМНОГО удобнее чем iproute2, так что вполне возможно переход на фряху таки правильное решение… Хоть и сам линуксоид, но все равно.
Это да. Причина побудившая попытаться перейти на линукс — намного более удобный файрвол, чем ipfw, хотя наверное это дело вкуса.
Но лично у меня опыт использования ipfw довольно большой и пощупав и понастраивав iptables, понял что iptables в сто раз более прозрачный и простой в конфигурации.
Шейпер в линукс суров. Синтаксис tc этому только способствует. Особенно если нужно честно разделить входящую полосу, простого нативного способа это сделать я не знаю. Только с костылями в виде IFB или IMQ, лучше IFB он идеологически правилен, и даже вроде не надо патчить ядро и iptables. Исходящий трафик (идущий с роутера, к пользователям в виланы) я бы шейпил прям на их сетевых интрефейсах. Входящий от пользователей, маркировал и заворачивал в IFB. На IFB вешается дерево классов HTB и фильтрами по маркам пользователи попадают каждый на свой листик(leaf). У меня редиректится трафик вот этой чудесной командой
$TC filter add dev $VLAN parent ffff: protocol ip prio 1 u32 match u32 0 0 flowid 1:1 action ipt -j MARK --set-mark $VID action mirred egress redirect dev $IFB
Короче ставте фряху туда, если вы в ней разбираетесь, так будет и вам проще и пользователям надежней