Add ISO/t12-ej1 documents.

This commit is contained in:
Nicolás A. Ortega Froysa 2022-05-19 11:27:13 +02:00
parent 7c948ebb6f
commit bff9d41f95
5 changed files with 256 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 535 KiB

View File

@ -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
<nicolas@ortegas.org> \\
\\
Este documento se distribuye bajo los términos y condiciones de la licencia
Creative Commons Attribution No Derivatives 4.0 International.
\end{document}

View File

@ -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}%