Текст скрипта:
#!/bin/bash
localnets=localnets
enforta=enforta
smartcom=smartcom
local_if=eth1
local_net=192.168.2.0/24
localhost="127.0.0.1"
localnet_pref=1000
smartcom_pref=3000
enforta_pref=3010
smartcom_mark="0x1"
enforta_mark="0x2"
enforta_net="X.X.X.X/30"
smartcom_net="X.X.X.X/30"
enforta_if=eth2
smartcom_if=eth0
enforta_gw="X.X.X.X"
smartcom_gw="X.X.X.X"
ip route add $local_net dev $local_if table $localnets
#ip route del default via $smartcom_gw table main
ip route add $smartcom_net dev $smartcom_if table $smartcom
ip route add default via $smartcom_gw table $smartcom
ip route add $enforta_net dev $enforta_if table $enforta
ip route add default via $enforta_gw table $enforta
ip rule add lookup $localnets pref $localnet_pref
ip ru add pref $smartcom_pref from all fwmark $smartcom_mark lookup $smartcom
ip ru add pref $enforta_pref from all fwmark $enforta_mark lookup $enforta
######### tunes for iptables #########
localchain=localchain
tcpre=tcpre
iptables -t mangle -F $localchain
iptables -t mangle -F $tcpre
iptables -t mangle -X $localchain
iptables -t mangle -N $localchain
##### это добавлено в процессе поиска ответа ######
iptables -t mangle -A $tcpre -p udp --dport 12094 -j CONNMARK --set-mark $smartcom_mark
iptables -t mangle -A $tcpre -p udp --sport 12094 -j CONNMARK --set-mark $smartcom_mark
iptables -t mangle -A $tcpre -p udp --sport 12094 -j RETURN
iptables -t mangle -A $tcpre -p udp --dport 12094 -j RETURN
##### end of это добавлено в процессе поиска ответа ######
iptables -t mangle -A $tcpre -i $smartcom_if -m state --state NEW -j CONNMARK --set-mark $smartcom_mark
iptables -t mangle -A $tcpre -i $enforta_if -m state --state NEW -j CONNMARK --set-mark $enforta_mark
iptables -t mangle -A $tcpre -i $local_if -j $localchain
iptables -t mangle -A $localchain -d $local_net -j RETURN
iptables -t mangle -A $localchain -d $localhost -j RETURN
iptables -t mangle -A $localchain -d 10.125.0.0/16 -j RETURN ### внутренняя сеть OpenVPN
iptables -t mangle -A $localchain -j CONNMARK --restore-mark
iptables -t mangle -A $localchain -j RETURN
##### конец скрипта
Пакеты не идут по тем направлениям, которые ожидал. Более того если из table main убрать default route, вообще никуда не идут
Хотя счетчики на цепочках iptables работают.
># ip ro sh table smartcom
$smartcom_net dev eth0 scope link
default via $smartcom_gw dev eth0
># ip ro sh table enforta
$enforta_net dev eth2 scope link
default via $enforta_gw dev eth2
># ip ru sh
0: from all lookup local
1000: from all lookup localnets
3000: from all fwmark 0x1 lookup smartcom
3010: from all fwmark 0x2 lookup enforta
32766: from all lookup main
32767: from all lookup default
Буду благодарен если подскажете, что не так.