IBM Cloud Docs
Gestion des zones DNS

Gestion des zones DNS

Gérer les zones DNS à l'aide de l'interface utilisateur, du CLI ou de l'API.

Pour pouvoir gérer des zones DNS, vous devez avoir une instance IBM Cloud® DNS Services. Pour plus d'informations, consultez Créer une instance DNS Services.

Une zone peut comporter un nombre arbitraire de niveaux, mais ce nombre ne doit pas être inférieur à deux. Par exemple, ibm.austin.texas.example.com est un nom de zone valide, contrairement à com.

Vous pouvez disposer de plusieurs zones dont l'une est le suffixe d'une autre zone. Par exemple, sub.domain.example.com et domain.example.com peuvent coexister.

Vous pouvez également définir des sous-domaines au sein d'une zone ajoutée. Par exemple, tous les noms suivants sont valides au sein de la zone domain.example.com.

  • subdomain.domain.example.com
  • hostname.domain.example.com
  • hostname.subdomain.domain.example.com

Le nom host.sub.domain.example.com peut correspondre à host.sub dans la zone domain.example.com. Il peut également correspondre à host.sub.domain dans la zone example.com. Les deux peuvent coexister et sont distincts.

Limitations connues

Le programme de résolution DNS recherche toujours un enregistrement à partir de la zone la plus longue correspondante, même si l'enregistrement n'existe pas forcément dans cette zone mais se trouve dans une autre zone correspondante qui n'est pas la plus longue.

Prenons par exemple deux zones, domain.example.com et example.com.

Enregistrements pour example.com

 {
      myhost.domain.example.com A 1.1.1.1
      me.domain.example.com A 8.8.8.8
  }

Enregistrements pour domain.example.com

  {
      myhost.domain.example.com A 2.2.2.2
  }

Si un utilisateur effectue une requête sur la zone myhost.domain.example.com, le résultat attendu (soit 2.2.2.2) doit provenir de la zone domain.example.com, car domain.example.com est la correspondance la plus longue dans la requête de l'utilisateur.

S'il effectue la requête sur la zone me.domain.example.com à la place, le programme de résolution recherche uniquement la zone correspondante la plus longue. Comme la zone me.domain.example.com n'existe pas dans domain.example.com, le résultat est l'erreur NXDOMAIN.

Pour plus d'informations, voir Problèmes connus et limitations.

