LINUX.ORG.RU
решено ФорумAdmin

htb.init и geoip маркировка


0

0

Задача шейпинг МИР/Украина отдельно Проблема трафик режется одинаково

в iptables маркирую пакеты

iptables -t mangle -A POSTROUTING -m geoip --src-cc UA -j MARK --set-mark 1
iptables -t mangle -A POSTROUTING -m geoip ! --src-cc UA -j MARK --set-mark 2
интерфейс

eth1 смотрит в локалку

eth0 в интернет

настроен маскарадинг

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
в /etc/sysconfig/htb/ создал файлы
eth1
DEFAULT=100
R2Q=10
eth1-2
RATE=8Mbit
CEIL=10Mbit
eth1-2:10
RATE=3Mbit
CEIL=3Mbit
RULE=10.10.10.10
eth1-2:10:11
RATE=2Mbit
CEIL=3Mbit
MARK=1
eth1-2:10:12
RATE=512Kbit
CEIL=512Kbit
MARK=2
eth1-2:100
RATE=50Kbit
CEIL=2Mbit
LEAF=sfq
PRIO=5
в результате на клиенте с IP 10.10.10.10 скорость ограничивается в районе 200-230 KB как на мир так на Украину

В чем я ошибся подскажите пожалуйста

Я бы сделал маркировку так:

iptables -t mangle -N mark_ua_src
iptables -t mangle -A mark_ua_src -j CONNMARK --set-mark 1
iptables -t mangle -A mark_ua_src -m geoip ! --src-cc UA -j RETURN
iptables -t mangle -A mark_ua_src -j CONNMARK --set-mark 2
iptables -t mangle -N mark_ua_dst
iptables -t mangle -A mark_ua_dst -j CONNMARK --set-mark 1
iptables -t mangle -A mark_ua_dst -m geoip ! --dst-cc UA -j RETURN
iptables -t mangle -A mark_ua_dst -j CONNMARK --set-mark 2
iptables -t mangle -A POSTROUTING -o eth0 -m conntrack --ctstate NEW -j mark_ua_dst
iptables -t mangle -A POSTROUTING -o eth1 -m conntrack --ctstate NEW -j mark_ua_src
iptables -t mangle -A POSTROUTING -j CONNMARK --restore-mark

Причем возня с mark_ua_src нужна только в том случае, если ты пробрасываешь внешние порты на внутренние серваки.

nnz ★★★★
()
Ответ на: комментарий от nnz

Тогда еще вопрос : как маркировать пакеты/сессии если ограничивать нужно download? Он у меня 3Mbit на мир и 10Mbit на UA-IX. А upload у меня симетричный 3 Мбит его я могу резать без маркировки.

я так понимаю что надо сделать

 
iptables -t mangle -A POSTROUTING -o eth0 -m conntrack --ctstate NEW -j mark_ua_src

но при таком варианте пакеты не попадают в цепочку мир

 pkts bytes target     prot opt in     out     source               destination
  458 52538 CONNMARK   all  --  *      *       0.0.0.0/0            0.0.0.0/0           CONNMARK set 0x1
  458 52538 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0           Source country: ! UA
    0     0 CONNMARK   all  --  *      *       0.0.0.0/0            0.0.0.0/0           CONNMARK set 0x2
а при варианте маркировка идет но вот проблема уже в TC мир/украина режутся одинаково
 pkts bytes target     prot opt in     out     source               destination
   17  2099 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0           Source country: UA MARK set 0x1
 2428 2217K MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0           Source country: ! UA MARK set 0x2

potap101
() автор топика
Ответ на: комментарий от potap101

Добавьте в таблицу маршрутизации все префиксы Украины и в tc классификатором route разбросайте в два класса. Будет гораздо производительнее. Лучше tc освоить чем юзать к нему обертку, и потом шукать в ней глюки. Я даунлоад обычно на ifb шейплю, но вы можете и просто на интерфейсе eth1 который в локалку

ventilator ★★★
()

Я не юзал htb.init но где там фильтры которые согласно вашей маркировке пакеты в классы кладут? Мне показалось что вы только классы создали, вы ведь не CLASSIFY таргет используете.

