Pues yo te diría que fbuilder no me gusta nada. Aunque es bueno para ponerte a analizar los scripts que ejecuta, si te gusta el scripting en bash.
Supongo que has hecho masquerading en todas las redes.
Supongo que estás usando iptables.
Tú lo que haces todo lo que venga de eth1 y 2 y vaya a eth0 drop
Lo que pasa es que cuando haces un ping desde eth0 a eth1 no peta no?
Antes de la regla anterior, debes de introducir reglas que habiliten esto:
Para eso tienes el parámetro -m --state de iptables, por ejemplo, queremos acceder desde eth0 a un servidor ftp en eth1:
todo lo que venga de eth1 a eth0 por el puerto xxxx con un stado de stablished o related aceptar
Y eso con todo, para los ping etcétera.
Quédate con que si deniegas el acceso de una interfaz a otra, estás denegando no solo el acceso directo, de interfaz a interfaz, sino las posibles respuestas que puedas esperar
ping eth1 -> eth0 drop
ping eth0 -> eth1 accept y reenvía a eth0 DROP!!!
Por eso es tan importante el parámetro -m --state, porque hablilita la recepción de paquetes que han sido establecidos de ante mano. Eso como puedes ver, habilita que eth1 respondo a peticiones de eth0, pero no pueda ser el origen de la conexión.
Para hacer esto, debes usar la regla de tipo FORWARD, ya que input y output es para el propio firewall.
Lo tengo un poco olvidao el código exacto, pero si pones las reglas te digo más.
EDITO: Budethecat ha dicho lo mismo, se me ha pasado porque ha escrito todo junto y no se entiende ná! hahahah