\chapter{Domain Name Service} \label{chap:DNS} \index{DNS} % ------------------------------------------------------------ Le DNS est (pour simplifier) l'annuaire de l'Internet. À la base, c''est lui qui va permettre de connaitre l'adresse d'une machine ou d'un service à partir de son nom. Un énorme progrès comparé à la maintenance du fichier \texttt{/etc/hosts} qu'il fallait, à la vieille époque, télécharger toutes les nuits\dots % ------------------------------------------------------------ \section{Outils de base} \subsection{host} \index{host} C'est vraiment la commande \textit{vanilla} pour tout ce qui touche à la résolution de nom. Elle propose les premières options de base, avec une syntaxe facile à retenir. Elle existe, sous des formes légèrement déviantes, dans une grande partie des OS\footnote{même dans le sale, c'est dire.} existants de nos jours. \begin{verbatim} tth@plop:~ $ host sigfood.dinorama.fr sigfood.dinorama.fr has address 91.121.221.123 tth@plop:~ $ host -t mx dinorama.fr dinorama.fr mail is handled by 20 mx1.smeuh.org. tth@plop:~ $ \end{verbatim} Ces deux exemples sont encourageants. Est-il possible d'aller plus loin ? % ------------------------------------------------------------ \subsection {nslookup} \index{nslookup} \begin{quote} Nslookup is a program to query Internet domain name servers. Nslookup has two modes: interactive and non-interactive. Interactive mode allows the user to query name servers for information about various hosts and domains or to print a list of hosts in a domain. Non-interactive mode is used to print just the name and requested information for a host or domain. » \end{quote} \begin{verbatim} tth@tranxene:~$ nslookup -type=txt tetalab.org Server: 80.67.169.12 Address: 80.67.169.12#53 Non-authoritative answer: tetalab.org text = "v=spf1 ip4:89.234.156.223 -all" Authoritative answers can be found from: tth@tranxene:~$ \end{verbatim} % ------------------------------------------------------------ \subsection{dig} \index{dig} Dig (\textit{domain information groper}) est un outil d'interrogation des serveurs DNS. Par défaut, il questionne les serveurs listés dans \texttt{/etc/resolv.conf}. Pour résoudre récursivement un nom de domaine à partir de la racine : \texttt{\$ dig +trace } Pour obtenir le reverse d'une adresse IP : \texttt{\$ dig +trace -x } % ------------------------------------------------------------ % \subsection{delv} % \index{delv} % % Nouvel outil en rapport avec DNSSEC\index{DNSSEC}. % XXX % \index{XXX} % http://www.bortzmeyer.org/delv.html % XXX % ------------------------------------------------------------ \subsection{checkresolv} Un outil très basique conçu et bricolé par Tonton~Th au siècle dernier lors d'un séjour hivernal à Frontignan-plage. Hélas, les sources semblent définitivement perdues dans les ténèbres de l'Undernet profond. Si quelqu'un a une piste\dots Une ré-écriture s'impose, en repartant sur les mêmes bases. En utilisant les mêmes fonctions qu'une application basique. Peut-être aussi en lui trouvant un nom plus \textsl{fun}\dots % ------------------------------------------------------------ \section{DHCP} \index{DHCP} \begin{quote} The DHCP protocol allows a host to contact a central server which maintains a list of IP addresses which may be assigned on one or more subnets. A DHCP client may request an address from this pool, and then use it on a temporary basis for communication on network. \end{quote} Question : comment peut-on « écouter » les requètes et les réponses DHCP sur notre réseau local pour détecter le rogue-machin ? Probablement avec \texttt{tcpdump}\index{tcpdump}, et c'est à l'essai dans la page \pageref{tcpdump}. % ------------------------------------------------------------ \section{dnsmasq} \index{dnsmasq} \begin{quote} dnsmasq is a lightweight DNS, TFTP and DHCP server. It is intended to provide coupled DNS and DHCP service to a LAN. \end{quote} % ------------------------------------------------------------