pomoge Ci (mam nadzieje ;) ), bo w koncu tez rozwiazalam ten problem. ;) Przypuszczalnie w Twojej sytuacji zapomniales o rp_filter lub forwardzie gdzies, ale napisze wiecej - bo mi zadzialalo ladnie i dziala do dzis ;)
Moja sytuacja byla podobna, chociaz ja postanowilam sobie pozostawic dwa lacza WAN na jednej sieciowce z kilku wzgledow, a jednym z nich jest brak potrzeby wylaczenia rp_filter i do tego jeszcze kilka innych ciekawych efektow. ;) Czyli wedlug Twojego schematu (majac dwie sieciowki "zewnetrzne") sprawdz czy masz 0 w: /proc/sys/net/ipv4/conf/*/rp_filter [o problemach z tym napisane jest np. w dokumentacji kernela lub tu http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html#AEN634 ] Na poczatku do testow byc moze bedziesz chcial tez przepuscic pelen FORWARD na sieciowkach. Ja wychodze z punktu, gdzie mam postawione interfejsy oraz domyslny routing. Stworzylam sobie generalnie dwie reguly routingu - jedna zeby w ogole moc sie dogadac przed drugie lacze, zrobic taki routing dla ogolnego ruchu: # routing dla drugiego lacza /bin/ip rule add from A.B.C.0/X table zewn2 /bin/ip route add default via A.B.C.1 dev eth0 table zewn2 a druga do markowanych pakietow: /bin/ip rule add fwmark 2 table www_out /bin/ip route add default via A.B.C.1 dev eth0 table www_out # odswiez tablice /bin/ip route flush cache W preroutingu mam markowanie tylko tych ludzi, ktorzy wchodza z LANu na sieciowke eth1: ${iptables} -A PREROUTING -i eth1 -t mangle -p tcp --dport 80 -j MARK --set-mark 2 I w postroutingu robie jeszcze nat-a, poniewaz operuje na eth1 na nieroutowanych klasach adresow: for netaddr in `cat ${local_nat}`; do # markowane adresy najpierw natuj na lacze zew2 ${iptables} -t nat -A POSTROUTING -s ${netaddr} -m mark --mark 0x2 -j SNAT --to ${zewn2} #pozostale na drugie lacze ${iptables} -t nat -A POSTROUTING -s ${netaddr} -o eth0 -j SNAT --to-source ${zewn1} done ${local_nat} to adresy moich lokalnych sieci. I to chyba wszystko. :-) pozdr, M

