Qual é a diferença entre as cadeias OUTPUT e FORWARD no iptables?

22

CentOS 6.0

Estou estudando iptables e estou ficando confuso sobre a diferença entre as cadeias FORWARD e OUTPUT. Na minha documentação de treinamento, ele declara:

Se você estiver anexando a (-A) ou excluindo de (-D) uma cadeia, poderá aplicá-lo aos dados da rede que trafegam em uma das três direções:

  • ENTRADA - Todos os pacotes recebidos são verificados em relação às regras nesta cadeia.
  • SAÍDA - Todos os pacotes enviados são verificados em relação às regras nesta cadeia.
  • FORWARD - Todos os pacotes enviados para outro computador são verificados em relação às regras nesta cadeia.

Isso me confunde porque, na minha opinião, os pacotes que saem para um host seriam enviados. Portanto, existem cenários em que um pacote iria para outro computador, mas NÃO seria "enviado"? Como o iptables distinguiria os dois?

Mike B
fonte

Respostas:

26

OUTPUT é para pacotes emitidos pelo host. Seu destino geralmente é outro host, mas pode ser o mesmo host pela interface de loopback, portanto, nem todos os pacotes que passam pelo OUTPUT são de fato enviados.

FORWARD é para pacotes que não são emitidos pelo host nem direcionados ao host. São os pacotes que o host está apenas roteando.

Quando você começa a explorar o NAT e a manipulação de pacotes, a história completa é bastante mais complexa .

Gilles 'SO- parar de ser mau'
fonte
Interessante ... portanto, para o propósito do meu entendimento, é justo dizer que OUTPUT é para pacotes "originários" do sistema ... e FORWARD é para pacotes que não são originários do sistema ou são destinados a e, em vez disso, estão "passando" pelo sistema?
Mike B
1
Não é bem assim, os pacotes "encaminhados" também são "enviados" pela interface de rede .. assim como os pacotes são "recebidos" antes de serem "encaminhados". O pacote entra, destinado ao sistema externo, entra na cadeia "encaminhada" , o iptables decide OK para encaminhar, o pacote entra na "cadeia de saída", verifica o iptables, vê seu "ok" para saída, o pacote sai .. simples!
Grizly 18/10/2013
2
@Grizly Não, a partir da memória (eu admito que eu não testei especificamente ao escrever esta resposta) e de acordo com o esquema I conectar-se a, um pacote sempre passa por exatamente uma das três filtercadeias ( INPUTou OUTPUTou FORWARD). (Supondo que alguma outra corrente não a solte antes.) As correntes manglee natsão diferentes, talvez você estivesse pensando na manglecorrente?
Gilles 'SO- stop be evil'
0

Para meu entendimento:

ENTRADA: o dst IP está no host, mesmo que ele tenha várias portas com várias sub-redes

SAÍDA: o src IP é do host, porta

FORWARD: nem o dst IP no host nem o src IP do host

insira a descrição da imagem aqui

Por exemplo, para o roteador A

INPUT é:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

SAÍDA é:

192.168.10.199 -> xxxx

192.168.2.1 -> xxxx

FORWARD é:

192.168.10.1 -> 192.168.2.199

192.168.10.1 -> 192.168.8.1

192.168.10.1 -> 192.168.8.199

flz
fonte