Auteur Sujet: Comment filtrer le flux traduit par le NAT64 (Jool) ?  (Lu 2292 fois)

0 Membres et 1 Invité sur ce sujet

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 465
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« le: 23 mars 2024 à 11:10:37 »
Bonjour !

Je n'arrive pas à comprendre plusieurs concepts (voir schéma en pièce-jointe).

Jool (traducteur NAT64) capture tous les paquets qu'il peut traduire. En fait, le problème c'est qu'aucun paquet valide ne peut être filtré par le mécanisme du pare-feu.

On mentionne dans la documentation en ligne que l'on peut exécuter Jool dans un espace de nommage réseau. De cette façon, il deviendrait ainsi possible de filtrer le flux réseau du traducteur.
En principe, une paire de périphériques Ethernet virtuels (veth1 et veth2) (man 4 veth) pourrait servir à établir une connexion entre l'espace de nommage courant (Main NS) et celui de Jool (Jool NS).

Sauf que je ne maîtrise pas bien le concept d'espace de nommage réseau ainsi que le pare-feu Linux « Netfilter ».

  • Est-ce qu'on peut filtrer le trafic provenant du traducteur et arrivant sur l'interface veth1 ?
  • Est-ce qu'on peut filtrer le trafic arrivant au traducteur depuis l'interface WAN (eth1) ?
  • Est-ce qu'on peut filtrer le trafic provenant du traducteur vers l'interface LAN (eth0) ?

Note : Invoquer Jool dans un espace de nommage réseau engendre un double NAT (NAT64 + NAT44).


Cdlt, basilix
« Modifié: 23 mars 2024 à 11:36:24 par basilix »

Fyr

  • Abonné Free fibre
  • *
  • Messages: 930
  • Talissieu 01
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #1 le: 23 mars 2024 à 14:52:44 »
j'ai rien pigé mais en général les NAT et/ou le filtrage vient en "coupure" entre deux "bidules"

Là ton Jool a une seule patte.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 465
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #2 le: 23 mars 2024 à 16:27:30 »
@Fyr : Moi non plus !  ???

J'essaye de deviner en recoupant les informations et en mélangeant à mes modestes connaissances.

J'ai essayé d'intégrer conceptuellement ce qu'exposait Ondřej Caletka lors du RIPE 87 (vidéo) et ce que j'ai pu trouver sur le sujet (essentiellement, des infos glanées sur le site Web NEXT.as).
Je ne sais pas si on peut vraiment parler de « pattes » avec les espaces de noms. On a deux piles réseaux internes au routeur. Jool s'exécute dans un autre espace de nom.

Citer
A network namespace is logically another copy of the network stack, with its own routes, firewall rules, and network devices.

On retrouve également ce concept d'espace de nom dans les conteneurs.

Le flux peut être acheminé de l'interface eth1 à l'interface eth0 (IP forwarding). Similairement, on peut sûrement acheminer le flux de eth0 à veth1 puis de veth1 à veth2 (périphériques Ethernet virtuels).
D'après ce que j'ai vu, il me semble que c'est du routage commun (assigner des préfixes et créer des routes statiques dans le routeur).

En schématisant :

WAN <--> LAN (trafic IP usuel) mais aussi,
WAN <--> JOOL (traduction IPv4 du serveur distant en IPv6) ou bien,
LAN <--> JOOL (traduction IPv6 du client local en IPv4).

Fyr

  • Abonné Free fibre
  • *
  • Messages: 930
  • Talissieu 01
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #3 le: 24 mars 2024 à 00:00:37 »
Sur la doc du RIPE

"Stealing packets in the PREROUTING, injecting translated packets into POSTROUTING"

c'est là tes "deux pattes".

y a des conf ave ip netns

https://man7.org/linux/man-pages/man8/ip-netns.8.html

ce que tout le monde appelle un VRF avec leur propre forwarding information bases (FIBs) ??

Par exemple sii tu as un mikrotik tu accèdes aux règles PRE/POST dans la partie RAW des firewalls. Donc "en dessous/antérieurement" aux règles input/ouput/forward dans ton linux

https://wiki.nftables.org/wiki-nftables/index.php/Netfilter_hooks

Fyr

  • Abonné Free fibre
  • *
  • Messages: 930
  • Talissieu 01
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #4 le: 24 mars 2024 à 00:16:15 »
Les BSD font deux tables, rentre les réseaux 4 et 6 dedans, et y a une commande pour la nat64


https://bsdrp.net/documentation/examples/nat64


Dans OPenSense y a ton jool qui s'appelle tayga (si je sujis bien...) et y a une conf, si ça t'inspire...



https://docs.opnsense.org/manual/how-tos/tayga.html#

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 465
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #5 le: 24 mars 2024 à 15:40:27 »
@Fyr :

C'est compliqué !

Je ne sais même pas si le schéma que j'ai adapté, dans mon premier post, en pièce-jointe, est correct. Je ne connais pas les concepts, à l'origine.
J'ai fais une approximation en me basant sur la configuration Ondřej Caletka et en essayant de suivre son propos (il a notamment affirmé que cela
engendrait un double NAT, du coup, on est plus dans le concept original de NAT64).

En outre, Jool n'est pas intégré nativement au système Netfilter et sa conception reste assez particulière (dixit son développeur). En ce qui concerne
le filtrage des paquets, je suis aussi complètement perdu. Netfilter filtre les paquets mais peut également traduire les adresses (NAT et NAPT).

Le problème c'est que je ne sais par quel « chemin » passe les paquets. Jool ne faisant pas de filtrage en utilisant le plugin Netfilter Jool.

Tayga est un traducteur NAT64 sans état fonctionnant en mode utilisateur. Comme je n'ai qu'une seule adresse IPv4 publique, il faut passer par le NAT44.
Je suppose aussi que Tayga ne filtre pas les paquets. Néanmoins on change complètement le concept original de « traducteur sans état ».

J'aurais voulu filtrer les paquets via Nftables ou firewall4 (fw4) (surtout pas Iptables). C'est embêtant mais je crois que je vais devoir creuser du côté de Netfilter.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 465
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #6 le: 25 mars 2024 à 09:48:06 »
Je pense que j'ai une idée du principe sur le filtrage par le pare-feu. Mais à vérifier.

Il faudrait que je filtre de eth1 à veth1 en IPv4 (trafic WAN) et de eth0 à veth1 en IPv6 (trafic LAN).
« Modifié: 25 mars 2024 à 10:48:21 par basilix »

ppn_sd

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 224
  • FLG (28190)
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #7 le: 29 mars 2024 à 14:40:59 »
J'aurais voulu filtrer les paquets
De mémoire, les paquets traités par Jool peuvent être filtrés en PREROUTING et POSTROUTING au niveau de la table MANGLE.
Ce n'est pas du tout fait pour ça, mais c'est à tester quand même ( :-X).

via Nftables ou firewall4 (fw4) (surtout pas Iptables). C'est embêtant mais je crois que je vais devoir creuser du côté de Netfilter.
Il y a un peu de confusion là. nftables/iptables utilisent tous les deux netfilter, qui est une "sous-couche".
fw4 d'openwrt est une surcouche pour nftables.

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 465
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #8 le: 29 mars 2024 à 14:49:53 »
@ppn_sd:

Oui, nftables est un socle d'application (framework) basé sur Netfilter. Oui, fw4 est une interface basée sur nftables. Ce que je voulais dire c'est que je dois acquérir
des connaissances de base sur Netfilter pour mieux appréhender la pile réseau de Linux.

Non, je ne souhaite pas filtrer les paquets avec la table "mangle" (terminologie iptables).

ppn_sd

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 224
  • FLG (28190)
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #9 le: 29 mars 2024 à 16:20:08 »
Juste par curiosité, que filtres-tu qui nécessite ce machinisme ?

basilix

  • Abonné Orange Fibre
  • *
  • Messages: 465
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #10 le: 29 mars 2024 à 17:06:22 »
@ppn_sd:

Je souhaite administrer mon réseau local en IPv6 uniquement. Le pare-feu du réseau local domestique doit filtrer le trafic passant par le traducteur IPv4/IPv6.

Cela dit, il me semble que c'est finalement le fonctionnement usuel de Netfilter, en étant apparié à Jool. Je ne fais que reprendre ce qui a été déjà fait, sauf que
je suis débutant dans le domaine.

Le traducteur (NAT64) permet en principe à un client local en IPv6 de se connecter à un serveur distant en IPv4. Évidemment, ce sera fait en remplacement de
la Livebox.

ppn_sd

  • Abonné RED by SFR fibre FttH
  • *
  • Messages: 224
  • FLG (28190)
Comment filtrer le flux traduit par le NAT64 (Jool) ?
« Réponse #11 le: 29 mars 2024 à 18:00:03 »
J'entends bien tout ça, mais que veux-tu filtrer exactement en sortie de Jool ?