Приветствую.
Есть два маршрута наружу, роутятся посредством:
# ip rule
0: from all lookup local
101: from all fwmark 0x1/0x1 lookup prov1
102: from all fwmark 0x2/0x2 lookup prov2
32766: from all lookup main
32767: from all lookup default
Есть правила вида:
iptables -t mangle -A INPUT -i ppp0 -j CONNMARK --set-mark 0x2
iptables -t mangle -A INPUT -i ppp1 -j CONNMARK --set-mark 0x1
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
iptables -t mangle -A OUTPUT -m mark ! --mark 0x0 -j ACCEPT
iptables -t mangle -A OUTPUT -d prov2_site -j MARK --set-mark 0x2
iptables -t mangle -A FORWARD -d prov2_site -j MARK --set-mark 0x2
Проблемы две:
1. С некоторых пор (вроде бы) FORWARD часть перестала работать. То есть, с внутреннего хоста, обращение к prov2_site идет через prov1, хотя должно бы через prov2 идти. С самого роутера все правильно. Ядро апдейтилось, но в пределах 2.6.38 (ubuntu natty), так что я уже не уверен что оно работало раньше.
2. Захотелось направлять исходящий ssh через prov2. Делаю:
iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 0x2
iptables -t mangle -A FORWARD -i eth1 -p tcp --dport 22 -j MARK --set-mark 0x2
Не работает ни для FORWARD ни для OUTPUT.
Подскажите, пожалуйста, что я делаю не так? Сам уже голову сломал. Заранее большое человеческое спасибо.