Je sais que Linux a 3 tables intégrées et chacune d'elles a ses propres chaînes comme suit:
FILTRE : AVANT, AVANT, POSTROUTER
NAT : PRÉROUDAGE, ENTRÉE, SORTIE, POSTROUTING
MANGLE : PRÉROUGEMENT, ENTRÉE, AVANT, SORTIE, POSTROUTING
Mais je ne peux pas comprendre comment ils sont traversés, dans quel ordre, s'il y en a. Par exemple, comment sont-ils traversés lorsque:
- J'envoie un paquet à un PC dans mon même réseau local
- quand j'envoie un paquet à un PC dans un autre réseau
- lorsqu'une passerelle reçoit un paquet et doit le transmettre
- quand je reçois un paquet qui m'est destiné
- tout autre cas (le cas échéant)
Wikipedia a un grand diagramme pour montrer l'ordre de traitement.
Pour plus de détails, vous pouvez également consulter la documentation iptables, en particulier le chapitre sur les tables et les chaînes . Qui comprend également un organigramme .
L'ordre change en fonction de la façon dont netfilter est utilisé (en tant que pont ou filtre de réseau et s'il a une interaction avec la couche d'application).
Généralement (bien qu'il y ait plus de diable dans les détails du chapitre lié ci-dessus), les chaînes sont traitées comme:
- Voir la chaîne INPUT comme "trafic entrant de l'extérieur vers cet hôte".
- Voyez la chaîne FORWARD comme "le trafic qui utilise cet hôte comme routeur" (la source et la destination ne sont pas cet hôte).
- voir la chaîne OUTPUT comme "le trafic que cet hôte veut envoyer".
- PREROUTING/POSTROUTING a des utilisations différentes pour chacun des types de table (par exemple pour les tables nat, PREROUTING est pour le trafic SNAT entrant (routé/transféré) et POSTROUTING est pour le trafic DNAT sortant (routé/transféré). Consultez les documents pour en savoir plus détails.
Les différents tableaux sont:
- Mangle consiste à changer les paquets (type de service, durée de vie, etc.) lors de la traversée.
- Nat doit mettre NAT règles.
- Raw doit être utilisé pour le marquage et le suivi des connexions.
- Le filtre sert à filtrer les paquets.
Donc, pour vos cinq scénarios:
- Si l'hôte d'envoi votre hôte avec iptables, OUTPUT
- Comme ci-dessus
- La chaîne FORWARD (à condition que la passerelle soit l'hôte avec iptables)
- Si "moi" est l'hôte avec iptables, INPUT
- Regardez les règles de la chaîne ci-dessus (qui est la règle générale) et le diagramme de flux (et cela varie également selon ce que vous essayez d'atteindre avec IPTables)