181 lines
8.2 KiB
HTML

<!-- 31 -->
<div class="img zoomable">
<img src="/static/source_imgs/linux/pst_2/dns.webp" alt="" style="height: 300px; width: auto;">
</div>
<p>
Para crear un <a class="link" data-bs-toggle="modal" data-bs-target="#dns">Servidor DNS</a> en tu <a class="link"
data-bs-toggle="modal" data-bs-target="#red_local">red local</a> vamos a usar una herramienta
sencilla y práctica llamada <a class="link" data-bs-toggle="modal" data-bs-target="#dnsmasq">dnsmasq</a> el cual nos
ayudará a conectarnos a los dispositivos de la red local sin necesidad de aprendernos
las IPs de los dispositivos, adicionalmente es muy importante que tanto tu servidor dns y todos los equipos a los que
deseamos acceder mediante dns
tengan asignada una <a class="link" data-bs-toggle="modal" data-bs-target="#ip_estatica">ip estática</a> de lo
contrario, no funcionará de forma permanente..
</p>
<ul class="nav nav-tabs" id="tab-dix" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="tab1-tab" data-toggle="tab" href="#tab1" role="tab" aria-controls="tab1"
aria-selected="true"><i class="bi bi-database-fill-gear"></i> Servidor DNS</a>
</li>
<li class="nav-item">
<a class="nav-link" id="tab2-tab" data-toggle="tab" href="#tab2" role="tab" aria-controls="tab2"
aria-selected="false"><i class="bi bi-file-earmark-person-fill"></i> Cliente</a>
</li>
<li class="nav-item">
<a class="nav-link" id="tab3-tab" data-toggle="tab" href="#tab3" role="tab" aria-controls="tab3"
aria-selected="false"><i class="bi bi-windows"></i> Windows - WSL</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade active show" id="tab1" role="tabpanel" aria-labelledby="tab1-tab">
<!-- {# i nav 1 #} -->
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # actualizar el sistema e instalar dnsmasq
sudo apt-get update && sudo apt-get upgrade -y && sudo apt install dnsmasq -y
</code></pre>
<p>
Una vez instalado dnsmasq debemos modificar el archivo de configuración:
</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # modificar archivo de configuración de dnsmasq
sudo nano /etc/dnsmasq.conf
</code></pre>
<p>
Dentro del archivo, nos desplazamos hasta el final del documento y añadiremos los siguientes registros:
</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code contenteditable="true"> # añadir registros al final del documento
interface=eth0 # Interfaz de red del equipo, puedes obtenerla con el comando [ip a] (puede ser wlan0 si usas WiFi), en este caso uso eth0
bind-interfaces # Asegura que dnsmasq solo escuche en la interfaz especificada
server=8.8.8.8 # Servidor DNS de respaldo (Google DNS u otro)
domain-needed # Solo resuelve nombres de dominio completos
bogus-priv # Bloquea consultas a direcciones privadas que no deberían salir de la red
local=/mi-red.local/ # Dominio local personalizado
expand-hosts # Expande nombres de host con el dominio especificado
domain=mi-red.local # Dominio DNS local
addn-hosts=/etc/hosts.dnsmasq # Archivo donde defines los nombres de host y sus IPs
</code></pre>
<p>
Creamos el archivo con los hosts personalizados para ello debemos conocer las ips de todos los dispositivos que
queremos acceder a través
de esta modalidad, considerando que en la configuración indicamos que los hosts iban a estar en la ruta
<b>/etc/hosts.dnsmasq</b> <i>(addn-hosts=/etc/hosts.dnsmasq)</i>,
ejecutamos el siguiente comando:
</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # crear y editar el archivo con la lista de host e ips
sudo nano /etc/hosts.dnsmasq
</code></pre>
<p>Una vez abierto el archivo añadimos la lista de ips de la red local y seguido, separado por un espacio, el nombre
de los hosts, ejemplo:</p>
<pre><i class="bi bi-copy"> Copiar código</i>
<code contenteditable="true"> # crear y editar el archivo con la lista de ips y los nombres de host deseados
192.168.1.1 server1
192.168.1.2 server2
192.168.1.3 server3
192.168.1.4 server4
192.168.1.5 server5
</code></pre>
<p>
Guardamos y cerramos el archivo, luego reiniciamos el servicio de dnsmasq:
</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # reiniciar dnsmasq
sudo systemctl restart dnsmasq
</code></pre>
<!-- {# f nav 1 #} -->
</div>
<div class="tab-pane fade" id="tab2" role="tabpanel" aria-labelledby="tab2-tab">
<!-- {# i nav 2 #} -->
<p>En el equipo cliente donde usas alguna distribución de linux debes modificar el archivo resolv.conf, para ello
ejecutamos el comando:</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # en cliente modificar archivo resolv.conf
sudo nano /etc/resolv.conf
</code></pre>
<p>Al final del archivo añadimos lo siguiente:</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code contenteditable="true"> # cliente conf resolv.conf
nameserver 192.168.1.12 # ip local del servidor dns
nameserver 8.8.8.8 # dns google
nameserver 8.8.4.4 # dns google
</code></pre>
<p>
El archivo resolv.conf es un archivo que puede ser sobreescrito por el sistema por lo tanto debes de protegerlo de
escritura con el siguiente
comando:
</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # comando para hacer inmutable el archivo resolv.conf
sudo chattr +i /etc/resolv.conf
</code></pre>
<p>
En caso de que quieras volver a modificarlo es importante que primero lo vuelvas a hacer mutable con el comando:
</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # comando para hacer mutable el archivo resolv.conf
sudo chattr -i /etc/resolv.conf
</code></pre>
<p>
Finalmente para verificar que esta funcionando el servidor DNS lo que podemos hacer es un simple ping al server1 y
verificar que si hay
tráfico o en su defecto conectarnos mediante ssh ejemplo ssh usuario@server1
</p>
<div class="alert alert-warning" role="alert">
<p><i class="bi bi-journal-bookmark-fill"></i>
Si tienes problemas para hacer inmutable el archivo te recomiendo que primero copies el contenido del archivo
resolv.conf y luego lo
elimines, lo vuelves a crear y finalmente pegarle el archivo e intenta nuevamente hacerlo inmutable, esto
seguramente lo resolverá:
</p>
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # moverse a la ruta etc donde esta el archivo de configuración
cd /etc
# copiar el contenido y hacer un respaldo del archivo de configuración, eliminar el archivo original de configuración
sudo cat resolv.conf > backup_resolv.conf && sudo rm resolv.conf
# tomar la información del archivo de respaldo para crear un nuevo archivo resolv.conf y asignarle una propiedad inmutable
sudo cat backup_resolv.conf > resolv.conf && sudo chattr +i /etc/resolv.conf
</code></pre>
</div>
<!-- {# f nav 2 #} -->
</div>
<div class="tab-pane fade" id="tab3" role="tabpanel" aria-labelledby="tab3-tab">
<!-- {# i nav 3 #} -->
<div class="alert alert-info" role="alert">
<p>
<i class="bi bi-info-circle-fill"></i> Si la maquina cliente es Windows deberás usar WSL y adicional a los pasos
anteriores de cliente,
deberas modificar el archivo wsl.conf mediante el comando:
<pre><i class="bi bi-copy" > Copiar código</i>
<code class=""> # modificar archivo wsl.conf
sudo nano /etc/wsl.conf
</code></pre>
Una vez abierto el archivo, al final del documento pegarás la siguiente información:
<pre><i class="bi bi-copy" > Copiar código</i>
<code contenteditable="true">[network]
generateResolvConf = false
nameserver=192.168.1.12 # IP del servidor DNS en este ejemplo
</code></pre>
</p>
</div>
<!-- {# f nav 3 #} -->
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>