да, конечно, я уже как то раз на этом обжогся
А значение UPLINK у вас правильное стоит? Соответствует величине канала?
да, конечно, я уже как то раз на этом обжогся
По-поводу того, что наоборот SRC и DST - это так и должно быть, так как шейпер висит на внутреннем интерфейсе, а не на внешнем. Для внутреннего интерфейса DESTINATION это то, куда он отправляет данные приходящие на интерфейс, а SOURCE это данные откуда он получает.
Я думаю дело в том, что у меня приоритет портов прописывается выше, чем приоритет хостов. Мне лично именно так и надо, Вам же возможно хочется, чтобы весь трафик хостов с низким приоритетом резался, игнорируя порты с высоким приоритетом. Вам тогда в циклахи $HIGHPRIOPORTSRC нужно будет поменять значение prio. Чтобы эти правила обрабатывались позже чем $NOPRIOHOSTDST. Поменяйте 3 на 20.Code:for a in $HIGHPRIOPORTDST do echo HIGHPRIO DST PORT $a tc filter add dev $DEV parent 1: protocol ip prio 3 u32 \ match ip dport $a 0xffff flowid 1:10 done
Вообще смотрите статистику через, правильно ли классифицируются ваши пакеты.Code:myshaper status br0
dadittoz если тебя не затруднит, то не мог бы ты расказать мне как добаить в этот шейпер еще один класс, например класс очень низких приоритетов, какие строки в какие места надо добавлять?
Примерно так:
Класс, ограниченный 5% общего трафика. Это создаст непосредственно сам класс.
А дальше уже добавляем, что отправлять в этот класс также как сделано для HIGHPRIO [PORTDST|PORTSRC|HOSTDST|HOSTSRC]. Например для PORTDST вот так:Code:tc class add dev $DEV parent 1:1 classid 1:40 htb rate $((5*$UPLINK/100))kbit \ ceil $((5*$UPLINK/100))kbit burst 6k prio 4 quantum 1500 tc qdisc add dev $DEV parent 1:40 handle 40: sfq perturb 10
Code:for a in $LOWESTPRIOPORTDST do echo LOWESTPRIO DST PORT $a tc filter add dev $DEV parent 1: protocol ip prio 14 u32 \ match ip dport $a 0xffff flowid 1:40 done
В очередной раз огромная благодарность!
я кстати понял почему у меня не работли HIGHPRIOHOSTSRC и HIGHPRIOHOSTDST с крипте не стоит на них echo
Code:for a in $HIGHPRIOPORTDST do echo HIGHPRIO DST PORT $a tc filter add dev $DEV parent 1: protocol ip prio 3 u32 \ match ip dport $a 0xffff flowid 1:10 done for a in $HIGHPRIOPORTSRC do echo HIGHPRIO SRC PORT $a tc filter add dev $DEV parent 1: protocol ip prio 3 u32 \ match ip sport $a 0xffff flowid 1:10 done for a in $HIGHPRIOHOSTSRC do !ВОТ ТУТ надо постасить строку! echo HIGHPRIO HOST SRC $a tc filter add dev $DEV parent 1: protocol ip prio 3 u32 \ match ip src $a flowid 1:10 done for a in $HIGHPRIOHOSTDST do echo HIGHPRIO HOST DST $a tc filter add dev $DEV parent 1: protocol ip prio 3 u32 \ match ip dst $a flowid 1:10 done # some traffic however suffers a worse fate for a in $NOPRIOPORTDST do echo NOPRIO DST PORT $a tc filter add dev $DEV parent 1: protocol ip prio 14 u32 \ match ip dport $a 0xffff flowid 1:30 done for a in $NOPRIOPORTSRC do echo NOPRIO SRC PORT $a tc filter add dev $DEV parent 1: protocol ip prio 15 u32 \ match ip sport $a 0xffff flowid 1:30 done for a in $NOPRIOHOSTSRC do echo NOPRIO HOST SRC $a tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \ match ip src $a flowid 1:30 done for a in $NOPRIOHOSTDST do echo NOPRIO HOST DST $a tc filter add dev $DEV parent 1: protocol ip prio 17 u32 \ match ip dst $a flowid 1:30 done
Блин, читаю про этот шейпер.... кошмар какой-то может есть какая-нить gui к этому шейперу или что-то подобное, чтоб можно было сконфигурировать боле-менее под себя и оно уже готовый скрипт выдало??? а потом его подправить только под себя?
Ну, и опишу ситуацию, пожалуй, свою: у меня к точке доступа подключено несколько клиентов (допустим 7, в будущем будет больше), часть проводом к LAN портам, часть по wifi и часть подключена через MAN к openvpn серверу, который на точке доступа установлен... MAN этот шейпить не надо вообще, мне надо разделить только WAN который по pptp. Поделить хочу просто поровну (если несколько человек одновременно качает), а если только один качает, то весь канал ему достается, ну и приоритеты, чтоб сначала icmp, dns, icq (некоторые еще мелкие пакеты вроде с высоким приоритетом пускают и ACK) потом http, потом торренты и прочее.
Киньте, пожалуйста, скриптом более-менее подходящим мне, а то вообще ничего не понимаю с чего начать Или есть уже какой-то более-менее универсальный вариант, где все "по уму" сделано? А то несколько тем на форуме и все както не до конца раскрыто...
Знаете, как в том анекдоте: "Но у всех же лица разные?! - Ну это только до первого бритья..."
Универсальный вариант - это возможности iptables и iproute2.
Но никто не обещает, что эта универсальность понравится и будет по силам всем.
Читайте http://lartc.org/, осмысливайте, ищите готовые решения, придумывайте свои.
Собственно имеется WL500GpV2 с последней олеговской прошивкой и встроенным FTP-сервером. Роутер подключен к локалке, в которой инет через него должны иметь всего 4 компа а вот доступ к его FTP-серверу должен быть у всех (~20 компов). Пробовал использовать MAC-фильтр, но он режет вместе с инетом и FTP-сервер. Как можно ограничить инет не ограничивая при этом доступ к FTP-серверу?
© 2008-2013 ABATAPA WL-500gP/128M / Asus RT-N16 / USB Flash / VLAN / PPPoE / VoIP / nShaper / NAS: iStor is607, Sarotech NAS-20, QNap 109 Pro / NFS / Принтер / etc
т.е. через веб-морду никак?
а по подробнее про iptables можно?
Может маршрутизацией.
У меня инет, 2 локалки (моя и провайда) и FTP. Или я не догнал.
Last edited by .com; 05-07-2008 at 20:20.
© 2008-2013 ABATAPA WL-500gP/128M / Asus RT-N16 / USB Flash / VLAN / PPPoE / VoIP / nShaper / NAS: iStor is607, Sarotech NAS-20, QNap 109 Pro / NFS / Принтер / etc
у меня со стороны лан всего одна подсеть на примерно 30 компов.
из этих 30-ти доступ в инет должны иметь только 4 а вот к фтпшнику должны иметь доступ все