Исправление Pinkbyte, (текущая версия) :
iptables здесь опосредованно, тебе нужен iproute2
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit quantum 3000
tc filter add dev eth0 parent 1: protocol ip handle 100 fw flowid 1:1
Здесь мы создаём очередь и класс на устройстве eth0, лимитируем общую скорость до 10 мегабит/сек для этого класса. Также указываем что трайфик, промаркированный меткой 100 отправится в этот класс. Теперь осталось только указать в iptables что направить в этот класс.
iptables -t mangle -A PREROUTING -i eth0 -p tcp --sport 80 -j MARK --set-mark 100
В данном примере весь трафик с портом источника 80 с интерфейса eth0 будет отправлен в этот класс. Если eth0 - это устройство через которое у тебя идет Интернет, это означает что трафик с веб-сайтов с 80 порта не сможет занять больше чем 10 мегабит/сек полосы пропускания на eth0.
Сразу скажу - можно было обойтись и без меток и шейпить сразу правилом tc. Но с метками получается несколько гибче, лично мое мнение - синтаксис iproute2 гораздо более зубодробительный чем iptables.
Вопрос агрегации и шейпинга трафика с нескольких интерфейсов(через IFB или IMQ) оставляю на самостоятельное изучение ;-)
Исправление Pinkbyte, :
iptables здесь опосредованно, тебе нужен iproute2
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit quantum 3000
tc filter add deveth0 parent 1: protocol ip handle 100 fw flowid 1:1
Здесь мы создаём очередь и класс на устройстве eth0, лимитируем общую скорость до 10 мегабит/сек для этого класса. Также указываем что трайфик, промаркированный меткой 100 отправится в этот класс. Теперь осталось только указать в iptables что направить в этот класс.
iptables -t mangle -A PREROUTING -i eth0 -p tcp --sport 80 -j MARK --set-mark 100
В данном примере весь трафик с портом источника 80 с интерфейса eth0 будет отправлен в этот класс. Если eth0 - это устройство через которое у тебя идет Интернет, это означает что трафик с веб-сайтов с 80 порта не сможет занять больше чем 10 мегабит/сек полосы пропускания на eth0.
Сразу скажу - можно было обойтись и без меток и шейпить сразу правилом tc. Но с метками получается несколько гибче, лично мое мнение - синтаксис iproute2 гораздо более зубодробительный чем iptables.
Вопрос агрегации и шейпинга трафика с нескольких интерфейсов(через IFB или IMQ) оставляю на самостоятельное изучение ;-)
Исходная версия Pinkbyte, :
iptables здесь опосредованно, тебе нужен iproute2
tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 10Mbit quantum 3000
tc filter add deveth0 parent 1: protocol ip handle 100 fw flowid 1:1
Здесь мы создаём очередь и класс на устройстве eth0, лимитируем общую скорость до 10 мегабит/сек для этого класса. Также указываем что трайфик, промаркированный меткой 100 отправится в этот класс. Теперь осталось только указать в iptables что направить в этот класс.
iptables -t mangle -A PREROUTING -i eth0 -p tcp --sport 80 -j MARK --set-mark 100
В данном примере весь трафик с портом источника 80 с интерфейса eth0 будет отправлен в этот класс. Если eth0 - это устройство через которое у тебя идет Интернет, это означает что трафик с веб-сайтов с 80 порта не сможет занять больше чем 10 мегабит/сек полосы пропускания на eth0.
Сразу скажу - можно было обойтись и без меток и шейпить сразу правилом tc. Но с метками получается несколько гибче, лично мое мнение - синтаксис iproute2 гораздо более зубодробительный чем iptables.