« Dns » : différence entre les versions

De Banane Atomic
Aller à la navigationAller à la recherche
Aucun résumé des modifications
Ligne 78 : Ligne 78 :


<filebox fn='update-dynhost-ip-on-ovh.sh'>
<filebox fn='update-dynhost-ip-on-ovh.sh'>
#!/bin/bash
set -e
set -o pipefail
set -u
host=domain.fr
host=domain.fr
login=domain.fr-xxx
login=domain.fr-xxx
Ligne 99 : Ligne 93 :


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


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


if [[ ${ip} != "${last-ip}" ]]; then
if [[ ${ip} != "${last-ip}" ]]; then
     log "INFO - Update from old IP: ${last-ip} to new IP: ${ip}\n--------------------\n\n"
     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}" \
     curl "https://www.ovh.com/nic/update?system=dyndns&hostname=${host}&myip=${ip}" \
         -u "${login}:${password}"
         -u "${login}:${password}"

Version du 1 décembre 2019 à 17:12

Types

Type A (Address)

Lie un nom de host à une adresse IPv4.

.mon-domaine.fr    A    xxx.xxx.xxx.xxx

Type AAAA

Lie un nom de host à une adresse IPv6.

Type CNAME (Canonical NAME)

Créé un alias d'un nom d'hôte vers un autre.

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é.

.mon-domaine.fr    NS    ns107.ovh.net

Type MX (Mail eXchange)

Définit le nom du serveur de courrier du domaine.

.mon-domaine.fr    MX    redirect.ovh.net

Type SPF (Sender Policy Framework)

Permet au serveurs email recevant les messages de vérifier qu'ils proviennent bien des IPs configurées.
.mon-domaine.fr 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 autorise les reverses des serveurs mail du domaine courant à envoyer des emails
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

Bash.svg
sudo pacman -S dnsutils

dig

Bash.svg
# 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

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