Ya varias veces me notifican que no se puede acceder a ajayu desde afuera, y pues mi respuesta es que es problema de la conexión, por que no pueden llegar a resolver el dominio.
Como estoy tan seguro?
Para empezar, los servidores de nombres o DNS son los responsables de traducir el nombre que nosotros ponemos en el navegador web. Así por ejemplo al ingresar a google.com, primero nuestro navegador consulta nuestro servidor dns por la ip y recién se conecta a la dirección ip para obtener la página web.
Pero cuando nuestro servidor dns no conoce la dirección, este pregunta al padre por la dirección y a su vez este redirecciona al servidor correcto y así recursivamente.
Este tipo de conexión se hace -casi siempre- por protocolo udp, esto implica que no hay control en la transmisión como en el protocolo tcp. Entonces los clientes hacen la consulta al dns -generalmente- sólo dos veces con un tiempo de espera de 2 segundos, si el servidor no llega a responder entonces nuestro navegador nos muestra un mensaje de que el dominio no existe.
Supongamos que usamos una conexión de entel y nuestro dns es el 200.87.100.10, queremos ingresar a ajayu.memi.umss.edu.bo entonces nuestro cliente pregunta al dns por la dirección ip. Como el servidor no la conoce -no esta en su zona- este hace la consulta al servidor padre hasta dar con la ip:
- ns.entelnet.bo: ajayu esta en mi zona? No, pasa la consulta al padre
- d.root-servers.net: ajayu.memi.umss.edu.bo esta en la zona .bo, pasa la consulta al servidor dns para todos los .bo
- utama.bolnet.bo: ajayu.memi.umss.edu.bo esta en la zona .umss.edu.bo, pasa la consulta al servidor dns para umss.edu.bo
- minerva.umss.edu.bo: ajayu.memi.umss.edu.bo esta en la zona memi.umss.edu.bo, pasa la consulta al servidor dns para .memi.umss.edu.bo
- ns.memi.umss.edu.bo: ajayu.memi.umss.edu.bo es un alias para inti.memi.umss.edu.bo y su ip es 167.157.26.22
Ahora ya sabemos más o menos como funciona el asunto, pero si uno de los servidores queda fuera del tiempo de espera todo se va al tacho.
Entonces que hago?
- Cuando me dicen "no puedo entrar al ajayu" pruebo si es verdad, pero localmente funciona todo correctamente.
- Ok, son problemas de dns, pero donde? Empiezo a consultar los dns.
rolando@boo:~$ dig +short @ns.memi.umss.edu.bo ajayu.memi.umss.edu.bo
inti.memi.umss.edu.bo.
167.157.26.22
rolando@boo:~$ dig +short @minerva.umss.edu.bo ajayu.memi.umss.edu.bo
inti.memi.umss.edu.bo.
167.157.26.22
rolando@boo:~$ dig +short @apollo.umss.edu.bo ajayu.memi.umss.edu.bo
inti.memi.umss.edu.bo.
167.157.26.22
- Ok. Considerando que las conexiones en su mayoria son de entel, otras de supernet. Pruebo los dns de cada proveedor
rolando@boo:~$ dig @200.87.100.10 memi.umss.edu.bo
; <<>> DiG 9.3.4 <<>> @200.87.100.10 memi.umss.edu.bo
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 4608
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;memi.umss.edu.bo. IN A
;; Query time: 356 msec
;; SERVER: 200.87.100.10#53(200.87.100.10)
;; WHEN: Tue May 29 18:37:19 2007
;; MSG SIZE rcvd: 34
rolando@boo:~$ dig @ns.supernet.com.bo ajayu.memi.umss.edu.bo
; <<>> DiG 9.3.4 <<>> @ns.supernet.com.bo ajayu.memi.umss.edu.bo
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 16712
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;ajayu.memi.umss.edu.bo. IN A
;; Query time: 1347 msec
;; SERVER: 200.58.64.15#53(200.58.64.15)
;; WHEN: Tue May 29 18:39:36 2007
;; MSG SIZE rcvd: 40
No llegan a responder. Y aparte hay otra consideración, generalmente los servidores de nombres tienen un cache donde guardan las direcciones que ya conocen y las que no. Entonces el servidor dns consulta por ajayu.memi.umss.edu.bo y no obtiene respuesta, lo guarda en su cache por un tiempo que ajayu.memi.umss.edu.bo no tiene ip.
Los servidores dns estan mal configurados?
Pues no, por que funcionan todo el tiempo pero localmente dentro la umss, entonces tiene que ser la conexión. Entonces analizamos como esta nuestro tráfico hacia redes fuera de la umss, en este caso los dns de comteco y entel:
My traceroute [v0.71]
boo (0.0.0.0) Tue May 29 19:32:10 2007
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. gateway.memi.umss.edu.bo 0.0% 3057 1.0 0.4 0.4 30.0 1.2
2. cisco.umss.edu.bo 2.6% 3057 1.5 2.3 1.3 467.5 9.0
3. 166.114.254.248 49.9% 3057 210.6 80.3 2.8 459.7 68.1
4. 200.87.253.81 52.7% 3056 50.7 82.2 4.2 423.6 66.0
5. 200.87.253.213 50.9% 3056 169.8 86.4 7.1 423.1 67.1
6. ns.entelnet.bo 49.2% 3056 99.9 81.9 7.5 423.0 64.5
My traceroute [v0.71]
boo (0.0.0.0) Tue May 29 19:32:18 2007
Keys: Help Display mode Restart statistics Order of fields quit
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. gateway.memi.umss.edu.bo 0.0% 3057 0.7 0.6 0.4 36.6 1.4
2. cisco.umss.edu.bo 3.1% 3057 2.2 2.4 1.4 388.0 8.6
3. 166.114.254.248 49.5% 3057 167.6 82.7 3.0 367.4 66.0
4. 200.87.253.81 48.2% 3057 134.2 77.2 2.9 341.3 63.5
5. 200.87.253.213 48.8% 3057 136.1 82.6 7.2 541.2 64.7
6. 200.87.253.254 51.3% 3057 633.8 706.4 441.8 1069. 104.3
7. mia1-entel-bolivia-1-bo.mia.seab 51.3% 3057 755.9 715.9 427.1 1056. 107.5
8. ash2-mia6-racc1.ash.seabone.net 50.2% 3057 734.8 746.2 498.1 1129. 109.6
9. telefonica-2-es-ash2.ash.seabone 51.1% 3057 443.5 444.4 185.2 892.1 110.0
10. GE7-0-0-0-grtwaseq2.red.telefoni 51.3% 3056 656.5 741.6 511.9 1234. 116.0
11. So-4-1-0-0-grtmiabr4.red.telefon 49.6% 3056 769.7 779.9 542.3 1244. 115.5
so-6-1-0-0-grtmiabr4.red.telefonica-wholesale.net
12. So5-0-0-0-grtmiatc2.red.telefoni 49.2% 3056 759.8 779.5 544.1 1350. 118.1
13. COMTECO-0-2-3-0-grtmiatc2.red.te 51.1% 3056 462.8 607.0 396.3 918.1 95.0
14. host-200-58-71-90.supernet.com.b 51.0% 3054 417.4 554.6 308.4 1072. 107.0
15. ns.supernet.com.bo 50.8% 3054 864.2 884.9 629.2 1468. 126.1
Aja! -aunque eso ya lo sabíamos hace tiempo- hay una pérdida del 50% de paquetes que son enviados, la misma probabilidad de sacar escudo lanzando una moneda de diez centavos. Y eso que no son horas pico de uso de la conexión en la umss donde la pérdida -según hemos visto- llega alrededor del 70%.
Hay solución?
El problema, aparte de la pérdida, se concentra el la resolución de nombres. Pero obviando este hecho se puede acceder al sitio puesto que la conexión web se realiza a través de http que va sobre tcp -aúnque tarda más por la pérdida-.
Una solución temporal se aplica al lado del cliente, haciendo unas modificaciones -dirty hacks- al archivo hosts del sistema.
Linux/Unix/Mac:
En linux el archivo hosts se encuentra en /etc/hosts y su contenido puede variar, por ejemplo el mio:
127.0.0.1 localhost boo.memi.umss.edu.bo boo
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
Para que nuestro navegador no tenga que hacer la consulta al dns, usando un editor de texto -vi, gedit, textmate, etc- agregamos la siguiente línea al final:
167.157.26.22 ajayu.memi.umss.edu.bo
Windows:
En windows el archivo hosts se encuentra en diferentes lugares según la versión:
- Windows 95/98/Me: C:\Windows\Hosts
- Windows NT/2000: C:\WINNT\System32\drivers\etc
- Windows XP: C:\WINDOWS\system32\drivers\etc
- Windows 2003: C:\WINDOWS\system32\drivers\etc
- Windows Vista: C:\WINDOWS\system32\drivers\etc
Su contenido es más o menos el siguiente:
# Copyright (c) 1993-1999 Microsoft Corp.
#
# Éste es un ejemplo de archivo HOSTS usado por Microsoft TCP/IP para Windows.
#
# Este archivo contiene las asignaciones de las direcciones IP a los nombres de
# host. Cada entrada debe permanecer en una línea individual. La dirección IP
# debe ponerse en la primera columna, seguida del nombre de host correspondiente.
# La dirección IP y el nombre de host deben separarse con al menos un espacio.
#
#
# También pueden insertarse comentarios (como éste) en líneas individuales
# o a continuación del nombre de equipo indicándolos con el símbolo "#"
#
# Por ejemplo:
#
# 102.54.94.97 rhino.acme.com # servidor origen
# 38.25.63.10 x.acme.com # host cliente x
127.0.0.1 localhost
Editamos el archivo hosts con un editor de textos, el notepad será suficiente, agregando la siguiente linea:
167.157.26.22 ajayu.memi.umss.edu.bo
En algunos casos hay que reiniciar para que tenga efecto.
Recalcar que esta es una solución a lo bruto. Por que el día que ajayu.memi.umss.edu.bo apunte a otra dirección ip por las modificaciones manuales no podrán acceder.
Este problema sólo afecta a Ajayu?
Pues no, afecta a todos los dominios memi.umss.edu.bo. Y según las pruebas que hice tambien a otros como fcyt.umss.edu.bo.
Atentamente,
Rho, sysadmin del memi y responsable ad-honorem del Ajayu.