Для начала, построй правильно таблицу маршрутизации между 3-я интерфейсами в предположении, что ни какой фильтрации (а так-же NAT/MASQ) нет. На бумаге просчитай все варианты, их не так уж и много - всего 6 (eth0 ->eth1, eth1->eth0 и т.п.) И больше ее не трогай.
Затем опиши только правила фильтрации INPUT/OUTPUT для каждого интерфейса в отдельности - т.е. какие пакеты (протоколы) допустимы при взаимодействии собственно Linux машины и каждой конкретной сети . Наличие NAT/MASQ пока игнорируешь.
Далее описываются правила фильтрации "на проходе" - FORWARD. При чем, сразу попарно - eth0->eth1 & eth1->eth0, etc. Здесь определяешь какой сети (клиентам) допустимы какие пакеты (протоколы) из другой сети (клиетнам). Опять-же, наличие NAT/MASQ пока игнорируешь.
В последнюю очередь определяешь NAT/MASQ (если используешь)
Складываешь это в одну кучу - должно работать :-))