ventilator ★★★
()
Ответ на: комментарий от potap101

>но при таком варианте пакеты не попадают в цепочку мир

И правильно не попадают.

Тебе что сказали? Вешать mark_ua_src на eth1. А ты куда повесил? На eth0. Гениально. Скажи по секрету, у тебя в локалке живут крупные украинские провайдеры?

anonymous
()
Ответ на: комментарий от anonymous

1. eth1 смотрит в локалку 2. вот написано для одареных Причем возня с mark_ua_src нужна только в том случае, если ты пробрасываешь внешние порты на внутренние серваки. 3.Прочитал бы хоть посты полностью

potap101
() автор топика
Ответ на: комментарий от potap101

Если кому интересно решилось все через ifb

#!/bin/bash
iptables -t mangle -A POSTROUTING -m geoip --src-cc UA -j MARK --set-mark 1
iptables -t mangle -A POSTROUTING -m geoip ! --src-cc UA -j MARK --set-mark 2

#!/bin/bash
UKR=8000
MIR=2000
LIMIT=12
modprobe ifb
ifconfig ifb0 up
ifconfig ifb1 up
#ukt
tc qdisc del dev ifb0 root handle 1: htb default 100 r2q 10

tc qdisc add dev ifb0 root handle 1: htb default 100  r2q 10
tc class add dev ifb0 parent 1: classid 1:2 htb rate $[$UKR]Kbit ceil $[$UKR]Kbit
#tc class add dev ifb0 parent 1:2 classid 1:11 htb rate 1024Kbit ceil 2024Kbit prio 1
for ((a=3; a <= LIMIT+1 ; a++))
do
tc class add dev ifb0 parent 1:2 classid 1:$a htb rate 1024Kbit ceil 2024Kbit
echo "tc class add dev ifb0 parent 1:2 classid 1:$a htb rate 1024Kbit ceil 2024Kbit"
done
echo "ukr classes"
#tc filter add dev ifb0 parent 1: protocol ip prio 100 u32 match ip dst 10.10.10.10/32 flowid 1:11
for ((a=2; a <= LIMIT; a++))
do
tc filter add dev ifb0 parent 1: protocol ip prio 100 u32 match ip dst 10.10.10.$a/32 flowid 1:$[$a+1]
echo "tc filter add dev ifb0 parent 1: protocol ip prio 100 u32 match ip dst 10.10.10.$a/32 flowid 1:$[$a+1]"
done
echo "ukr filter"


#mir
tc qdisc del dev ifb1 root handle 1: htb default 100 r2q 10
tc qdisc add dev ifb1 root handle 1: htb default 100  r2q 10
tc class add dev ifb1 parent 1: classid 1:2 htb rate $[$MIR]Kbit ceil $[$MIR]Kbit
for ((a=3; a <= LIMIT+1 ; a++))
do
tc class add dev ifb1 parent 1:2 classid 1:$a htb rate 356Kbit ceil 512Kbit
echo "tc class add dev ifb1 parent 1:2 classid 1:$a htb rate 356Kbit ceil 512Kbit"
done

echo "mir classes"

for ((a=2; a <= LIMIT; a++))
do
tc filter add dev ifb1 parent 1: protocol ip prio 100 u32 match ip dst 10.10.10.$a/32 flowid 1:$[$a+1]
echo "tc filter add dev ifb1 parent 1: protocol ip prio 100 u32 match ip dst 10.10.10.$a/32 flowid 1:$[$a+1]"
done
echo "mir filter"
tc qdisc del dev eth1 root handle 1: htb default 5

tc qdisc add dev eth1 root handle 1: htb default 5
tc class add dev eth1 parent 1: classid 1:1 htb rate $[$UKR]Kbit
tc class add dev eth1 parent 1: classid 1:2 htb rate $[$MIR]Kbit

tc filter add dev eth1 parent 1: protocol ip prio 200 handle 1 fw classid 1:1 action mirred egress redirect dev ifb0
tc filter add dev eth1 parent 1: protocol ip prio 200 handle 2 fw classid 1:2 action mirred egress redirect dev ifb1
potap101
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.