Gestione delle zone DNS
Gestire le zone DNS utilizzando l'interfaccia utente, la CLI o l'API.
È necessario disporre di un'istanza IBM Cloud® DNS Services prima di gestire le zone DNS. Fare riferimento a Crea una DNS Services istanza per ulteriori informazioni.
Una zona può avere un numero arbitrario di livelli, ma non inferiore a due. Ad esempio, ibm.austin.texas.example.com
è un nome di zona valido, ma com
non lo è.
È possibile avere più zone dove uno è un suffisso ad un altro. Ad esempio, sub.domain.example.com
e domain.example.com
possono coesistere.
È anche possibile definire sottodomini all'interno di una zona aggiunta. Ad esempio, i seguenti sono tutti i nomi validi all'interno della zona domain.example.com
.
subdomain.domain.example.com
hostname.domain.example.com
hostname.subdomain.domain.example.com
Il nome host.sub.domain.example.com
potrebbe essere host.sub
all'interno della zona domain.example.com
. Potrebbe anche essere host.sub.domain
all'interno della zona example.com
.
Entrambi possono esistere contemporaneamente, e sono separati.
Limitazioni note
Il resolver DNS cerca sempre un record dalla zona di corrispondenza più lunga, anche se il record potrebbe non esistere nella zona di corrispondenza più lunga ma esiste in un'altra zona di corrispondenza non più lunga.
Diciamo che abbiamo due zone, domain.example.com
e example.com
.
Record per example.com
{
myhost.domain.example.com A 1.1.1.1
me.domain.example.com A 8.8.8.8
}
Record per domain.example.com
{
myhost.domain.example.com A 2.2.2.2
}
Se un utente esegue una query per myhost.domain.example.com
, il risultato previsto (che è 2.2.2.2) deve provenire da domain.example.com
, poiché domain.example.com
è la corrispondenza più lunga con la query
utente.
Se si interrogano per me.domain.example.com
invece, il resolver ricerca solo la zona di corrispondenza più lunga. Poiché me.domain.example.com
non esiste in domain.example.com
, il risultato è un NXDOMAIN
.
Per ulteriori informazioni, vedere Problemi noti e limitazioni.
Creare una zona DNS nella console
- Dalla pagina Risorse, selezionare l'istanza DNS Services desiderata.
- Fare clic su Crea zona nella pagina Zone DNS.
- Nel pannello che appare, inserire il proprio nome di zona nel campo Nome. Facoltativamente, inserire i campi Label e Descrizione. Consultare [ Limitati nomi di zona DNS (#restricted- dns - zone - nomi) per informazioni su quali nomi non sono consentiti.
- Fare clic su Crea zona.
Se la creazione della zona ha esito positivo, si è indirizzati alla pagina Dettagli zona.
Le zone appena aggiunte hanno uno stato in sospeso fino a quando non si aggiungono reti consentite alla zona. La zona diventa attiva dopo che si aggiungono reti consentite.
Se la creazione della zona non è riuscita, viene visualizzata una notifica di errore con informazioni su ciò che ha causato l'errore.
Nomi di zona DNS limitati
I sottodomini a una qualsiasi delle zone a 2 livelli ristretti non sono ammessi. Ad esempio, my.host.ibm.com
è un sottodominio a ibm.com
. Pertanto, my.host.ibm.com
è anche una zona riservata.
I seguenti nomi di zona DNS non sono ammessi.
ibm.com
softlayer.com
bluemix.net
softlayer.local
mybluemix.net
networklayer.com
ibmcloud.com
pdnsibm.net
appdomain.cloud
compass.cobaltiron.com
Modifica di una zona DNS nella console
- Dalla pagina Zones DNS, selezionare la tua zona. Etichetta e Descrizione appaiono.
- Fare clic sull'icona di modifica per Label, quindi inserire l'etichetta e fare clic su Salva.
- Fare clic sull'icona di modifica per Descrizione, quindi inserire la descrizione e fare clic su Salva.
Eliminare una zona DNS nella console
- Dalla pagina Zone DNS, fare clic sull'icona Elimina dalla riga della zona che si desidera eliminare. Viene visualizzata una finestra di dialogo di conferma.
- Fai clic su Delete.
Gestire le zone DNS dalla CLI
Segui queste istruzioni per installare DNS Services CLI plugin.
Primo utilizzo ibmcloud dns instances
comando per elencare le istanze DNS Services e quindi utilizzare il comando ibmcloud dns instance-target
per impostare l'istanza di destinazione operativa DNS Services.
$ 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"
Creare una zona DNS dalla CLI
Utilizzare il comando ibmcloud dns zone-create
seguito dal nome della zona per creare una zona.
$ 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
Per il riferimento futuro, l'"ID" in output viene utilizzato come variabile DNS_ZONE_ID
. Eseguire questo comando per memorizzarlo nella variabile DNS_ZONE_ID
:
DNS_ZONE_ID="example.com:f7f40364-a5e6-48f7-9fc9-387434c579ae"
Ottenere una zona DNS dalla CLI
Utilizzare il comando ibmcloud dns zone
seguito dall'ID zona per ottenere i dettagli di una zona esistente.
$ 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
Aggiornare una zona DNS dalla CLI
Utilizzare il comando ibmcloud dns zone-update
seguito dall'ID zona per aggiornare una zona. Specificare -d, --description
per aggiornare la descrizione e / o -l, --label
per aggiornare l'etichetta di una
zona.
$ 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
Elenco delle zone DNS dalla CLI
Utilizzare il comando ibmcloud dns zones
per elencare tutte le zone.
$ 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
Eliminare una zona DNS dalla CLI
Utilizzare il ibmcloud dns zone-delete
seguito dall'ID zona per eliminare una zona.
ibmcloud dns zone-delete $DNS_ZONE_ID
Gestire le zone DNS con l'API
Per prima cosa, memorizza l'endpoint API in una variabile in modo da poterlo utilizzare nelle richieste API senza dover digitare l'intero URL. Ad esempio, per memorizzare l'endpoint di produzione in una variabile, eseguire questo comando:
DNSSVCS_ENDPOINT=https://api.dns-svcs.cloud.ibm.com
Per verificare che la variabile sia stata salvata, eseguire echo $DNSSVCS_ENDPOINT
e verificare che la risposta non sia vuota.
Autenticazione
L'intestazione Authorization è necessaria per ogni chiamata API. Questa intestazione è il token di connessione dell'utente che può essere richiamato da IAM (ad esempio, utilizzando il comando ibmcloud iam oauth-tokens
).
È necessario ottenere un token IAM ed esportarlo in $TOKEN
per DNS Services.
Creare una zona DNS con l'API
Creare una nuova zona utilizzando il seguente comando curl
:
Richiesta
curl -X POST \
$DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones \
-H "Authorization: $TOKEN" \
-d '{
"name": "example.com",
"description": "Example zone"
}'
Risposta
{
"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": []
}
Per il riferimento futuro, l'"id" in risposta viene utilizzato come DNSZONE_ID
.
Ottenere una zona DNS con l'API
Utilizzare il seguente comando per ottenere una zona esistente.
Richiesta
curl -X GET \
$DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones/$DNSZONE_ID \
-H "Authorization: $TOKEN"
Risposta
{
"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": []
}
Aggiornamento di una zona DNS con l'API
Utilizzare il seguente comando per aggiornare una zona esistente.È possibile aggiornare i campi descrizione ed etichetta. Tutti gli altri campi sono di sola lettura.
Richiesta
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"
}'
Risposta
{
"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"
}
Elencare le zone DNS con l'API
Elencare una o più zone nel tuo dominio utilizzando il seguente comando curl
:
Richiesta
curl -X GET \
$DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones \
-H "Authorization: $TOKEN"
Risposta
{
"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": []
}
Eliminare una zona DNS con l'API
Richiesta
curl -X DELETE \
$DNSSVCS_ENDPOINT/v1/instances/$INSTANCE_ID/dnszones/$DNSZONE_ID \
-H "Authorization: $TOKEN"
Risposta
HTTP/2 204 No Content