Есть шлюз с 2-мя интерфейсами, eth1 - локалка и ppp0 - Internet.
На ppp0 прикручен шейпер:
RATEUP=340
# добавить корневую дисциплину HTB
tc qdisc add dev ppp0 root handle 1: htb default 40
# добавить общее ограничение скорости по классу
tc class add dev ppp0 parent 1: classid 1:1 htb rate ${RATEUP}kbit
# добавляем подклассы - мы гарантируем каждаму классу МИНИМУМ "честную часть" полосы пропускания.
# Этим способом мы избегаем возможности "голодания" классов. Каждому классу
# разрешается занимать всю полосу пропускания, если другие классы не
# используются.
tc class add dev ppp0 parent 1:1 classid 1:10 htb rate $[$RATEUP/3]kbit ceil ${RATEUP}kbit prio 0
tc class add dev ppp0 parent 1:1 classid 1:20 htb rate $[$RATEUP/15]kbit ceil 100kbit prio 1
tc class add dev ppp0 parent 1:1 classid 1:30 htb rate $[$RATEUP/35]kbit ceil 100kbit prio 2
tc class add dev ppp0 parent 1:1 classid 1:40 htb rate $[$RATEUP/200]kbit ceil 100kbit prio 3
# подключаем дисциплины обработки очереди к подклассам - здесь мы используем SFQ для каждого класса.
# SFQ обеспечит почти честное деление полосы пропусканиямежду соединениями
# внутри каждого класса.
tc qdisc add dev ppp0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev ppp0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev ppp0 parent 1:30 handle 30: sfq perturb 10
# направляем трафик в классы по fwmark
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 10 fw flowid 1:10
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 20 fw flowid 1:20
tc filter add dev ppp0 parent 1:0 prio 0 protocol ip handle 30 fw flowid 1:30
#online игры попадают в высокоприорететный класс
#WarCraft
iptables -t mangle -A POSTROUTING -p tcp -m multiport --destination-port 3724,1119,4000,6111,6112,6113,6114 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p tcp -m multiport --destination-port 3724,1119,4000,6111,6112,6113,6114 -j RETURN
iptables -t mangle -A POSTROUTING -p udp -m multiport --destination-port 3724 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p udp -m multiport --destination-port 3724 -j RETURN
#Линейка
iptables -t mangle -A POSTROUTING -p tcp -m multiport --destination-port 7777,2106,17453 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p tcp -m multiport --destination-port 7777,2106,1745 -j RETURN
#iptables -t mangle -A POSTROUTING -p udp -m multiport --destination-port .,.,. -j MARK --set-mark 10
#iptables -t mangle -A POSTROUTING -p udp -m multiport --destination-port .,.,. -j RETURN
#Контра
iptables -t mangle -A POSTROUTING -p tcp -m multiport --destination-port 27000:27050 -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p tcp -m multiport --destination-port 27000:27050 -j RETURN
#для ping
iptables -t mangle -A POSTROUTING -p icmp -j MARK --set-mark 10
iptables -t mangle -A POSTROUTING -p icmp -j RETURN
#для пакетов, с которых начинается TCP-соединение, т.е. SYN-пакетов
iptables -t mangle -I POSTROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j MARK --set-mark 20
iptables -t mangle -I POSTROUTING -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j RETURN
#для www
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j MARK --set-mark 30
iptables -t mangle -A POSTROUTING -p tcp --dport 80 -j RETURN
По идее при полной загрузке канала на ping и всё что попадает в класс 1:10 эта загрузка ни как влиять не должна.
Но ping увеличивается и с игрушек выкидывает. Хотя трафик, вроде,разруливается по классам Что я сделал не так??? Помогите разобраться!!!!!
P.S. Сильно не наезжайте я в Linux новичок!!!!!
Управление трафиком
Я сам новичок но у тебя не что не попадает в классы потомуч-то mark ставишь на выходе а надо в prerouting.
Вроде так.
Я сам новичок но у тебя не что не попадает в классы потомуч-то mark ставишь на выходе а надо в prerouting.
Вроде так.
А разница какая?? порт назначения остаётся тот же, что в PREROUTING, что в POSTROUTBNG (изнутри наружу, даже если стоит NAT). Эт если с наружи лезишь во внутрь и NAT стоит, тогда маркировать надо в POSTROUNING. Эт я так понимаю. Хотя я могу очень даже неправильно понимать.
Пакеты то по классам разруливаются!!!!!! Так что попадают!!!
Тут посмотри прохождения пакетов! http://ru.wikipedia.org/wiki/Iptables
У тя на выходе маркируются пакеты и не попадаю под локальные процессы filter
Как же у тебя фильтруются пакеты если ты маркируешь на выходе?
Короче man iptables.
Вот из LARTC пример
По метке пакета
Пакеты могут маркироваться либо средствами ipchains, либо средствами iptables. Это бывает полезно, например, для наложения ограничений на трафик, который следует с интерфейса eth1 на интерфейс eth0:
# tc filter add dev eth1 protocol ip parent 1:0 prio 1 handle 6 fw flowid 1:1
Обратите внимание -- этот фильтр не является селектором u32!
Установить метку можно следующим образом:
# iptables -A PREROUTING -t mangle -i eth0 -j MARK --set-mark 6
В данном случае число 6 выбрано произвольным образом.
Если вы не хотите с головой погружаться в синтаксис tc, тогда просто пользуйтесь возможностями iptables и запомните принцип отбора по метке.
Тут посмотри прохождения пакетов! http://ru.wikipedia.org/wiki/Iptables
У тя на выходе маркируются пакеты и не попадаю под локальные процессы filter
Как же у тебя фильтруются пакеты если ты маркируешь на выходе?
Короче man iptables.
А причём здесь iptables????
Он нужен, только для того, чтобы метку поставить, а не фильтровать. Или я чего-то не допонимаю.
Ради эксперимента побывал менять POSTROUTING на PREROUTING, пакеты по классам разруливаются одинаково.
Смотри фильтр выполняется локально значиться метку надо ставить в PREROUTING если делать в POSTROUTING тогда фильтр не видит твои метки потомуч-то лепишь их на выходе.
Прохождение пакета посмотри как правильно в iptables. Скрипт выполняется при поднятии ppp0?
Смотри ты пакеты гоняешь ток лишний раз, тебе это на фиг не надо если бушь ставить метки в PREROUTING.
iptables -t mangle -A POSTROUTING -p tcp -m multiport --destination-port 7777,2106,1745 -j RETURN