règles iproute2 et NAT iptables… quelle est la différence?

8

Nous avons 2 connexions FAI différentes. Notre "IT guy" précédent a configuré notre pare-feu comme suit:

Lorsqu'il a /etc/rc.localété exécuté au démarrage, il a fait un tas de commandes ip rule addet ip route addafin de router certains hôtes internes pour utiliser certaines connexions ISP.

Puis à la fin de /etc/rc.local, il a exécuté nos iptablesrègles de pare-feu générées par Firewall Builder. Ces iptablesrègles contiennent des règles de stratégie et de NAT.

Ce que je ne comprends pas, c'est pourquoi at-il utilisé iproute2pour spécifier des règles et des itinéraires, mais aussi pour spécifier des règles NAT iptables? Pourquoi n'a-t-il pas tout fait dans l'un ou l'autre au lieu de les utiliser tous les deux? Aurait-il pu se débarrasser des iproute2règles et des routes et simplement mettre toutes ces mêmes règles dans les iptablesparamètres NAT?

Jake Wilson
la source

Réponses:

13

Bien qu'il y ait un certain chevauchement dans la fonctionnalité entre les deux outils, il y a beaucoup de choses que vous ne pouvez faire qu'à partir d'un seul des outils. iproute2ne peut rien faire avec les règles du pare-feu netfilter. iptablesne peut pas faire des choses comme attribuer des adresses IP.

Même dans les endroits où les fonctionnalités semblent se chevaucher, elles ne se chevauchent pas vraiment. Par exemple, vous pouvez faire la traduction d'adresses avec les deux iproute2et iptables. Mais la traduction d'adresse que vous pouvez faire avec iproute ne prend aucun état en considération et ne réécrit absolument pas le paquet. Il existe plusieurs protocoles réseau comme FTP, SIP, H.323, etc. où les adresses IP sont incluses dans le paquet, et pas seulement dans les en-têtes. Si vous utilisez la méthode iproute pour la traduction d'adresses, ces types de protocoles seront rompus. Netfilter fait un bien meilleur travail de traduction d'adresses.

Dans la plupart des cas, lorsque les fonctionnalités se chevauchent, elles sont gérées de différentes manières. Il est possible avec un module de faire du routage iptables, mais la dernière fois j'ai vérifié que le module n'était pas sur la plupart des distributions pour ne pas avoir netfilter / iptablespatché avec la cible ROUTE . Si cette cible n'est pas disponible, vous ne pouvez pas utiliser netfilter pour le routage à moins que vous ne soyez d'humeur à compiler vos propres noyaux. Votre décision concernant l'outil à utiliser sera prise simplement parce que la fonctionnalité n'est pas disponible dans la version des outils que vous exécutez. Même si vous avez la cible ROUTE, d'après ce que je comprends, il n'est pas aussi efficace d'utiliser netfilter pour les décisions de routage que de le faire avec les tables de routage standard avec iproute2manipulations.

Beaucoup utilisent également le bon outil pour le bon travail. iproute2est principalement conçu pour gérer le routage et les adresses sur votre ordinateur. iptables/ Netfilter est conçu pour le pare-feu.

Je pense que dans les endroits où une personne pourrait utiliser l'un ou l'autre outil, elle utilisera généralement l'outil qu'elle connaît le mieux. Je sais que j'utilise la cible MARK de iptablespour marquer certains paquets pour une route ou l'autre même si je pouvais écrire la même règle avec iproute2.

Zoredache
la source