[Sysadmins] iptables -j MARK

Andrew Kornilov =?iso-8859-1?q?hiddenman_=CE=C1_altlinux=2Eorg?=
Вс Май 25 03:00:24 MSD 2008


Приветствую.

Перекладываю сейчас 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) и как его вообще увидеть? Хочется отладить это
дело. 
Сейчас пока я убедился в одном: заявленной задержки того же ping-а в
районе 100 ms при загрузке канала получить на ядре 2.6.24 почему-то не удается,
она стабильно в районе 500 ms получается, хотя все счётчики крутятся и с виду
всё правильно ;-)

-- 




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