Dns

De Banane Atomic
Aller à la navigationAller à la recherche

Types

Type A (Address)

Relie un nom de domaine à une adresse IPv4.

Domain Type Target
mon-domaine.fr A xxx.xxx.xxx.xxx

Type AAAA

Relie un nom de domaine à une adresse IPv6.

Type CNAME (Canonical NAME)

Créé un alias d'un nom de domaine vers un autre.

Domain Type Target
www.mon-domaine.fr. CNAME mon-domain.fr.
Bien penser à mettre un . à la fin du CNAME

Type NS (Name Server)

Délègue la gestion d'une zone DNS a un serveur de nom faisant autorité.

Domain Type Target
mon-domaine.fr. NS ns107.ovh.net

Type MX (Mail eXchange)

Relie un nom de domaine à un serveur e-mail.

Domain Type Target
mon-domaine.fr. MX 1 mon-domaine.fr.
Target as to be an address (xxx.xxx.xxx.xxx or mon-domaine.fr. or mx0.mail.ovh.net.), not a CNAME

Type SPF (Sender Policy Framework)

Permet au serveurs email recevant les messages de vérifier qu'ils proviennent bien des IPs configurées.

comme la vérification est en mode point à point (i.e. d'un serveur de mail à un autre, ou MTA à MTA) il ne fonctionne pas dans le cas de forwarders ou de relais.
Domain TTL Type Target
mon-domaine.fr. 600 SPF "v=spf1 a mx -all"
Option Description
a autorise l'IP correspondant au nom de domaine courant à envoyer des emails
mx autorise les IPs des serveur MX du domaine courant à envoyer les emails
ip4:x.x.x.x/yy indique les IP ou classes d'IP v4 autorisées à envoyer des emails
ip6:x:x:x:x::x/yy indique les IP ou classes d'IP v6 autorisées à envoyer des emails
ptr autoriser tous les serveurs dont le nom se termine par domain.net à envoyer des emails

autorise les reverses des serveurs mail du domaine courant à envoyer des emails

include:domain2.net use the SPF of domain2.net
-all forbid all other IPs
~all mark all other IPs as not allowed (SoftFail)
Si le type SPF n'est pas disponible, le type TXT fait aussi l’affaire.

OVH et les champs SPF
SPF Record Testing Tools

Outils

dig

Bash.svg
# connaître le serveur DNS utilisé
dig something
#;; SERVER: 192.168.0.x#53(192.168.0.x)

# rechercher DNS en forçant le serveur DNS
dig @8.8.8.8 google.com

# test si le réglage MX pointe bien vers le bon serveur
dig mx mon-domaine.fr

# obtenir l'adresse IP externe (WAN IP)
dig +short myip.opendns.com @resolver1.opendns.com

# error while loading shared libraries: libjson-c.so.3: cannot open shared object file: No such file or directory
ln -s libjson-c.so.4.0.0 /usr/lib/libjson-c.so.3

# installation
sudo pacman -S dnsutils

resolvectl

Bash.svg
resolvectl status
# ancienne commande
systemd-resolve --status

nslookup

Command-line tool for querying the Domain Name System to obtain the mapping between domain name and IP address.

Ps.svg
nslookup xxx.xxx.xxx.xxx

Masquer les DNS OVH

La commande whois permet d'afficher les informations associées à une ip. Pour afficher les dns du type dns.mon-domaine.fr au lieu de dns.ovh.fr:

  • créer un champs de type A de valeur dns.mon-domaine.fr qui pointe sur l'IP du serveur
  • aller dans GLUE Registry → créer une entrée de valeur dns.mon-domaine.fr qui pointe sur l'IP d'un serveur DNS d'OVH (213.251.188.151)
  • faire la même chose pour le serveur DNS secondaire: ns.mon-domaine.fr (213.251.128.151)

Serveurs DNS vs GLUE Registry

Un Glue Record ou Registry sert à lier une adresse IP à un nom de serveur (nom.domaine.fr) dans le cas où le serveur DNS est dans le même domaine.
Ex: pour mon-domaine.fr, si le serveur DNS est sur dns.mon-domaine.fr alors qu'il aurait pu être sur un autre domaine tel que dns.ovh.fr

OVH et IP dynamique (DynHost)

Permet de mettre à jour l'adresse IP liée au nom de domaine.

update-dynhost-ip-on-ovh.sh
host=domain.fr
login=domain.fr-xxx
password=***

wd=$(dirname $(realpath $0))

log() {
    echo "$(date) - $1" >> "${wd}/dynhost.log"
}

ip=$(curl -s -X POST -H "Content-Type: application/x-sah-ws-1-call+json" \
    -d '{"service":"NMC","method":"getWANStatus","parameters":{}}' \
    http://192.168.1.1/ws | jq .result.data.IPAddress)

if [ -z "${ip}" ]; then
    log 'ERROR - Unable to get external IP from livebox.'
    exit 1
fi

last_ip=''
if [[ -f ${wd}/last-ip.txt ]]; then
    last-ip="$(cat "${wd}/last-ip.txt")"
fi

if [[ ${ip} != "${last-ip}" ]]; then
    log "INFO - Update from old IP: ${last-ip} to new IP: ${ip}"
    curl "https://www.ovh.com/nic/update?system=dyndns&hostname=${host}&myip=${ip}" \
        -u "${login}:${password}"
    echo -n "${ip}" > "${wd}/last-ip.txt"
else
    log 'DEBUG - IP has not changed.'
fi