Création d'une zone DNS dans la console

  1. A partir de la page des ressources, sélectionnez l'instance DNS Services voulue.
  2. Cliquez sur Créer une zone dans la page Zones DNS.
  3. Dans le champ Nom du panneau qui apparaît, entrez un nom pour votre zone. Au besoin, complétez les champs Etiquette et Description. Pour savoir quels noms sont à proscrire, consultez [Noms de zone DNS interdits(#restricted-dns-zone-names).
  4. Cliquez sur Créer une zone.

Si la création de la zone réussit, vous êtes redirigé vers la page de ses détails.

Les zones ajoutées récemment sont à l'état en attente jusqu'à ce que vous leur ajoutiez des réseaux permis. Une zone devient active dès que des réseaux permis sont ajoutés.

En cas d'échec de la création de la zone, une erreur vous sera notifiée, accompagnée d'informations sur ce qui l'a provoquée.

Noms de zone DNS interdits

Les sous-domaines de zones restreintes à deux niveaux sont interdits. Par exemple, my.host.ibm.com est un sous-domaine de ibm.com. Par conséquent, my.host.ibm.com constitue également une zone restreinte.

Les noms de zone DNS suivants sont interdits.

  • ibm.com
  • softlayer.com
  • bluemix.net
  • softlayer.local
  • mybluemix.net
  • networklayer.com
  • ibmcloud.com
  • pdnsibm.net
  • appdomain.cloud
  • compass.cobaltiron.com
  • uptycs.io

Modifier une zone DNS dans la console

  1. Dans la page Zones DNS, sélectionnez votre zone. Les options Etiquette et Description apparaissent.
  2. Cliquez sur l'icône d'édition du champ Etiquette, entrez l'étiquette voulue et cliquez sur Enregistrer.
  3. Cliquez sur l'icône d'édition du champ Description, entrez la description voulue et cliquez sur Enregistrer.

Supprimer une zone DNS dans la console

  1. Dans la page Zones DNS, cliquez sur l'icône Supprimer de la ligne correspondant à la zone que vous souhaitez supprimer. Une boîte de dialogue de confirmation s'affiche.
  2. Cliquez sur Supprimer.

Gérer les zones DNS à partir de la CLI

Suivez ces instructions pour installer le plug-in de l'interface de ligne de commande de DNS Services.

Utilisez d'abord la commande ibmcloud dns instances pour obtenir la liste des instances DNS Services, puis utilisez la commande ibmcloud dns instance-target pour définir l'instance DNS Services opérationnelle de la cible.

$ ibmcloud dns instances
Retrieving service instances for service 'dns-svcs' ...
OK

Name                 ID                                     Location   State    Service Name
DNS Services-km      ffffffff-b042-41fd-885e-000000000000   global     active   dns-svcs

$ ibmcloud dns instance-target "DNS Services-km"

Créer une zone DNS à partir de l'interface de programmation

Utilisez la commande ibmcloud dns zone-create suivie du nom de la zone pour créer une zone.

$ ibmcloud dns zone-create example.com
Creating zone 'example.com' for service instance 'DNS Services-km' ...
OK

ID            example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae
Name          example.com
Description
Label
State         PENDING_NETWORK_ADD
Created On    2020-04-10 07:21:51.774444868 +0000 UTC
Modified On   2020-04-10 07:21:51.774444868 +0000 UTC

Pour les futures commandes se référant à cette zone, la valeur "ID" obtenue dans la sortie est utilisée en tant que variable DNS_ZONE_ID. Exécutez cette commande pour la stocker dans la variable DNS_ZONE_ID :

DNS_ZONE_ID="example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae"

Obtenir une zone DNS à partir de la CLI

Utilisez la commande ibmcloud dns zone suivie de l'ID de zone pour obtenir les détails d'une zone existante.

$ ibmcloud dns zone $DNS_ZONE_ID
Getting zone 'example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae' for service instance 'DNS Services-km' ...
OK

ID            example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae
Name          example.com
Description
Label
State         PENDING_NETWORK_ADD
Created On    2020-04-10 07:21:51.774444868 +0000 UTC
Modified On   2020-04-10 07:21:51.774444868 +0000 UTC

Mettre à jour une zone DNS à partir de la CLI

Utilisez la commande ibmcloud dns zone-update suivie de l'ID de zone pour mettre à jour une zone. Spécifiez -d, --description pour mettre à jour la description et/ou -l, --label pour mettre à jour l'étiquette d'une zone.

$ ibmcloud dns zone-update $DNS_ZONE_ID -d "example zone" -l "us-south"
Updating zone 'example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae' for service instance 'DNS Services-km' ...
OK

ID            example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae
Name          example.com
Description   example zone
Label         us-south
State         PENDING_NETWORK_ADD
Created On    2020-04-10 07:21:51.774444868 +0000 UTC
Modified On   2020-04-10 07:38:36.712131819 +0000 UTC

Liste des zones DNS à partir de l'interface de gestion

Utilisez la commande ibmcloud dns zones pour lister toutes les zones.

$ ibmcloud dns zones
Listing zones for service instance 'DNS Services-km' ...
OK

ID                                                      Name               Status
example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae        example.com        PENDING_NETWORK_ADD

Supprimer une zone DNS à partir de la CLI

Utilisez la commande ibmcloud dns zone-delete suivie de l'ID de zone pour supprimer une zone.

ibmcloud dns zone-delete  $DNS_ZONE_ID

Gérer les zones DNS avec l'API

Stockez d'abord le point d'extrémité de l'API dans une variable afin de pouvoir l'utiliser dans les demandes d'API sans avoir à taper à chaque fois l'URL complète. Par exemple, pour stocker le point d'extrémité de production dans une variable, exécutez cette commande :

DNSSVCS_ENDPOINT=https://api.dns-svcs.cloud.ibm.com

Pour vérifier que cette variable a été enregistrée, exécutez echo $DNSSVCS_ENDPOINT et assurez-vous que la réponse ne soit pas vide.

Authentification

L'en-tête d'autorisation est obligatoire pour tous les appels API. Cet en-tête est le jeton bearer de l'utilisateur qui peut être extrait depuis IAM (par exemple, à l'aide de la commande ibmcloud iam oauth-tokens).

Vous devez obtenir un jeton IAM et l'exporter dans $TOKEN pour l'instance DNS Services.

Créer une zone DNS avec l'API

Pour créer une nouvelle zone, utilisez la commande curl suivante :

Demande

curl -X POST \
  $DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones \
  -H "Authorization: $TOKEN" \
  -d '{
  "name": "example.com",
  "description": "Example zone"
}'

