В общем проблемы 2е, заранее приношу свои извенения, если я не нашёл ответа, которы уже есть, пару дней уже гуглю и здесь тоже искал, но видимо из-за неумения искать возможно не нашёл ответа :D
В общем стояла задача маркировать несколько видов траффика на основе анализа destionation address и потом, в зависимости от источника разбивать весь траффик на два канала - один для локального провайдера, другой для всего остального. При этом для всего одного источника(компьютера) нужно делать SNAT а для другого(он же сервер) нужно просто маршрутизировать. В ходе решения так сказать, столкнулся с парой проблем.Первая: iptables попросту не понимает маски в -d , если указать хостнейм или просто айпишник, то всё впорядке, ежели айпишник с маской, то правило не реагирует. Пример правила:
iptables -t mangle -A PREROUTING -s 192.168.20.2 -d 81.91.32.0/19 -j MARK --set-mark 1002
А вот если сделать так:
iptables -t mangle -A PREROUTING -s 192.168.20.2 -j MARK --set-mark 1002
или так:
iptables -t mangle -A PREROUTING -s 192.168.20.2 -d 81.91.36.61 -j MARK --set-mark 1002
то всё пашет без запинки.
Вторая: ну пометить то я пометил, хотя не всё что надо как видно из первой проблемы, но метки установлены, проверял через -j LOG, проверял и через сами таблицы с помощью такого
iptables -t nat -A POSTROUTING -m mark -mark 1002 -j SNAT --to-source 85.235.47.26
Ну и в итоге снат работает, то есть метка айпитеблесами всё же устанавливается, хотя и без возможности использовать маски.
Но вот делать так:
ip rule fwmark 1002 table 30
не получается, оно попросту не работает, хотя скажем так :
ip rule from 192.168.20.2 table 30
всё срабатывает на ура.
Поискал вот это в конфиге ядре, не нашёл:
IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK
Версия ядра: linux-2.6.20-gentoo-r7
Версия айпитаблиц: 1.3.8
Версия iproute2: 2.6.15.20060110
Вполне вероятно что сам делаю что-то такое, чего нельзя делать, хотя судя по Linux Advanced Routing & Traffic Control HOWTO делается именно так.
Поможите чем можете, пасибо)