Project

General

Profile

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

Added by Karim Ayari over 5 years ago. Updated about 5 years ago.

Status:
Fermé
Priority:
Normal
Start date:
07/22/2015
Due date:
% Done:

100%

Estimated time:
4.00 h
Spent time:
Remaining (hours):
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 !

Associated revisions

Revision 4a82371f (diff)
Added by Fabrice Barconnière over 5 years ago

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

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

ref #12453 @8h

Revision 969bdf96 (diff)
Added by Fabrice Barconnière over 5 years ago

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

History

#1 Updated by Karim Ayari over 5 years ago

Nouvelle description du problème.

#2 Updated by Daniel Dehennin over 5 years ago

  • Description updated (diff)

#3 Updated by Daniel Dehennin over 5 years ago

  • Subject changed from ERA : création d'une directive avec une variable contenant un nom dns to ipset: problème avec les nom de domaines

#4 Updated by Daniel Dehennin over 5 years ago

  • Description updated (diff)

#5 Updated by Karim Ayari over 5 years ago

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 Updated by Joël Cuissinat over 5 years ago

  • Tracker changed from Evolution to Tâche
  • Estimated time set to 4.00 h
  • Parent task set to #12510
  • Remaining (hours) set to 4.0

#7 Updated by Scrum Master over 5 years ago

  • Status changed from Nouveau to En cours

#8 Updated by Scrum Master over 5 years ago

  • Assigned To set to Fabrice Barconnière

#9 Updated by Fabrice Barconnière over 5 years ago

  • % Done changed from 0 to 100
  • Remaining (hours) changed from 4.0 to 0.25

#10 Updated by Fabrice Barconnière over 5 years ago

  • % Done changed from 100 to 80
  • Remaining (hours) changed from 0.25 to 2.0

La modification casse le test Squash AM-T01-004 (Eole 2.4)

#11 Updated by Fabrice Barconnière over 5 years ago

  • % Done changed from 80 to 100
  • Remaining (hours) changed from 2.0 to 0.25

#12 Updated by Fabrice Barconnière over 5 years ago

  • % Done changed from 100 to 80
  • Remaining (hours) changed from 0.25 to 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 Updated by Fabrice Barconnière over 5 years ago

  • % Done changed from 80 to 100
  • Remaining (hours) changed from 1.0 to 0.25

#14 Updated by Fabrice Barconnière over 5 years ago

  • Remaining (hours) changed from 0.25 to 1.0

#15 Updated by Fabrice Barconnière over 5 years ago

  • Remaining (hours) changed from 1.0 to 0.25

Révision c36c3416 : ref dans la mauvaise demande.

#16 Updated by Scrum Master over 5 years ago

  • Status changed from En cours to Résolu

#17 Updated by Joël Cuissinat over 5 years ago

OK sur 2.4.3

#18 Updated by Joël Cuissinat over 5 years ago

  • Status changed from Résolu to Fermé
  • Remaining (hours) changed from 0.25 to 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 Updated by Christophe Dezé over 5 years ago

il y aurait moyen de pousser la modif sur 2.4.2 ?

#20 Updated by Karim Ayari about 5 years ago

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 Updated by Karim Ayari about 5 years ago

idem avec un nom

#22 Updated by Benoit Guinet about 5 years ago

Le problème sera t il corrigé sur amon 2.4.2 et 2.4.1 ?

Also available in: Atom PDF