[Sysadmins] iptables -j MARK

Serge =?iso-8859-1?q?skompan_=CE=C1_kspu=2Ekr=2Eua?=
Вс Май 25 12:09:50 MSD 2008


В сообщении от Sunday 25 May 2008 02:00:24 Andrew Kornilov написал(а):
> Приветствую.
>
> Перекладываю сейчас ADSL Bandwidth Management HOWTO на настройки etcnet,
> для этого уже и патчик небольшой в config-qos добавил. Есть вопрос по
> модулю MARK в iptables: важен ли порядок следования команд iptables для
> конечного результата? Судя по тестированию, iptables не использует схему
> first match, то есть, возврата из списка правил нет при найденном
> совпадении. Поясню:
>
> mark as 23 if tcp and sport is 0:1024
> mark as 23 if tcp and dport is 0:1024
> mark as 23 if tcp and dport is 5190
> mark as 23 if tcp and sport is 5190
> mark as 23 if tcp and dport is 5222
> mark as 23 if tcp and sport is 5222
> mark as 23 if tcp and dport is 5223
> mark as 23 if tcp and sport is 5223
> mark as 22 if tcp and dport is ssh
> mark as 22 if tcp and sport is ssh
> mark as 22 if tcp and dport is telnet
> mark as 22 if tcp and sport is telnet
> mark as 21 if tcp and length is :64
> mark as 21 if udp
> mark as 20 if icmp
> mark as 26 if tcp and sport is 20
> mark as 26 if tcp and dport is 20
> mark as 26 if tcp and sport is 25
> mark as 26 if tcp and dport is 25
> mark as 26 if marked as 0
> mark as 26
>
> Например, правило маркировки mark as 26 if tcp and dport is 20 попадает в
> более общее правило mark as 23 if tcp and dport is 0:1024. iptables
> увеличивает счетчик в обоих правилах, то есть, он для каждого пакета
> пытается применить каждое правило, независимо от успешности предыдущего.
> Меня интересует, какое конечное значение mark будет у пакета (которое и
> будет анализировать /sbin/tc) и как его вообще увидеть? Хочется отладить
экспериментально пришел тоже к такому выводу. На выходе примениться последнее 
правило, которое удовлетворяет условию. Я вышел из такой ситуации добавлением 
после каждого правила return
mark as 23 if tcp and sport is 0:1024
if tcp and sport is 0:1024 return 
mark as 23 if tcp and dport is 5190
if tcp and dport is 5190 return 




Подробная информация о списке рассылки Sysadmins