181 lines
8.2 KiB
HTML
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> |