iptables, e networking em geral, é mais complicado do que você está dando crédito.
Então, digamos que você faça isso apenas, com a esperança de ativar todo o tráfego de saída da eth1 interna, como em sua primeira linha:
-A FORWARD -i eth1 -p tcp -j ACCEPT
-P FORWARD DROP
Quando isso acontece, todas as conexões e tráfego são bidirecionais . O FORWARD está processando todo o tráfego que não está direcionando o roteador (INPUT) ou proveniente do roteador (OUTPUT). Portanto, o FORWARD obtém a conexão de iniciação de tráfego tcp de saída (que sua regra permite) e todas as respostas tentando reconhecer essa conexão e repassar o tráfego (o que, já que você está descartando tudo que não corresponde, exigiria uma nova regra permitir).
Isto é onde o iptables fica muito complicado, muito rapidamente, porque configurar uma regra para cada pacote potencial em ambas as direções é uma loucura. Ele começa a ficar mais simples se a primeira regra for sempre permitir o tráfego em conexões estabelecidas usando -m state - state ESTABLISHED, quando você começar a usar na sua outra questão resolvendo o seu problema NAT . Isso permitirá que você apenas escreva regras para as conexões que deseja permitir iniciar. Também pode ser útil classificar as conexões de entrada e saída em suas próprias regras (a menos que você esteja preocupado apenas com a saída), como abaixo:
#setup
-N outbound
-N inbound
#design
-A FORWARD -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j inbound
-A FORWARD -i eth1 -o eth0 -j outbound
-P FORWARD DROP
#allow outgoing web access
-A outbound -p tcp -m tcp --dport 80,443 -j ACCEPT
#and nothing else
-A outbound DROP
#etc....