Réponse

{
    "success": true,
    "result": {
        "id": "ed10e4b2-8a64-4afa-a4e2-9e60a766d079",
        "created_on": "2019-07-24 12:30:58.357201205 +0000 UTC",
        "modified_on": "2019-07-24 12:30:58.357201205 +0000 UTC",
        "instance_id": "1a34bda8-9c94-4232-bea7-7df163b21d23",
        "name": "example.com",
        "description": "Example zone",
        "state": "PENDING_NETWORK_ADD",
        "tag": "example.com:ed10e4b2-8a64-4afa-a4e2-9e60a766d079"
    },
    "errors": [],
    "messages": []
}

Pour les futures commandes se référant à cette zone, la valeur de l'attribut "id" obtenue dans la réponse ci-dessus sera utilisée comme valeur de la variable DNSZONE_ID

Obtenir une zone DNS avec l'API

Utilisez la commande suivante pour obtenir une zone existante.

Demande

curl -X GET \
  $DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones/$DNSZONE_ID \
  -H "Authorization: $TOKEN"

Réponse

{
    "success": true,
    "result": {
        "id": "example.com:ed10e4b2-8a64-4afa-a4e2-9e60a766d079",
        "created_on": "2019-07-24 12:30:58.357201205 +0000 UTC",
        "modified_on": "2019-07-24 12:30:58.357201205 +0000 UTC",
        "instance_id": "1a34bda8-9c94-4232-bea7-7df163b21d23",
        "name": "example.com",
        "description": "Example zone",
        "state": "PENDING_NETWORK_ADD"
    },
    "errors": [],
    "messages": []
}

Mise à jour d'une zone DNS avec l'API

Utilisez la commande suivante pour mettre à jour une zone existante.Vous pouvez mettre à jour les champs de la description et de l'étiquette. Tous les autres champs sont en lecture seule.

Demande

curl -X PATCH \
  $DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones/$DNSZONE_ID \
  -H 'Content-Type: application/json' \
  -H "Authorization: $TOKEN" \
  -d '{
    "description": "The DNS zone is used for VPCs in us-east region",
    "label": "us-east"
}'

Réponse

{
  "created_on": "2019-01-01T05:20:00.12345Z",
  "description": "The DNS zone is used for VPCs in us-east region",
  "id": "example.com:2d0f862b-67cc-41f3-b6a2-59860d0aa90e",
  "instance_id": "1407a753-a93f-4bb0-9784-bcfc269ee1b3",
  "label": "us-east",
  "modified_on": "2019-01-01T05:20:00.12345Z",
  "name": "example.com",
  "state": "PENDING_NETWORK_ADD"
}

Liste des zones DNS avec l'API

Pour lister les zones de votre domaine (y compris s'il n'y en a qu'une), utilisez la commande curl suivante :

Demande

curl -X GET \
  $DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones \
  -H "Authorization: $TOKEN"

Réponse

{
    "success": true,
    "result": [
        {
            "id": "example.com:ed10e4b2-8a64-4afa-a4e2-9e60a766d079",
            "created_on": "2019-07-24 12:30:58.357201205 +0000 UTC",
            "modified_on": "2019-07-24 12:30:58.357201205 +0000 UTC",
            "instance_id": "1a34bda8-9c94-4232-bea7-7df163b21d23",
            "name": "example.com",
            "description": "Example zone",
            "state": "PENDING_NETWORK_ADD"
        }
    ],
    "errors": [],
    "messages": []
}

Supprimer une zone DNS avec l'API

Demande

curl -X DELETE \
  $DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones/$DNSZONE_ID \
  -H "Authorization: $TOKEN"

Réponse

HTTP/2 204 No Content