Вроде все правильно, сложно подсказать, но я бы проверил
— а в цепочке FORWARD нет ли какого правила, которое идет перед
iptables -A FORWARD -i eth2 -o eth1 -j DROP
и пропускает пакеты
— а на уровне свича все разделено (хотя этот вопрос уже был)
— а не могут ли пакеты форвардится lan2 — lan0 — lan1, хотя вроде route нормальный…
— кстати, а на машинах из lan2 — lan1 стоят шлюзы правильные?
— попробуйте записать пакеты в логи iptables или посмотрите на них tcpdump-ом — чтобы узнать, как же они все-таки просачиваются