Mercoledì, 22 Luglio 2020 14:07

HowTo: gestione del DNS da CLI per UCS

UCS (Univention Corporate Server, https://www.univention.com ) permette la completa gestione del server DNS anche da riga di comando. Opportunità molto utile per inserimenti-modifiche massive o per interfacciare il meccanismo con quello che si vuole (es.: una web-application custom).

Vediamo nel pratico come si fa.

1. Premessa

Per questo howto creeremo la zona example.lan e procederemo a inserire e modificare alcuni record.

Il nostro server è un PDC di dominio AD che si chiama server.lan .

Le operazioni sono eseguite da un utente con permessi di amministrazione.

La shell da cui operiamo è quella del server UCS.

2. Zona forward example.lan

La nostra zona ha 5 record MX con diverse priorità.

Per creare più entry bisogna prima creare il record e poi modificarlo aggiungendo le entry.

Creiamo la nostra zona:

udm dns/forward_zone create \
--superordinate "cn=dns,dc=server,dc=lan" \
--set zone="example.lan" \
--set nameserver="srv.example.lan." \
--set contact="Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.." \
--set mx="10 mx10.example.lan."

modifichiamo la zona per aggiungere i 4 record MX

udm dns/forward_zone modify \
--dn "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--append mx="15 mx15.example.lan." \
--append mx="20 mx20.example.lan." \
--append mx="25 mx25.example.lan." \
--append mx="30 mx30.example.lan."

vediamo l'elenco delle zone

udm dns/dns list

vediamo le zone con i dati del record SOA (ovvero i parametri che abbiamo inserito creando la zona)

udm dns/forward_zone list

vediamo, ora, solo la nostra zona

udm dns/forward_zone list \
--filter "zoneName=example.lan,cn=dns,dc=server,dc=lan"

infine cancelliamo la zona

udm dns/forward_zone remove --dn "zoneName=example.lan,cn=dns,dc=server,dc=lan"

3. Aggiungere un record

Procediamo con l'esemplificazione dell'aggiunta di un record.

Iniziamo aggiungendo prima un record host (=A o AAAA), successivamente un record di testo (=TXT) e infine un record alias (=CNAME) del record host.

Aggiungiamo il record host "pc01" associato all'ip 192.168.0.1

udm dns/host_record create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="pc01" \
--set a="192.168.0.1"

Aggiungiamo il record testo "pc01" associato all'informazione "v=spf1 +a +mx -all"

udm dns/txt_record create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="pc01" \
--set txt="v=spf1 +a +mx -all"

E ora aggiungiamo un record alias "www" che punta al record "pc01"

udm dns/alias create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="www" \
--set cname="pc01.example.lan."

4. Modifica

Procediamo modificando i tre record appena creati.

Modifichiamo il record host "pc01" modificando l'ip da 192.168.0.1 a 192.168.0.100

udm dns/host_record modify \
--dn "relativeDomainName=pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set a="192.168.0.100"

Modifichiamo il record testo "pc01" cambiando da "v=spf1 include:_spf.example.lan ~all"

udm dns/txt_record modify \
--dn "relativeDomainName=pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set txt="v=spf1 include:_spf.example.lan ~all"

E ora modifichiamo il record alias "www" da "www" a "www-pc01"

udm dns/alias modify \
--dn "relativeDomainName=pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="www-pc01"

5. Elenco

Procediamo chiedendo l'elenco dei record inseriti e modificati.

Vediamo l'elenco dei record host:

  • chiediamo l'elenco completo

udm dns/host_record list

  • chiediamo l'elenco dei soli record host che iniziano con "pc"

udm dns/host_record list --filter "relativeDomainName=pc*"

  • chiediamo, ora, di vedere il solo record pc01

udm dns/host_record list --filter "relativeDomainName=pc01"

Vediamo l'elenco dei record testo:

  • chiediamo l'elenco completo

udm dns/txt_record list

  • chiediamo l'elenco dei soli record host che iniziano con "pc"

udm dns/txt_record list --filter "relativeDomainName=pc*"

  • chiediamo, ora, di vedere il solo record pc01

udm dns/txt_record list --filter "relativeDomainName=pc01"

Vediamo l'elenco dei record alias:

  • chiediamo l'elenco completo

udm dns/alias list

  • chiediamo l'elenco dei soli record host che iniziano con "www"

udm dns/alias list --filter "relativeDomainName=www*"

  • chiediamo, ora, di vedere il solo record www-pc01

udm dns/alias list --filter "relativeDomainName=www-pc01"

6. Cancellare

Procediamo cancellando i tre record.

Cancelliamo il record host "pc01"

udm dns/host_record remove \
--dn "relativeDomainName=pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan"

Modifichiamo il record testo "pc01" cambiando da "v=spf1 include:_spf.example.lan ~all"

udm dns/txt_record remove \
--dn "relativeDomainName=pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan"

E ora modifichiamo il record alias "www" da "www" a "www-pc01"

udm dns/alias remove \
--dn "relativeDomainName=www-pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan"

7. Appendice

A titolo di esempio riportiamo uno script che aggiunge massivamente alcuni record di tipo host

#!/bin/bash
#
# Aggiunta massiva record HOST (=A o AAAA)

# Aggiunta record A pc01
udm dns/host_record create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="pc01" \
--set a="192.168.0.1"

# Aggiunta record A pc02
udm dns/host_record create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="pc02" \
--set a="192.168.0.2"

# Aggiunta record A pc03
udm dns/host_record create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="pc03" \
--set a="192.168.0.3"

# Aggiunta record A pc04
udm dns/host_record create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="pc04" \
--set a="192.168.0.4"

# Aggiunta record A pc05
udm dns/host_record create \
--superordinate "zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set name="pc05" \
--set a="192.168.0.5"

Il seguente procede modificando i record appena inseriti

#!/bin/bash
#
# Modifica massiva record HOST (=A o AAAA)
# NB: viene modificato l'IP

# Modifica record A pc01
udm dns/host_record modify \
--dn "relativeDomainName=pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set a="192.168.0.101"

# Modifica record A pc02
udm dns/host_record modify \
--dn "relativeDomainName=pc02,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set a="192.168.0.102"

# Modifica record A pc03
udm dns/host_record modify \
--dn "relativeDomainName=pc03,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set a="192.168.0.103"

# Modifica record A pc04
udm dns/host_record modify \
--dn "relativeDomainName=pc04,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set a="192.168.0.104"

# Modifica record A pc05
udm dns/host_record modify \
--dn "relativeDomainName=pc05,zoneName=example.lan,cn=dns,dc=server,dc=lan" \
--set a="192.168.0.105"

Questo esempio li cancella tutti

#!/bin/bash
#
# Rimozione massiva record HOST (=A o AAAA)

# Rimozione record A pc01
udm dns/host_record remove \
--dn "relativeDomainName=pc01,zoneName=example.lan,cn=dns,dc=server,dc=lan"

# Rimozione record A pc02
udm dns/host_record remove \
--dn "relativeDomainName=pc02,zoneName=example.lan,cn=dns,dc=server,dc=lan"

# Rimozione record A pc03
udm dns/host_record remove \
--dn "relativeDomainName=pc03,zoneName=example.lan,cn=dns,dc=server,dc=lan"

# Rimozione record A pc04
udm dns/host_record remove \
--dn "relativeDomainName=pc04,zoneName=example.lan,cn=dns,dc=server,dc=lan"

# Rimozione record A pc05
udm dns/host_record remove \
--dn "relativeDomainName=pc05,zoneName=example.lan,cn=dns,dc=server,dc=lan"

 

Altro in questa categoria: « HowTo: tar e compressione multi core

Questo sito utilizza cookie, anche di terze parti, per migliorare la tua esperienza e offrire servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina o cliccando qualunque suo elemento acconsenti all’uso dei cookie. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie vai alla sezione Cookie Policy.