diff --git a/1/ISO/assignments/t12-ej1-dhcpd/imgs/mac-address.png b/1/ISO/assignments/t12-ej1-dhcpd/imgs/mac-address.png new file mode 100644 index 0000000..8da67d5 Binary files /dev/null and b/1/ISO/assignments/t12-ej1-dhcpd/imgs/mac-address.png differ diff --git a/1/ISO/assignments/t12-ej1-dhcpd/imgs/static-ip.png b/1/ISO/assignments/t12-ej1-dhcpd/imgs/static-ip.png new file mode 100644 index 0000000..e9bc03f Binary files /dev/null and b/1/ISO/assignments/t12-ej1-dhcpd/imgs/static-ip.png differ diff --git a/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.pdf b/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.pdf new file mode 100644 index 0000000..a1f7c27 Binary files /dev/null and b/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.pdf differ diff --git a/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.tex b/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.tex new file mode 100644 index 0000000..6b78919 --- /dev/null +++ b/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.tex @@ -0,0 +1,246 @@ +\documentclass[12pt,a4paper]{article} +\usepackage[spanish]{babel} +\usepackage{hyperref} +\usepackage{graphicx} +\usepackage{subcaption} + +\title{Tema XII Ejercicio I: DHCPD} +\author{Nicolás A. Ortega Froysa} + +\begin{document} +\maketitle +\pagebreak +\tableofcontents +\pagebreak + +\section{Introducción} + +Cuando estamos creando y configurando redes, un elemento fundamental para la +comunicación entre equipos es la asignación de direcciones IP, ya que es por +medio de esto que se pueden identificar los distintos dispositivos conectados a +la red. Cuando se trata de unos pocos dispositivos, la asignación de direcciones +IP no es una tarea demasiado difícil, mas cuando tratamos de cientos, o incluso +miles de dispositivos, esto se puede convertir en una tarea muy ardua y +compleja. Tiene aún menos sentido tener que pasar tanto tiempo configurando +estas direcciones cuando la mayoría son de dispositivos clientes, y por lo tanto +serán siempre los que inicialicen la conexión, y nunca la recibirán. Es por esto +que se inventó el sistema DHCP. + +En este sistema, existe un servidor, corriendo un software DHCPD ({\em DHCP +Daemon}) con una dirección IP fija, que recibe peticiones (generalmente dentro +de su red local) para adquirir direcciones IP. Este servidor devuelve una +dirección IP que se asegura que no la está usando ningún otro dispositivo. + +El objetivo de esta práctica es instalar y configurar un servidor DHCP usando el +software {\tt dhcpd} para nuestra red local. + +\section{Configuración de Red} + +\section{Instalación y Configuración de DHCPD} + +\subsection{Instalación} + +Como nuestro servidor está corriendo Debian, hemos de usar el manejador de +paquetes {\tt apt} para instalar el programa. Para esto, corremos el comando +siguiente: + +\begin{verbatim} +# apt install isc-dhcp-server +\end{verbatim} + +Para verificar que se ha instalado correctamente, podemos ver si se ha instalado +el binario {\tt dhcpd} en nuestro {\tt PATH} usando el comando {\tt which +dhcpd}. También instalará el servicio de {\em Systemd} con el mismo nombre que +el paquete ({\tt isc-dhcp-server}) que podemos administrar usando el comando +{\tt systemctl}. Como por ahora estamos probando nada más, y no queremos que se +inicialice por sí mismo, vamos a deshabilitar el servicio y pararlo. Luego, +cuando ya tengamos el servicio completamente configurado y funcione +correctamente. + +\begin{verbatim} +# systemctl stop isc-dhcp-server +# systemctl disable isc-dhcp-server +\end{verbatim} + +\subsection{Configuración} + +Para la configuración del servicio DHCP, hemos de editar el archivo de +configuración {\tt /etc/dhcp/dhcpd.conf}. Mas, en nuestro caso vamos a empezar +desde cero, ya que este archivo viene con muchas opciones ya declaradas por +defecto. Para esto, simplemente hacemos una copia de seguridad del archivo +(e.g.\ renombrándolo a {\tt dhcpd.conf.bak}). + +Creamos ahora un archivo de configuración nuevo (en blanco) y ponemos la +configuración siguiente: + +\begin{verbatim} +option domain-name-servers 8.8.8.8, 8.8.4.4; +option routers 172.21.0.100; +option subnet-mask 255.255.255.0; + +subnet 192.168.37.0 netmask 255.255.255.0 { + range 192.168.37.100 192.168.37.150; +} + +host DESKTOP-U4F9M9L { + hardware ethernet 7C:10:C9:25:95:E1; + fixed-address 192.168.37.201; +} +\end{verbatim} + +En la primera línea, especificamos la opción {\tt domain-name-servers}, que son +los servidores de resolución de nombre de dominio (DNS) que queremos asignar a +los ordenadores de nuestra red. En este caso, 8.8.8.8 y 8.8.4.4 son los +servidores DNS públicos de Google. Así cuando uno de los ordenadores de nuestra +red quiere resolver un nombre, se lo pedirá a uno de estos servidores. Esta +opción es especialmente útil si tenemos un servidor DNS interno a nuestra red +que queremos usar. + +La segunda opción se trata de asignar la dirección IP del enrutador (i.e.\ {\em +router} o {\em gateway}) usando la opción {\tt routers}. Si el dispositivo +quiere acceder a alguna dirección que no está dentro de su red asignada, +intentará acceder a ella por medio de esta dirección IP. + +La tercera opción, {\tt subnet-mask} trata de asignar la máscara de subred +general, que nosotros que sea el 255.255.255.0 (equivalente a /24). Así los +dispositivos podrán saber qué direcciones IP están dentro de su red. + +\begin{verbatim} +subnet 192.168.37.0 netmask 255.255.255.0 { + range 192.168.37.100 192.168.37.150; +} +\end{verbatim} + +En estas tres líneas, tratamos de definir la red, la máscara, y el rango de +direcciones IP para los dispositivos que tengan IP dinámica. Primero, empezamos +definiendo la red en sí. Esto se hace definiendo primero la dirección de red, +que en nuestro caso es 192.168.37.0, y luego la máscara de red, que es de +255.255.255.0. Después, usando la opción {\tt range}, designamos el rango de +direcciones IP que usará nuestro servicio DHCP para asignar nuevas direcciones a +los dispositivos que lo piden. De este modo, todas los dispositivos tendrán una +dirección IP dentro de este rango. + +\begin{verbatim} +host DESKTOP-U4F9M9L { + hardware ethernet 7C:10:C9:25:95:E1; + fixed-address 192.168.37.201; +} +\end{verbatim} + +Estas cuatro líneas nos ayudan a definir una dirección IP estática a un +dispositivo concreto. Esto puede ser útil cuando tenemos un servidor dentro de +la red, que queremos que siempre tenga una misma dirección IP (e.g.\ un servidor +DNS) pero para poder configurarlo todo desde el mismo sitio, en vez de +configurarlo en el servidor en sí, lo configuramos desde el sistema DHCP. Por +ejemplo, si tenemos un servidor DNS en nuestra red con dirección 192.168.37.5 y +lo queremos cambiar a 192.168.37.202, normalmente habría que entrar en el +servidor para cambiarle la dirección, y luego entrar en el otro servidor DHCP +para cambiarle la dirección asignada anteriormente. Pero de este modo, +conseguimos que en el mismo servidor (y el mismo archivo) configuramos ambas +cosas. + +Lo primero que hacemos es definir el {\em hostname} con el comando {\tt host} +seguido del nombre del dispositivo en la red (en nuestro caso se llama +DESKTOP-U4F9M9L). Todas las opciones que definimos en este bloque se aplicarán a +este dispositivo. Pero como también puede darse que dos dispositivos se hayan +puesto el mismo nombre (aunque lo suyo sería evitar esto) también identificamos +al dispositivo usando su dirección MAC, que es de hardware, y es único. Esto se +puede encontrar en la salida del comando {\tt ip address} en los sistemas UNIX +dentro de la configuración de la interfaz correspondiente (figura +\ref{fig:mac-address}), o dentro de la configuración de red en Windows. {\bf +Aviso:} aunque en algunos sistemas (como Windows) la dirección MAC aparece +usando guiones (i.e.\ <<->>) para separar los dígitos, siempre se ha de usar los +dos puntos (i.e.\ <<:>>). Lo definimos con la opción {\tt hardware ethernet}. + +\begin{figure}[!htb] + \centering + \includegraphics[width=1.0\textwidth]{imgs/mac-address.png} + \caption{Dirección MAC en salida de comando {\tt ip address}.} + \label{fig:mac-address} +\end{figure} + +Finalmente, definimos la dirección IP que queremos asignar, que en nuestro caso +es el 192.168.37.201. Esto lo hacemos con la opción {\tt fixed-address}. + +\subsection{Pruebas} + +Ya con nuestro servicio DHCP configurada, podemos empezar con las pruebas. Para +esto, primero hemos de empezar nuestro servicio. Como tan sólo estamos haciendo +pruebas todavía, vamos a usar directamente el comando {\tt dhcpd}. Esto lo +haremos usando la opción {\tt -cf} para especificar nuestro archivo de +configuración, y la bandera {\tt -d} para que veamos la salida por pantalla de +lo que vaya pasando: + +\begin{verbatim} +# dhcpd -cd /etc/dhcp/dhcpd.conf -d +\end{verbatim} + +Cuando ya esté encendido, podemos comprobar su correcto funcionamiento +conectando nuestros dispositivos a la red para que pidan una dirección IP por +medio de DHCP. Para nuestro dispositivo de IP fija, debería de aparecer algo +parecido a lo siguiente: + +\begin{verbatim} +DHCPREQUEST for 192.168.37.201 from 7c:10:c9:25:95:e1 via enp3s0 +DHCPACK on 192.168.37.201 to 7c:10:c9:25:95:e1 via enp3s0 +\end{verbatim} + +Esto indica que a este dispositivo se le ha dado la dirección IP 192.168.37.201, +como habíamos designado antes. + +Luego, para los dispositivos de IP dinámica, la salida se parecerá algo más como +lo siguiente: + +\begin{verbatim} +DHCPDISCOVER from 7c:10:c9:28:29:b5 via enp3s0 +DHCPOFFER on 192.168.37.101 to 7c:10:c9:28:29:b5 (LAPTOP-NIMQD9EE) +via enp3s0 +DHCPREQUEST for 192.168.37.101 (192.168.37.2) from 7c:10:c9:28:29:b5 +(LAPTOP-NIMQD9EE) via enp3s0 +DHCPACK on 192.168.37.101 to 7c:10:c9:28:29:b5 (LAPTOP-NIMQD9EE) +via enp3s0 +\end{verbatim} + +Verificamos que, efectivamente, se han asignado correctamente las direcciones IP +en nuestros dispositivos. Si es así, entonces ya hemos terminado de configurar +correctamente nuestro servicio DHCP (figura \ref{fig:static-ip}). + +\begin{figure}[!htb] + \centering + \includegraphics[width=0.75\textwidth]{imgs/static-ip.png} + \caption{Verificación de asignación de la IP estática 192.168.37.201.} + \label{fig:static-ip} +\end{figure} + +\subsection{Habilitación e Inicio del Servicio} + +Cuando ya hayamos visto que todo funciona correctamente, ya podemos volver a +usar {\em Systemd} para administrar nuestro servicio, habilitándolo e +iniciándolo. De esta forma, cada vez que se reinicia la máquina inicializará +este servicio. Como antes, lo hacemos con el comando {\tt systemctl}: + +\begin{verbatim} +# systemctl enable isc-dhcp-server +# systemctl start isc-dhcp-server +\end{verbatim} + +\section{Conclusión} + +El sistema DHCP es una herramienta muy útil, y es importante que todo +administrador de red sepa cómo configurar un servicio de este tipo, no por nada, +sino más todavía para facilitarle a él su propio trabajo. Tampoco es una +configuración muy difícil, si no se quiere hacer nada demasiado complejo, y +permite centralizar la asignación de direcciones IP. + +\pagebreak + +\section{Derechos de Autor y Licencia} + +\noindent +Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa + \\ +\\ +Este documento se distribuye bajo los términos y condiciones de la licencia +Creative Commons Attribution No Derivatives 4.0 International. + +\end{document} diff --git a/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.toc b/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.toc new file mode 100644 index 0000000..9ca5412 --- /dev/null +++ b/1/ISO/assignments/t12-ej1-dhcpd/t12-ej1-dhcpd-naortega.toc @@ -0,0 +1,10 @@ +\babel@toc {spanish}{}\relax +\contentsline {section}{\numberline {1}Introducción}{3}{section.1}% +\contentsline {section}{\numberline {2}Configuración de Red}{3}{section.2}% +\contentsline {section}{\numberline {3}Instalación y Configuración de DHCPD}{3}{section.3}% +\contentsline {subsection}{\numberline {3.1}Instalación}{3}{subsection.3.1}% +\contentsline {subsection}{\numberline {3.2}Configuración}{4}{subsection.3.2}% +\contentsline {subsection}{\numberline {3.3}Pruebas}{6}{subsection.3.3}% +\contentsline {subsection}{\numberline {3.4}Habilitación e Inicio del Servicio}{7}{subsection.3.4}% +\contentsline {section}{\numberline {4}Conclusión}{7}{section.4}% +\contentsline {section}{\numberline {5}Derechos de Autor y Licencia}{8}{section.5}%