Почему-то не могу отмаркировать входящий трафик (tc, iptables)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Anton Y. Shevtsov
Сообщения: 15

Почему-то не могу отмаркировать входящий трафик (tc, iptables)

Сообщение Anton Y. Shevtsov »

Почему-то не могу отмаркировать входящий трафик, для того чтобы урезать канал.

Входные данные

Linux CentOS (далее mailhost), один интерфейс eth0, sendmail, iptables, стоит полностью в локалке, шлюз по умочанию - циска торчащая в инет, порт 25 пробрасывается с нее на mailhost

хочу ограничить SMTP по скорости. Для локальных клиентов сделал

Код: Выделить всё

*mangle
-A OUTPUT -p tcp --dport 25 -j LOG --log-level debug --log-codefix 'OUTPUT:'
-A OUTPUT -p tcp --dport 25 -j MARK --set-mark 0x5


Код: Выделить всё

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 10kbit ceil 25kbit prio 3
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 5 fw classid 1:13


локальный клиент засылает письмо на mailhost - скорость максимальная, с mailhost в инет согласно политике tc

проверяю

Код: Выделить всё

tc -s class show dev eth0

все ок, попадает по 1:13 и шейпится.

теперь хочу тоже самое но для входящей извне почты.

решил в PREROUTING (пробовал и в INPUT), согласно логам и там и там одно и тоже. 192.168.X.X - mailhost IP.

Код: Выделить всё

*mangle
-A PREROUTING -p tcp --dport 25 -d 192.168.X.X -j LOG --log-level debug --log-codefix 'PREROUTING:'
-A PREROUTING -p tcp --dport 25 -d 192.168.X.X -j MARK --set-mark 4


Код: Выделить всё

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 10kbit ceil 25kbit prio 3
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 4 fw classid 1:14


По логам - все ок, в цепочку попадает вхоядщая почта, все ок
но пакеты видимо не маркируются, и в правила tc ничего не попадает,и как следствие, скорость не режится..

Код: Выделить всё

iptables -L -n -v -t mangle


Код: Выделить всё

Chain PREROUTING (policy ACCEPT 5645 packets, 1126K bytes)
 pkts bytes target     prot opt in     out     source               destination
   10  1544 LOG        tcp  --  *      *       0.0.0.0/0            192.168.X.X       tcp dpt:25 LOG flags 0 level 7 prefix `'PREROUTING:''
   10  1544 MARK       tcp  --  *      *       0.0.0.0/0            192.168.X.X       tcp dpt:25 MARK set 0x4

Chain OUTPUT (policy ACCEPT 5508 packets, 1020K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 LOG        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 LOG flags 0 level 7 prefix `'OUTPUT:''
    0     0 MARK       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:25 MARK set 0x5



Уже все перепробовал, в чем может быть дело?
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Почему-то не могу отмаркировать входящий трафик (tc, iptables)

Сообщение sash-kan »

а вы представляете себе механизм ограничения скорости _входящего_ трафика?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Anton Y. Shevtsov
Сообщения: 15

Re: Почему-то не могу отмаркировать входящий трафик (tc, iptables)

Сообщение Anton Y. Shevtsov »

Уже представляю. Ключевое слово discq ingress

Код: Выделить всё

tc qdisc add dev eth0 handle ffff: ingress
tc filter add dev eth0 parent ffff: protocol ip prio 3 handle 5 fw police rate 10kbit burst 250kbit drop flowid :1


или так если без меток iptables

Код: Выделить всё

tc qdisc add dev eth0 handle fff: ingress
tc filter add dev eth0 parent ffff: protocol ip prio 3 u32 match ip dst 192.168.X.X match ip dport 25 0xffff police rate 10kbit burst 25kbit drop flowid :1
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: Почему-то не могу отмаркировать входящий трафик (tc, iptables)

Сообщение Alex2ndr »

Anton Y. Shevtsov писал(а):
03.03.2010 07:32
Уже представляю. Ключевое слово discq ingress

Код: Выделить всё

tc qdisc add dev eth0 handle ffff: ingress
tc filter add dev eth0 parent ffff: protocol ip prio 3 handle 5 fw police rate 10kbit burst 250kbit drop flowid :1


или так если без меток iptables

Код: Выделить всё

tc qdisc add dev eth0 handle fff: ingress
tc filter add dev eth0 parent ffff: protocol ip prio 3 u32 match ip dst 192.168.X.X match ip dport 25 0xffff police rate 10kbit burst 25kbit drop flowid :1

Что-то вы не то делать собираетесь. Трафик на ingress так никто не шейпит. Используйте ifb или imq.
Спасибо сказали: