Quelle est la différence entre les chaînes OUTPUT et FORWARD dans iptables?

22

CentOS 6.0

J'étudie les iptables et je suis confus sur la différence entre les chaînes FORWARD et OUTPUT. Dans ma documentation de formation, il indique:

Si vous ajoutez à (-A) ou supprimez de (-D) une chaîne, vous voudrez l'appliquer aux données réseau voyageant dans l'une des trois directions:

  • INPUT - Tous les paquets entrants sont vérifiés par rapport aux règles de cette chaîne.
  • SORTIE - Tous les paquets sortants sont vérifiés par rapport aux règles de cette chaîne.
  • FORWARD - Tous les paquets envoyés à un autre ordinateur sont vérifiés par rapport aux règles de cette chaîne.

Cela m'embrouille parce que, dans mon esprit, les paquets partant pour un hôte SERONT sortants. Y a-t-il donc des scénarios où un paquet irait vers un autre ordinateur mais ne serait PAS "sortant"? Comment iptables distinguerait-il les deux?

Mike B
la source

Réponses:

26

OUTPUT est destiné aux paquets émis par l'hôte. Leur destination est généralement un autre hôte, mais peut être le même hôte via l'interface de bouclage, donc tous les paquets qui passent par OUTPUT ne sont en fait pas sortants.

FORWARD est destiné aux paquets qui ne sont ni émis par l'hôte ni dirigés vers l'hôte. Ce sont les paquets que l'hôte achemine simplement.

Lorsque vous commencez à creuser dans la manipulation de paquets et le NAT, l'histoire complète est plutôt plus complexe .

Gilles 'SO- arrête d'être méchant'
la source
Intéressant ... donc aux fins de ma compréhension, est-il juste de dire que OUTPUT est pour les paquets qui sont "originaires" du système ... et FORWARD est pour les paquets qui ne proviennent pas du système ou qui sont destinés à et vont à la place "à travers" le système?
Mike B
1
Pas tout à fait, les paquets qui sont "retransmis" sont également "sortis" par l'interface réseau .. tout comme les paquets sont "entrés" avant d'être "transférés" .. Le paquet entre, destiné au système étranger, le paquet entre dans la chaîne "forward" , iptables décide de son OK pour transmettre, le paquet entre dans la "chaîne de sortie", iptables vérifie, voir son "ok" pour sortir, le paquet quitte .. simples!
Grizly
2
@Grizly Non, de mémoire (j'avoue que je n'ai pas testé spécifiquement lors de l'écriture de cette réponse) et selon le diagramme auquel je renvoie, un paquet passe toujours par exactement l'une des trois filterchaînes ( INPUTou OUTPUTou FORWARD). (En supposant qu'une autre chaîne ne la laisse pas tomber avant.) Les chaînes mangleet natsont différentes, peut-être pensiez-vous à la manglechaîne?
Gilles 'SO- arrête d'être méchant'
0

À ma connaissance:

ENTRÉE: dst IP est sur l'hôte, même s'il a plusieurs ports avec plusieurs sous-réseaux

SORTIE: src IP provient de l'hôte, sur l'un des ports

AVANT: Ni IP dst sur l'hôte ni IP src de l'hôte

entrez la description de l'image ici

Par exemple, vers le routeur A

INPUT est:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

LA SORTIE est:

192.168.10.199 -> xxxx

192.168.2.1 -> xxxx

AVANT c'est:

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
la source