Шейпинг iptables IPMARK + htb

Ниже приведен еще один способ массово ограничить (shaping) скорость для нескольких тысяч абонентов с помошью IPMARK +HTB.

Допустим ip адреса клиентов из диапазона 192.168.0.0/16

1. Метим весь трафик (внутренний и внешний) с помошью IPMARK, используя для маркировки последние два октета

$IPT -t mangle -A POSTROUTING -o eth0 -j IPMARK --addr src --and-mask 0xffff --or-mask 0x10000

$IPT -t mangle -A POSTROUTING -o eth1 -j IPMARK --addr dst --and-mask 0xffff --or-mask 0x10000

—or-mask 0×10000 — указывает первую родительсткую дисциплину HTB

—and-mask 0xfff указывает на то, что метим последними двумя октетами

Пример: 192.168.136.2 получит метку 8802 (136 в десятичной системе это 88h в шестнадцатеричной, 2 так и останется 02)

2. Теперь создадим скриптик в который поместим правила HTB по ограничению скорости для всех необходимых IP адресов.


#!/bin/bash
dev_int="eth1"
dev_ext="eth0"

# Чистим очереди от предыдущих данных
tc qdisc del dev $dev_ext root
tc qdisc del dev $dev_int root

# Добавляем родительскую дисциплину для обоих интерфейсов
tc qdisc add dev $dev_ext root handle 1: htb
tc qdisc add dev $dev_int root handle 1: htb

# Добавляем фильтр fw (без параметров помещает пакет по указанными при помощи ipmark parent:classid в нужный класс.
)
tc filter add dev $dev_ext parent 1:0 protocol ip fw
tc filter add dev $dev_int parent 1:0 protocol ip fw

#########################################################
# SAMPLE CLIENT 1
# 192.168.136.1 -> 8801 (88: 136 hex; 01 - 1 hex)
#########################################################

tc class replace dev $dev_ext parent 1: classid 1:8801 htb rate 1024kbit
tc class replace dev $dev_int parent 1: classid 1:8801 htb rate 2048kbit

#########################################################
# SAMPLE CLIENT 2
# 192.168.136.2 -> 8802 (88: 136 hex; 02 - 2 hex)
#########################################################
tc class replace dev $dev_ext parent 1: classid 1:8802 htb rate 4090kbit
tc class replace dev $dev_int parent 1: classid 1:8802 htb rate 8192kbit

Собственно вот и все.

Модуль IPMARK для iptables содержится в CentALT репозитории.

Шейпинг iptables IPMARK + htb: 1 комментарий

  1. viperet почему именно пингвин и htb? Какие преимущества дает это по сравнению например с бсд? Сижу выбираю для себя решение, хотелось бы услышать ваше мнение.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *