Tâche #12453
Scénario #12510: Gérer les noms de domaine contenant un tiret dans les règles ipset ERA
ipset: problème avec les nom de domaines
Description
Je souhaite créer une exception à partir d'une creolevar contenant un nom de domaine, notamment :
root@plateforme:/usr/share/era/ipsets# CreoleGet passerelle_smtp smtp.ac-lyon.fr root@plateforme:/usr/share/era/ipsets#
dans mon dictionnaire passerelle_smtp est de type domain.
Je crée mon exception et quand je relance bastion, il répond :
Regénération des règles de pare-feu (modèle "4z24_1")ipset v6.11: Syntax error: cannot resolve 'smtp.ac' to an IPv4 address: Name or service not known Syntax error: cannot parse smtp.ac: resolving to IPv4 address failed ipset v6.11: Syntax error: cannot resolve 'smtp.ac' to an IPv4 address: Name or service not known Syntax error: cannot parse smtp.ac: resolving to IPv4 address failed
le contenu des scripts ipset :
ipset create bastion-dmz-exterieur-11-dst hash:net ipset add bastion-dmz-exterieur-11-dst smtp.ac-lyon.fr
Afin de comprendre qui me renvoie ce message, j'ai commenté la partie qui lance les scripts ipset dans lance.firewall.
Cela m'a permis de comprendre que c'est ipset qui n'est pas content, je peux avoir le même message quand je lance le script à la main.
À un moment dans tous mes tests je me suis aperçu que dans le script ipset, le nom de domaine était encadré de [ ]... je croyais à un bug.
J'ai reparcouru ma conf, reconfiguré et depuis je n'ai plus ces crochets.
En ajoutant les crochets à la main, il n'y a plus aucune erreur, il fait la résolution de nom sur le nom complet.
Vu dans la page de manuel
If host names or service names with dash in the name are used instead of IP addresses or service numbers, then the host name or service name must be enclosed in square brackets. Example:
ipset add foo [test-hostname],[ftp-data]_
J'ai fait beaucoup de tests, alors si vous arrivez à reproduire et confirmer que c'est un bug je serais content !
Révisions associées
ERA/ipset : gestion des entrées ipset de type nom de domaine
era/backend/processors.py : noms de domaines entre [...]
ref #12453 @8h
ERA/ipset : gestion des entrées ipset de type nom de domaine
era/backend/processors.py : Traiter uniquemnt le noms de domaines pas entre [...]
ref #12453 @1h
Historique
#1 Mis à jour par Karim Ayari il y a presque 9 ans
Nouvelle description du problème.
#2 Mis à jour par Daniel Dehennin il y a presque 9 ans
- Description mis à jour (diff)
#3 Mis à jour par Daniel Dehennin il y a presque 9 ans
- Sujet changé de ERA : création d'une directive avec une variable contenant un nom dns à ipset: problème avec les nom de domaines
#4 Mis à jour par Daniel Dehennin il y a presque 9 ans
- Description mis à jour (diff)
#5 Mis à jour par Karim Ayari il y a presque 9 ans
on avance! je viens de comprendre que les [ ] étaient apparus car j'avais fait un essai avec une exception en type nom et non pas en creolvar (merci nebuchadnezzar!)
du coup en regardant le code on s'aperçoit effectivement que les [ ] ne sont pas prévus dans le cas d'exception de type creolvar et notamment quand la variable contient un nom de domaine :
#src if exc['is_active'] == 'eolvar': eolvar = exc['ipname'] ipsets_add_src = TEMPLATE_IPSETS.format(eolvar=eolvar, ipset_add=ipset_add, ipsets_name=self.ipsets_name_src) multi = Multivar([ipsets_add_src]) ipsets_src_rules.append("".join(list(multi.process())))
#dst if exc['is_active'] == 'eolvar': eolvar = exc['ipname'] ipsets_add_dst = TEMPLATE_IPSETS.format(eolvar=eolvar, ipset_add=ipset_add, ipsets_name=self.ipsets_name_dst) multi = Multivar([ipsets_add_dst]) ipsets_dst_rules.append("".join(list(multi.process())))
il faut donc tester le type de la variable et ajouter les [ ] quand il s'agit d'un nom de domaine.
Karim avait ajouté :
je n'a pas précisé que c'est sur un amon 2.4.1
#6 Mis à jour par Joël Cuissinat il y a plus de 8 ans
- Tracker changé de Evolution à Tâche
- Temps estimé mis à 4.00 h
- Tâche parente mis à #12510
- Restant à faire (heures) mis à 4.0
#7 Mis à jour par Scrum Master il y a plus de 8 ans
- Statut changé de Nouveau à En cours
#8 Mis à jour par Scrum Master il y a plus de 8 ans
- Assigné à mis à Fabrice Barconnière
#9 Mis à jour par Fabrice Barconnière il y a plus de 8 ans
- % réalisé changé de 0 à 100
- Restant à faire (heures) changé de 4.0 à 0.25
#10 Mis à jour par Fabrice Barconnière il y a plus de 8 ans
- % réalisé changé de 100 à 80
- Restant à faire (heures) changé de 0.25 à 2.0
La modification casse le test Squash AM-T01-004 (Eole 2.4)
#11 Mis à jour par Fabrice Barconnière il y a plus de 8 ans
- % réalisé changé de 80 à 100
- Restant à faire (heures) changé de 2.0 à 0.25
#12 Mis à jour par Fabrice Barconnière il y a plus de 8 ans
- % réalisé changé de 100 à 80
- Restant à faire (heures) changé de 0.25 à 1.0
En construisant le test Squash :
* Regénération des règles de pare-feu (modèle "4zones")root - Erreur lors de l'instanciation du template de /usr/share/era/ipsets/bastion-admin-exterieur-2-dst.sh : unsupported operand type(s) for /: 'CreoleMaster' and 'unicode' chmod: impossible d'accéder à «/usr/share/era/ipsets/bastion-admin-exterieur-2-dst.sh»: Aucun fichier ou dossier de ce type
#13 Mis à jour par Fabrice Barconnière il y a plus de 8 ans
- % réalisé changé de 80 à 100
- Restant à faire (heures) changé de 1.0 à 0.25
#14 Mis à jour par Fabrice Barconnière il y a plus de 8 ans
- Restant à faire (heures) changé de 0.25 à 1.0
#15 Mis à jour par Fabrice Barconnière il y a plus de 8 ans
- Restant à faire (heures) changé de 1.0 à 0.25
Révision c36c3416 : ref dans la mauvaise demande.
#16 Mis à jour par Scrum Master il y a plus de 8 ans
- Statut changé de En cours à Résolu
#17 Mis à jour par Joël Cuissinat il y a plus de 8 ans
OK sur 2.4.3
#18 Mis à jour par Joël Cuissinat il y a plus de 8 ans
- Statut changé de Résolu à Fermé
- Restant à faire (heures) changé de 0.25 à 0.0
OK sur 2.5.1 avec en bonus le petit warning associé au scénario #12878 :
Génération des règles de pare-feu (modèle "4zones")Warning: smtp.ac-lyon.fr resolves to multiple addresses: using only the first one returned by the resolver. Warning: smtp.ac-lyon.fr resolves to multiple addresses: using only the first one returned by the resolver.
#19 Mis à jour par Christophe Dezé il y a plus de 8 ans
il y aurait moyen de pousser la modif sur 2.4.2 ?
#20 Mis à jour par Karim Ayari il y a environ 8 ans
je viens de tester sur un Amon 2.5.1 RC
j'ai ajouté dans mon exception la variable passerelle_smtp qui contient smtp.ac-lyon.fr
et voilà ce que j'ai dans le script ipset :
ipset add bastion-per-exterieur-6-dst [ac-lyon.fr]
et je n'ai aucun warning.
#21 Mis à jour par Karim Ayari il y a environ 8 ans
idem avec un nom
#22 Mis à jour par Benoit Guinet il y a environ 8 ans
Le problème sera t il corrigé sur amon 2.4.2 et 2.4.1 ?