Projet

Général

Profil

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

Ajouté par Karim Ayari il y a presque 9 ans. Mis à jour il y a environ 8 ans.

Statut:
Fermé
Priorité:
Normal
Début:
22/07/2015
Echéance:
% réalisé:

100%

Temps estimé:
4.00 h
Temps passé:
Restant à faire (heures):
0.0

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

Révision 4a82371f (diff)
Ajouté par Fabrice Barconnière il y a plus de 8 ans

ERA/ipset : gestion des entrées ipset de type nom de domaine

era/backend/processors.py : noms de domaines entre [...]

ref #12453 @8h

Révision 969bdf96 (diff)
Ajouté par Fabrice Barconnière il y a plus de 8 ans

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 ?

Formats disponibles : Atom PDF