Re: 2 lacza i policy routing
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
Reply to: