PavelR можно же и без понтовУ меня ip rule show выдает:
from 192.168.0.0/24 lookup first
fwmark 1 lookup second
Про ВЕС правила я знаю меня интересует как все это разруливается если ВЕС не задан рукам, как то же он(ВЕС) раставляется.
Раз уж пошла такая пьянка у меняк вам PavelR будет еще парочка вопросов:
Повторю схему
iptables -t mangle -A PREROUTING -i FIRST -j CONNMARK --set-mark 1
iptables -t mangle -A PREROUTING -i SECOND -j CONNMARK --set-mark 2
iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
ip route add FIRST_NET dev FIRST_IF src FIRST_IP table FIRST
ip route add default via FIRST_GW table FIRST
ip rule add from FIRST_IP table FIRST
ip route add SECOND_NET dev SECOND_IF src SECOND_IP table SECOND
ip route add default via SECOND_GW table SECOND
ip rule add from SECOND_IP table SECOND
ip rule add fwmark 1 table FIRST
ip rule add fwmark 2 table SECOND
iptables -t nat -A PREROUTING -p tcp -d FIRST_IP --dport PORT -j DNAT --to-destination SECOND_IP:PORT
Первая проблема FIRST_IP и SECOND_IP это с внешки, а есть еще LAN_RANGE, и вот когда мы с LAN_RANGE пингуем/конектимся к FIRST_IP или к SECOND_IP, то пакеты из-за правил:
ip rule add from FIRST_IP table FIRST
ip rule add from SECOND_IP table SECOND
обламываются, естественно LAN_RANGE ответки не получит.
То есть это не проблема добавляем правила на LAN_RANGE и все работает:
ip rule add from FIRST_IP/SECOND_IP to LAN_RANGE table main
Но это нюанс который отнял у меня пол часа времени.
Вторая проблема это тот же DNAT, то есть source routing работает и CONNMARK тоже, а вот:
iptables -t nat -A PREROUTING -p tcp -d FIRST_IP --dport PORT -j DNAT --to-destination SECOND_IP:PORT
Уже нет :-(, такое впечатление что обратка от DNAT'а идет мима SNAT, то есть.
Цепляюсь с внешки на FIRST_IP PORT и на серваке запускаю tcpdump на интерфейсе FIRST_IFACE, получается такая картина:
tcpdump на FIRST_IFACE
....
xxx.xxx.xxx.xxx > FIRST_IP
xxx.xxx.xxx.xxx > FIRST_IP
xxx.xxx.xxx.xxx > FIRST_IP
SECOND_IP > xxx.xxx.xxx.xxx
SECOND_IP > xxx.xxx.xxx.xxx
SECOND_IP > xxx.xxx.xxx.xxx
....
SNAT
iptables -t nat -A POSTROUTING -o FIRST_IFACE -j SNAT --to-source FIRST_IP
iptables -t nat -A POSTROUTING -o SECOND_IFACE -j SNAT --to-source SECOND_IP
Вообщем я уже немного закипаю, нужна помощ