
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, afirma:
Se você estiver anexando (-A) ou excluindo (-D) uma cadeia, você desejará aplicá-la aos dados da rede que viajam em uma das três direções:
- INPUT - Todos os pacotes recebidos são verificados em relação às regras desta cadeia.
- SAÍDA - Todos os pacotes de saída são verificados em relação às regras desta cadeia.
- FORWARD - Todos os pacotes enviados para outro computador são verificados em relação às regras desta cadeia.
Isso me confunde porque, na minha opinião, os pacotes que saem para um host SERIAM enviados. Então, existem cenários em que um pacote iria para outro computador, mas NÃO seria "de saída"? Como o iptables distinguiria entre os dois?
Responder1
OUTPUT é para pacotes emitidos pelo host. Seu destino geralmente é outro host, mas pode ser o mesmo host por meio da interface de loopback, portanto, nem todos os pacotes que passam por OUTPUT são de fato enviados.
FORWARD é para pacotes que não são emitidos pelo host nem direcionados ao host. Eles são os pacotes que o host está apenas roteando.
Quando você começa a pesquisar sobre manipulação de pacotes e NAT, a história completa éum pouco mais complexo.
Responder2
No meu entendimento:
ENTRADA: dst IP está no host, mesmo que tenha várias portas com várias sub-redes
SAÍDA: o IP src é do host, qualquer porta
FORWARD: Nem dst IP no host nem src IP do host
Por exemplo, para o roteador A
ENTRADA é:
192.168.10.1 -> 192.168.10.199
192.168.10.1 -> 192.168.2.1
A SAÍDA é:
192.168.10.199 -> xxxx
192.168.2.1 -> xxxx
FRENTE é:
192.168.10.1 -> 192.168.2.199
192.168.10.1 -> 192.168.8.1
192.168.10.1 -> 192.168.8.199