Fundamentos de DNS
Tenemos dos computadoras hostA y hostB en la misma red. A quiere llegar a B.
Podemos hacer ping usando la IP de B o darle un nombre para facilitar. Haciendo una comparación, puedes digitar el número para llamar a alguien o vas a la agenda y haces clic en el nombre.
El archivo /etc/hosts vincula una IP a un nombre en Linux. Es nuestra agenda.
El nombre verdadero del hostname del hostB es host-2. Pero ¿recuerdas que hablé de la agenda? En mi agenda puedo poner el nombre que quiera para llamar a juan. Quiero llamar a juan como john. Eso es lo que el hostA acaba de hacer.

Podemos definir en el archivo de hosts la ip de cualquier cosa, pero no quiere decir que sea verdad. Si hacemos ping a www.google.com el servidor que responderá será aquel que definiste la IP.
Podemos tener cuantos nombres queramos incluso para la misma IP.
La ventaja de usar nombres es que cada vez que escribimos ese nombre irá a buscar en el archivo y traducirá a la IP de donde estamos yendo sin necesidad de estar guardando la IP de las cosas.
El problema de esto es que todos necesitarían tener todas las entradas de la red. Si un host cambiara de ip el nombre no traduciría la ip correcta. Para gestionar esto es algo complicado cuando la tendencia es crecer.

Para resolver este problema movemos todas las entradas a un único servidor que administrará de forma centralizada los nombres y quien necesite resolver un nombre va hasta él. Este servidor es conocido como DNS Server.

En Linux configuramos quién será el DNS Server en el archivo /etc/resolv.conf evitando entradas en /etc/hosts.
Aún podemos continuar haciendo configuraciones manualmente en /etc/hosts, incluso es el primer archivo que será consultado y si no encuentra el nombre entonces usará el servidor DNS. Si encuentra en ambos, el /etc/hosts será quien traduzca.

La precedencia de quién debe ser utilizado primero se encuentra en el archivo /etc/nsswitch.conf pudiendo ser alterada.

Si no conseguimos resolver usando el /etc/hosts y con el servidor dns entonces fallará.
Es posible tener varios servidores dns configurados en /etc/resolv.conf.
También es posible que si un servidor DNS falla al intentar resolver el nombre llame a OTRO para ayudar. Por ejemplo tenemos allí el Forward All 8.8.8.8. Eso quiere decir que resuelve lo que consigue y lo que no consigue usa el DNS de Google que es un servidor DNS público que conoce todo.
Los más utilizados son:
- Google Public DNS:
- 8.8.8.8 (Principal)
- 8.8.4.4 (Alternativo)
- Desarrollado y mantenido por Google, es conocido por su velocidad y confiabilidad.
- DNS de Cloudflare
- 1.1.1.1 (Principal)
- 1.0.0.1 (Alternativo)
- Enfocado en privacidad y seguridad, el Cloudflare DNS es conocido por su rapidez y por no registrar logs de consulta de DNS
- OpenDNS
- 208.67.222.222 (Principal)
- 208.67.220.220 (Alternativo)
- Ofrece protección contra phishing y filtros de contenido opcionalmente configurables.

Domain
www.google.com
Los dominios están divididos por . para facilitar recordar el nombre en Internet y agrupar las cosas de acuerdo con su intención.
Estos son los dominios conocidos como TLD - (Top-Level Domain). El top level es el último bloque después de dividir todo el dominio.

.com– para sitios comerciales..org– para organizaciones..net– para redes..xyz– para uso general..name– para individuos..biz– para negocios y emprendimientos en general..space– para tener tu propio espacio en la web..site– para hacer tu espacio propio en Internet..info– para plataformas de información..club– para clubes en línea..tech– para portales de tecnología..online– para establecer una presencia en Internet..co– para corporaciones y marcas de gran porte..pro– para profesionales de cualquier nicho de mercado..app– para creadores de aplicaciones.dev– para desarrolladores..studio– para artistas, músicos y profesionales de la cultura..agency– para agencias de cualquier tipo..life– para mostrar tu estilo de vida..blog– para reforzar que eres un blogger..cloud– para empresas y negocios en la nube..link– para el mundo de los negocios conectados.io– para empresas de tecnología..tv– para entretenimiento en general.- MUCHOS OTROS..
Existen muchos otros y cuanto más crece Internet, más aparecen.
Tenemos los TDL para países.
.br– Brasil..es– España..ru– Rusia..us– Estados Unidos..eu– Unión Europea..ca– Canadá..nl– Holanda..de– Alemania..fr– Francia..jp– Japón..ai– Anguila.cn– China.- OTROS.
Existen top levels que son patrocinados que no pueden ser vendidos pues tienen un destino específico.
- .gov – para sitios gubernamentales.
- .edu – para instituciones educacionales.
- .int – para organizaciones internacionales basadas en tratados.
- .mil – para el ejército de EE.UU.
- OTROS.
¿Y en el caso de brasil que tenemos varios? .com.br, .net.br, .org.br?
El .br es el top level y los demás son conocidos como dominios de segundo nivel. Generalmente estos dominios asociados a países poseen una organización detrás para controlar. Si quieres tener un registro en el top level .br es necesario comprar en Registro.br. No existe forma de comprar un dominio solamente con .br al final tipo midominio.br.
Vamos al caso simple.
Tenemos el ejemplo www.google.com. El .com es el TLD, google es el dominio, que siempre está bajo algún TLD o TDS de segundo nivel como vimos en el caso del .br y el www es el subdominio.
Una vez que tenemos el dominio (google.com) podemos crear varios subdominios para apuntar a diferentes cosas en Internet, pero todo debajo del dominio principal.
Si analizamos esto como un árbol tenemos:

Vamos a imaginar que estamos en una organización y que ella tiene su servidor DNS.
Cuando hacemos una requisición para acceder a app.google.com por ejemplo ¿cuál es el camino recorrido para resolver la ip?
-
El DNS Server de la organización verifica si consigue resolver, si ya tiene registrado entonces devuelve la Ip.
-
Si no tiene otro dns (nameserver) que pueda intentar resolver entonces devuelve que no conoce. Caso contrario, intenta en otros dns servers y guarda la IP por un
período de tiempopara que la próxima solicitud sea más rápida.

Append

Records

Tools
Algunas herramientas para probar resolución de nombres.
nslookup
Esta herramienta no considera el /etc/hosts, solamente si los servidores DNS del resolv.conf conseguirán resolver.
nslookup www.google.com
Server: 8.8.8.8 # Cuál servidor DNS que tengo en mi resolv.conf que será usado para resolver
Address: 8.8.8.8#53 # Servidores DNS usan puerto 53
Non-authoritative answer:
Name: www.google.com
Address: 142.250.78.228
Name: www.google.com
Address: 2800:3f0:4004:810::2004
# Puedo usar un servidor específico para intentar resolver
nslookup google.com 1.1.1.1
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
Name: google.com
Address: 142.251.135.110
Name: google.com
Address: 2800:3f0:4004:80b::200e
nslookup undominioimpossible.com.br
Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find undominioimpossible.com.br: NXDOMAIN
dig
Esta herramienta es más verbosa y retorna lo que está en tu servidor DNS, no solamente la IP.
dig www.google.com
; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19037
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 6 IN A 142.250.79.164
;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Sat Feb 17 23:17:56 -03 2024
;; MSG SIZE rcvd: 59