Tema 4: El Sistema Operativo Linux
Peso: 8
4.1: Eligiendo un Sistema Operativo
Peso: 1
Todo sistema operativo posee las mismas finalidades básicas, que son controlar el hardware, gestionar programas y ofrecer una interfaz de operación al usuario. Sin embargo, diferentes tipos de sistemas operativos emplean diferentes abordajes.
Si consideramos los computadores personales tradicionales, los sistemas operativos más utilizados son Microsoft Windows y macOS. En menor medida, están las distribuciones Linux. Considerando servidores, dispositivos embebidos y móviles, la participación de Linux es mayor.
Principalmente en el ámbito de la computación personal, elegir el mejor sistema operativo es mucho más una cuestión personal que un criterio objetivo. De una manera u otra, todo lo que un sistema operativo puede ofrecer se puede encontrar en otro. De hecho, los principales sistemas operativos poseen muchas diferencias importantes.
Microsoft Windows
Windows es el sistema operativo más popular entre usuarios domésticos. Es un producto de Microsoft y totalmente privativo. A pesar de poder ser comprado directamente por el usuario, es más común que sea preinstalado por el fabricante de la computadora. También es muy utilizado irregularmente, instalado a partir de copias ilegales. Sus principales ventajas son:
- Familiar. La mayoría de los usuario de computador conoce la interfaz de Windows.
- Compatibilidad. La versión estándar de Windows puede ser instalada en prácticamente cualquier computadora contemporánea. Prácticamente todo dispositivo fabricado es hecho para funcionar con Windows.
- Programas. Existen incontables programas para Windows. Algunos muy específicos poseen versión solamente para Windows y no hay similares para otros sistemas operativos.
Algunas de sus desvantajas son:
- Restrictivo. Legalmente, no es posible instalar y compartir Windows sin comprar una licencia.
- Inflexible. Un técnico o desarrollador va a encontrar dificultades si desea realizar tareas de modo diferente al estándar de Windows.
- Programas malintencionados. Existen muchos programas malintencionados y virus desarrollados para Windows.
El desempeño de Windows varia conforme la computadora dónde está instalado. Versiones más antiguas, como Windows 7, aún son utilizadas por ter un bom desempenho mesmo en computadores já obsoletos.
macOS
macOS es el sistema operativo producido por Apple para su linea de computadores personales. macOS difiere de sus versiones anteriores principalmente en la base del sistema, desarrollado a partir de FreeBSD, un sistema Unix de código abierto. A pesar de ello, toda a interfaz y aplicativos de macOS son privativos, lo que es permitido por la licencia de FreeBSD. Algunas de las ventajas del macOS son:
- Desempeño. Al ser el sistema operativo y la computadora producidos por Apple, están integrados armoniosamente.
- Interfaz. Los desarrolladores de aplicativos para macOS deben seguir rígidos estándares estéticos para no perjudicar la consistencia de la interfaz.
Algunas de sus desventajas:
- Compatibilidad. Aún siendo posible instalar macOS en computadoras de otros fabricantes, esta práctica no es recomendada por Apple y no siempre produce resultados satisfactorios.
- Restrictivo. Al igual que Windows, no es posible instalar y compartir macOS sin comprar una licencia.
Incluso siendo técnicamente un Unix, macOS mantiene este aspecto en segundo plano, privilegiando la administración del sistema en su interfaz privativa. Aunque es posible utilizar varios comandos tradicionales de Unix en la terminal de macOS.
Linux
Dada su naturaleza abierta de desarrollo, no existe un único sistema operativo Linux, sino diversas variantes llamadas distribuciones. Sin embargo, las principales distribuciones poseen interfaz s semejantes. En la operación vía linea de comando, existe poca diferencia entre una distribución y otra.
Las distribuciones Linux procuran ofrecer una experiencia familiar al usuario habituado a la interfaz de ventanas, pero siempre mantienen la tradición de operación vía linea de comando. La interfaz de ventanas ofrece facilidad de uso, pero la linea de comando es más eficiente para ciertos tipos de tareas, principalmente para usuarios más experimentados ejecutando tareas administrativas.
Algunas ventajas de Linux en relación al Windows y macOS son:
- Libertad y versatilidad. Preservando las condiciones definidas en la licencia de cada componente, Linux puede ser utilizado como mejor le convenga al usuario.
- Aprendizaje. Los usuarios interesados en el funcionamiento del sistema operativo o en aprender a programar encuentran inmensas fuentes de información en un sistema Linux, tanto en la forma de código fuente como de documentación.
- Programas. Un usuario de Linux tiene a su disposición una gran variedad de programas a partir del instalador de paquetes de la distribución. Usuarios de macOS y Windows ya poseen instaladores semejantes, pero en Linux los instaladores están consolidados hace más tiempo y la instalación de programas “por fuera” es algo raro y no recomendado. Esta característica asegura la compatibilidad y la seguridad del sistema operativo.
- Compatibilidad. Mientras que que con macOS no es usual a instalación en equipos diferentes, con o Windows será necesario instalar diversos drivers de dispositivo aparte, una distribución Linux recién instalada está lista para uso y raramente necesita de ajustes. En Linux, los drivers son llamados módulos del kernel y son cargados automáticamente cuando el dispositivo es identificado.
Dentro de las desvantajas de Linux, se destacan:
- Falta de estandarización. Existen diferencias significativas entre las distribuciones. La ejecución de una tarea en una distribución no será necesariamente igual en otra distribución.
- Soporte. Algunos fabricantes de dispositivos y programas no brindan soporte para Linux, obligando al usuario a mantener un Windows o macOS exclusivamente para esos casos.
La diversidad de tipos de Linux puede ser entendida tanto como una ventaja como una desventaja. Mientras que este hecho torna más difícil aprender sobre las diversas peculiaridades, es conveniente la existencia de distribuciones para las más diversas finalidades y preferencias. El desarrollo de Linux es tan dinámico que en muchos casos el usuario puede optar por una versión más consolidada, chamada estable, o una versión más avanzada pero menos probada, llamada beta.
Algunas de estas variaciones no son exclusivas de Linux. es común e Linux y entre otros sistemas operativos la oferta de diferentes versiones de un mismo sistema operativo para diferentes finalidades, como versiones para servidor o para ambiente doméstico. También existen distribuciones que ofrecen versiones estables con soporte extendido, como es o caso del Ubuntu LTS (long term support) y sus derivados.
4.2: Entender el Hardware de la Computadora
Peso: 2
El funcionamiento interno de las computadoras modernas envuelve mucha complejidad para que su operación sea más simple y para obtener mejores resultados. Es por a causa de la mejora de la tecnología que existen diferentes tipos de conexiones y dispositivos que pueden ser conectados a la computadora.
Periféricos
Genéricamente, un periférico es cualquier equipamiento externo conectado a la computadora. Muchos periféricos pueden ser considerados computadoras, algunos inclusive dotados de sistema operativo. Es el caso de enrutadores o switches de red, muchos utilizan alguna variante de Linux. Sin embargo, a diferencia de computadores tradicionales, son equipamientos con una finalidad específica. En el caso de los enrutadores, su función es conectar computadores para formar una red local (LAN: Local Area Network).
Una computadora moderna cuenta con los siguientes tipos de conexiones para periféricos:
- USB: Universal Serial Bus, es o tipo de
conexión más común. Utilizado por impresoras, teclados, ratones,
teléfonos, etc. En Linux, el comando
lsusb
lista todos los dispositivos USB identificados por el sistema. - Entrada/Salida de audio analógico: Para altoparlantes y micrófono.
- VGA/DVI: Para conectar un monitor.
- HDMI: Salida integrada de vídeo y audio, para enviar sonido e imagen a televisores.
- Ethernet: Conexión de red cableada.
Existen otras conexiones poco utilizadas o en desuso, como la serial y la paralela. Además de las conexiones externas, la placa madre posee diversas conexiones para componentes conectados internamente.
Conexiones internas
La placa madre es la responsable por interconectar todos los componentes de la computadora. Diversos componentes que antiguamente eran separados hoy están integrados en la placa madre, como controladores de disco y dispositivos de audio y vídeo. Además de esto, diversas conexiones se tornaron obsoletas, como las conexiones ISA y AGP.
Además de las conexiones para la memoria y procesador, las conexiones internas más utilizadas son:
- PCI: Para conectar placas de expansión, como placas de vídeo.
- IDE: Utilizada para discos rígidos y DVD/CDROM.
- SATA: Para discos rígidos más modernos.
Antes que el sistema operativo se encargue de controlar la computadora, el BIOS (Basic Input/Output System, el Sistema Básico de Entrada/Salida) de la placa madre identifica y realiza pruebas simples en los ítems fundamentales de hardware, como procesador, memoria y disco. En caso que alguno de los componentes internos no funcione correctamente, el BIOS emitirá un mensaje notificando sobre el error. En caso que no encuentre errores, el BIOS ejecuta el cargador de arranque localizado en el inicio del disco rígido predeterminado que, a su vez, cargará el sistema operativo.
Dispositivos de almacenamiento
En Linux, todo dispositivo de almacenamiento encontrado es identificado
por un archivo dentro del directorio /dev/
y son
genéricamente llamados dispositivos de bloque. El nombre
utilizado para el archivo depende del tipo del dispositivo (IDE, SATA,
SCSI etc) y de las particiones contenidas en él.
Discos rígidos, tanto los externos y los SSD (discos de estado sólido),
son nombrados /dev/sda
, /dev/sdb
, /dev/sdc
,
etc, en el orden correspondiente al que son identificados por el
sistema. La primera partición del disco /dev/sda
será /dev/sda1
,
l a segunda partición en este disco será /dev/sda2
, y de
así en más. Lo mismo vale para los demás dispositivos de almacenamiento
de bloque, como pendrives. Es en la partición onde está el
sistema de archivos, que es responsable de organizar el almacenamiento
de archivos. Los sistemas de archivos más populares en Linux son ext3,
ext4, xfs y btrfs.
En versiones más antiguas del kernel, los dispositivos IDE eran
identificados como /dev/hda
, /dev/hdb
, etc.
En los sistemas Linux más recientes, desde la versión 2.6 del Kernel
los discos, aún siendo IDE, son identificados como si fuesen
discos SATA. En este caso, los nombres serán creados con el prefijo sd,
pero será respetado el esquema de nombres master o slave
(en el primer canal IDE, sda para master y sdb para
slave, por ejemplo).
Dispositivos de CD/DVD y disquetes también tienen archivos
correspondientes en /dev/
. Un lector/grabador de CD/DVD
conectado al primer canal IDE será identificado como /dev/sr0
.
Si estuviera conectado al segundo canal IDE será identificado como /dev/sr1
.
Un antiguo dispositivo de disquete floppy disk es identificado
por el archivo /dev/fdO
.
4.3: Dónde se Almacena la Información
Peso: 3
Como todo sistema operativo moderno, Linux guarda un registro de todos
los eventos relevantes del sistema. Para verificar como ocurrió el
proceso de carga del sistema se usa el comando dmesg
, que
muestra los mensajes en el llamado kernel ring buffer. Esos
mensajes son sobrescritos cada vez que el sistema es reiniciado y son
almacenadas en /var/log/dmesg
, además de otros mensajes
del kernel, que pueden ser consultados en el archivo /var/log/messages
.
Linux también mantiene diversas informaciones relevante respecto de los procesos del sistema. En lineas generales, un proceso es un programa en ejecución. Cada proceso posee un número único de identificación chamado PID. Este número puede ser usado para cambiar la prioridad de un proceso o para finalizarlo.
Monitoreo de procesos
Diversos comandos pueden ser usados para inspeccionar procesos y son especialmente útiles para localizar y finalizar procesos innecesarios o sospechosos. Ellos son:
ps
: Muestra los procesos activos de manera detallada;top
: Monitorea continuamente los procesos, mostrando informaciones como uso de memoria y CPU de cada proceso. La tecla[H]
brinda ayuda sobre el uso del programa. Puede ser usado para alterar la prioridad de un proceso;pstree
: Muestra procesos activos en formato de árbol genealógico (procesos hijos ligados a los respectivos procesos padres);
Un usuario sólo puede finalizar o modificar la prioridad de sus propios procesos, y no puede reducir la prioridad por debajo de 0. El usuario root puede finalizar procesos de cualquier usuario, y puede reducir la prioridad por debajo de 0 (mayor prioridad).
Recursos de sistema
La administración de procesos se debe basar en los recursos de hardware disponibles. Básicamente, procesos sospechosos que ocupan mucha memoria o procesamiento pueden ser finalizados en situaciones de emergencia.
El comando free
muestra la cantidad total de memoria RAM,
de memoria libre y o espacio de swap, en kilobytes:
$ free
total used free shared buffers cached
Mem: 16442484 15904244 538240 0 524656 1570016
-/+ buffers/cache: 13809572 2632912
Swap: 3998712 3336664 662048
En una situación en que no hay más memoria RAM disponible y el espacio de swap ya está demasiado ocupado, existe la sospecha de que algún proceso está ocupando mucha memoria indebidamente y debe ser finalizado.
Ubicación de los archivos de sistema
Todo archivo tiene una ubicación adecuada en el sistema, que varia conforme su finalidad. En sistemas Linux, el estándar que define la ubicación de los archivos y directorios se llama Filesystem Hierarchy Standard, FHS.
FHS
El FHS (del inglés Filesystem Hierarchy Standard o Jerarquía Estándar de Sistemas de Archivos) es el estándar de ubicación de archivos adoptado por la mayoría de la distribuciones Linux. Cada uno de los directorios sirve a un propósito, se dividen entre los que deben estar en la partición raíz y los que pueden ser puntos de montaje para otras particiones o dispositivos.
Los directorios que residen obligatoriamente en la partición raíz son:
/bin
y/sbin
: Contienen los programas esenciales para cargar y administrar el sistema./etc
: Archivos de configuración específicos de la máquina./lib
: Bibliotecas compartidas por los programas en/bin
y/sbin
y módulos del kernel./mnt
y/media
: Puntos de montaje para otras particiones o dispositivos./proc
y/sys
: Directorios especiales con información de procesos y hardware./dev
: Archivos de acceso a dispositivos y otros archivos especiales.
Los demás directorios del raíz que pueden ser puntos de montaje son:
/boot
: Kernel y mapas del sistema y los cargadores de boot de secundario./home
: los directorios dos usuarios./root
: Directorio del usuario root./tmp
: Archivos temporarios./usr/local
y/opt
: Programas adicionales. También pueden contener las bibliotecas necesarias para los programas adicionales./var
: Datos de programas y archivos relacionados, archivos de log, bases de datos y archivos de sitios web. Puede contener directorios compartidos.
En computadores personales, no hay necesidad de crear particiones extras o en otros dispositivos. Pero en servidores es recomendable hacerlo, pues este procedimiento torna la administración más simple y puede resultar en un mejor desempeño.
4.4: Su Computadora en Red
Peso: 2
La finalidad de una computadora casi siempre está asociada a su uso en una red de computadoras y el medio de comunicación entre computadoras más consolidado son las redes IP (Internet Protocol). Las principales características de este tipo de red son la utilización de un número de identificación - o número IP - para el dispositivo conectado y la posibilidad de comunicación entre diferentes redes de computadoras, de allí se origina el nombre Internet (entre redes). Al conectar un computador a la red, sea vía un enrutador en una red interna o directamente a Internet, necesariamente precisará obtener una dirección IP para poder comunicarse con otras máquinas.
Configuración de los clientes en la red
En la mayor parte de los casos, tanto la configuración de la interfaz como de las rutas de red es hecha automáticamente usando el recurso llamado DHCP. El programa DHCP cliente envía una petición a la red por medio de la interfaz especificada y el servidor responde con la dirección IP, máscara de red, broadcast etc., datos que serán usados para configurar la interfaz local.
Resulta fundamental para el funcionamiento de la red que la interfaz de
red este configurada correctamente. Si toda la parte estructural de la
red - enrutador y cableado - se encuentra correctamente preparada y la
interfaz de red correctamente instalada, esta podrá ser configurada
manualmente por medio del comando ifconfig
o del comando ip
.
ifconfig
e ip
también pueden ser usados para
inspeccionar las configuraciones de una interfaz. El comando ifconfig
sin argumentos muestra las configuraciones de todas las interfaz
s activas del sistema. En Linux, la única interfaz de red que está
siempre presente es la lo, que representa una interfaz de
comunicación local, no corresponde a ningún ítem de hardware. Para
verificar la configuración de una interfaz específica, basta brindar
como argumento el nombre de la interfaz.
De modo semejante, el comando ip addr show
muestra la
configuración de todas las interfaz s activas del sistema, siendo
posible especificar una interfaz de red determinada para inspección.
Dirección IP
Las direcciones IP en formato a.b.c.d - conocidos por el término inglés dotted-quad - son la expresión, en números decimales, de una dirección de red binaria. Cada uno de los cuatro campos separados por puntos corresponde a un byte, algunas veces llamado octeto. Por ejemplo, el número IP 192.168.1.1 corresponde a la forma binaria 11000000.10101000.00000001.00000001.
Cada interfaz de red en una misma red deberá tener una dirección IP única, pero cada computadora puede poseer más de una interfaz de rede. En ese caso, la computadora puede estar conectada a diversas redes diferentes.
Dirección de red, máscara de red y dirección broadcast
Para que los datos puedan ser encaminados correctamente por la red, la interfaz de red precisa conocer su número IP, el número IP de destino y la red a la que pertenecen.
En la mayoría de los casos, la red del IP de destino sólo será conocida cuando ese IP de destino esté dentro de la misma red interna del IP de origen. Es posible identificar si un IP pertenece a una red observando su máscara de red.
La máscara de red define una cantidad de bits. Si esa cantidad inicial de bits en un dirección es igual a la de otra dirección, significa que ambos pertenecen a la misma red.
- Máscara de 16 bits: 11111111.11111111.00000000.00000000 = 255.255.0.0
- Máscara de 17 bits: 11111111.11111111.10000000.00000000 = 255.255.128.0
Con la primera máscara (16 bits), pertenecerán a la misma red los IPs cuyos dos primeros octetos de la dirección ne difieran entre sí. Con la segunda máscara (17 bits), pertenecerán a la misma red los IPs cuyos dos primeros octetos y el primer bit del tercer octeto de la dirección no difieran entre sí. De esa forma, dos direcciones de interfaz 172.16.33.8 y 172.16.170.3 estarán en la misma red si la máscara fuera de 16 bits, pero no si la máscara fuera de 17 bits.
Las máscaras de red varían dependiendo del contexto de la red. Consecuentemente, la dirección de red corresponde a la parte del número IP determinado por los bits marcados de la máscara de red. Para una máquina 172.16.33.8 con máscara de red 255.255.0.0, la dirección de red será 172.16.0.0.
La dirección broadcast es el número IP que designa todas las interfaces en una red. Para una dirección de red 172.16.0.0, la dirección broadcast será 172.16.255.255.
Una dirección IP puede mostrar la información de dirección de red, máscara de red y broadcast en una forma abreviada. Por ejemplo, 192.168.1.129/25, donde el número 25 después de la barra indica la cantidad de bits de la máscara. Se concluye que la máscara de red es 255.255.255.128, la dirección IP es 192.168.1.128 y la dirección de broadcast es 192.168.1.255.
IPv4 y IPv6
El estándar tradicional de 32 bits (cuatro octetos de bits) de los números IP es conocido como IPv4. Existe otro estándar más reciente, conocido como IPv6, que consiste de una secuencia de 128 bits. La ventaja obvia del IPv6 sobre o IPv4 es la disponibilidad de una cantidad mucho mayor de números IP. Mientras que IPv4 es capaz de generar 4.294.967.296 direcciones, IPv6 disponibiliza 2128 direcciones.
Una dirección IPv6 normalmente se escribe en la forma de ocho grupos de cuatro números hexadecimales, como: 2001:0db8:85a3:08d3:1319:8a2e:0370:7334.
IPv4 aún está mucho más difundido y es posible la intercomunicación entre los dos estándares. Pero, a medida que cada vez más dispositivos demanden el uso de una dirección IP, el estándar IPv6 estará más diseminado y vigente.
Rutas
Conociendo el IP de destino y a que red pertenece, el sistema será capaz de enrutar los datos por la interfaz de red correcta. Sin embargo, principalmente en comunicación sobre Internet, difícilmente la interfaz local estará directamente conectada a la red del IP de destino. Para esos casos, una ruta predeterminada es establecida: una dirección IP – conocida como puerta de enlace o gateway – dentro de una red conocida es utilizada para enrutar ese tipo de comunicación para una red desconocida. Este proceso ocurre sucesivamente, hasta que encuentre la red donde el IP de destino es conocido.
La tabla de rutas del sistema puede ser consultada de varias maneras.
El comando route
tiene la finalidad de manipular la tabla
de rutas, pero sin argumentos solo muestra la tabla de rutas actual:
$ route
Tabla de Rutas IP del Núcleo
Destino Pasarela GenMask Indic Métric Ref Uso Interfaz
default _gateway 0.0.0.0 UG 0 0 0 tun0
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
_gateway 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
192.168.2.0 0.0.0.0 255.255.255.128 U 100 0 0 enp0s25
En esta salida es posible identificar las diferentes rutas configuradas
para las interfaces de red. La ruta predeterminada está identificada por
el término default en la primera columna. El comando netstat
,
utilizado para mostrar varias informaciones respecto de la red, también
puede mostrar esta salida al utilizarlo con la opción -r
.
El comando ip
es otro comando que puede ser utilizado para
inspeccionar las rutas y posee una salida más simplificada:
$ ip route show
default via 10.8.0.1 dev tun0
10.8.0.0/24 dev tun0 scope link
10.8.0.1 dev tun0 proto kernel scope link src 10.8.0.6
192.168.2.0/25 dev enp0s25 proto kernel scope link src 192.168.2.10 metric 100
Esta información es especialmente útil cuando la red presenta fallas de conexión. Un primer paso para diagnosticar el problema es verificar si la dirección de destino de la ruta predeterminada está accesible.
Diagnóstico de conexión
El comando ping
puede ser usado para hacer diagnósticos
simples en la red. Utilizando el protocolo ICMP, simplemente
envía una pequeña cantidad de datos para una máquina especificada y
aguarda un respuesta. Si la máquina remota responde, significa que el
nivel básico de conectividad de la red está funcionando correctamente.
Si el acceso a diferentes sitios de Internet no estuviera funcionando,
por ejemplo, es posible que exista algún problema de conectividad en la
ruta predeterminada. Luego de identificar la dirección de la puerta de
enlace, el comando ping
puede ser utilizado para verificar
si está accesible:
$ ping -c3 10.8.0.1
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=4.07 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=3.20 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=1.70 ms
--- 10.8.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.700/2.994/4.075/0.981 ms
En este ejemplo, fue posible verificar que los tres paquetes (definidos
con la opción -c3
) enviados a la puerta de enlace 10.8.0.1
fueron respondidos exitosamente. Esto significa que el problema
hipotético no está ocurriendo en el envío de paquetes por la ruta
predeterminada.
Resolución de nombres
Los problemas de conexión de red también pueden estar asociados al servicio de resolución de nombres DNS. El DNS es responsable por la traducción de nombres como epet1.edu.ar a un número IP y viceversa. La configuración incorrecta del DNS resulta en una red prácticamente inoperante, pues la inmensa mayoría de los destinos remotos son accesados por nombre y no directamente por su número IP.
Para pruebas más simples de resolución de nombres, el comando host
puede ser utilizado. Por ejemplo, traducir el nombre epet1.edu.ar
al número IP correspondiente:
$ host epet1.edu.ar
epet1.edu.ar has address 190.183.209.200
epet1.edu.ar mail is handled by 20 yunque.epet1.edu.ar.
De modo semejante, es possível consultar se un nome está associado a un número IP:
$ host 190.183.209.200
200.209.183.190.in-addr.arpa domain name pointer yunque.epet1.edu.ar.
A este tipo de asociación se le da el nombre de DNS reverso. En caso
que el comando host
no devuelva un número IP para el
nombre buscado, es posible hacer otras pruebas indicando un servidor DNS
específico a continuación del nombre que está siendo buscado:
$ host epet1.edu.ar 208.67.222.222
Using domain server:
Name: 208.67.222.222
Address: 208.67.222.222#53
Aliases:
epet1.edu.ar has address 190.183.209.200
epet1.edu.ar mail is handled by 20 yunque.epet1.edu.ar.
Si solo al especificar un servidor DNS al comando host
se
obtiene la dirección IP correspondiente, significa que la configuración
del DNS local no es correcta o que el servidor DNS utilizado de manera
predeterminada no está funcionando.
Las configuraciones de DNS son almacenadas dentro de archivos de texto
convencionales, en el directorio /etc
. Apesar de que cada
distribución utiliza métodos distintos para realizar las configuraciones
automáticas de red, todas obedecen la estandarización tradicional de
almacenamiento de las configuraciones. Los principales archivos de
configuración relacionados al DNS en el cliente son:
/etc/hosts
: Asocia los números IP de la red a nombres. Es práctico para atribuir un nombre más simple a máquinas accesadas frecuentemente o para pequeñas redes, donde un servicio de resolución automática de nombres no es necesario./etc/resolv.conf
: Determina los números IP de los servidores de resolución de nombres DNS.
Via de regra, o archivo /etc/hosts
es
consultado primeiro. en seguida, caso o nome consultado no seja
encontrado no archivo, será consultado un servidor DNS
especificado no archivo /etc/resolv.conf
.
O archivo /etc/hosts
es bastante simples.
Nele los números IP son posicionados al lado dos respectivos nomes:
$ cat /etc/hosts
127.0.0.1 localhost
190.183.209.200 yunque
Más de un nombre puede ser atribuído a un mismo IP, actuando como un
nombre alternativo para el mismo IP. Por ejemplo, agregar el nombre epet1
al IP 190.183.209.200:
190.183.209.200 yunque epet1
En el archivo /etc/resolv.conf
se indican los números IP
de los servidores DNS, o sea, las computadoras que hacen la traducción
de un nombre a un número IP y viceversa. La entrada fundamental en /etc/resolv.conf
es nameserver, que define el servidor DNS. Otras
entradas nameserver se pueden indicar, en caso que el primer servidor
DNS estuviese fuera de linea o muy ocupado:
$ cat /etc/resolv.conf
domain epet1.edu.ar
nameserver 192.168.1.1
nameserver fd6d:c2f2:544f::1
La linea domain
indica el dominio local. Así, cuando se
consulta un nombre sin dominio, se considera el dominio predeterminado.
Se fuese necesario, las entradas nameserver pueden ser modificadas por
otras direcciones IP cuyo funcionamiento haya sido verificado con el
comando host
. Las direcciones IP 208.67.222.222
y 208.67.220.220
son servidores DNS públicos de Opendns.com
y pueden ser utilizados libremente. Otros servidores DNS públicos son 8.8.8.8
y 8.8.4.4
, éstos ofrecidos por Google.
El comando dig
(Domain Information Groper)
devuelve información más avanzada para el diagnóstico de problemas en
servidores DNS. Si ningún argumento es utilizado, el comando realizará
la prueba estándar en los servidores encontrados en el archivo /etc/resolv.conf
.
Para utilizar un servidor específico, basta indicarlo a continuación del
carácter _@_:
$ dig epet1.edu.ar @8.8.8.8
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> epet1.edu.ar @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57487
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;lcnsqr.com. IN A
;; ANSWER SECTION:
epet1.edu.ar. 1799 IN A 190.183.209.200
;; Query time: 230 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: qua fev 27 01:17:14 -03 2019
;; MSG SIZE rcvd: 55
Esta respuesta muestra que el nombre epet1.edu.ar fue localizado por el servidor DNS indicado. La sección QUESTION muestra cual fue el nombre buscado y la sección ANSWER muestra cual fue la respuesta del servidor consultado. La letra A en las lineas QUESTION y ANSWER indica que el registro DNS posee una dirección IPv4 asociada. Si la dirección IP asociada fuese IPv6, el tipo indicado para el registro sería AAAA.
Otros problemas de red
Si todas las configuraciones de red estuvieran en orden y aún así
existieren problemas de conectividad, es posible que las fallas se
encuentren en otros puntos de la red. Un comando importante para
analizar el tráfico y la respuesta de las máquinas remotas es netstat
.
Por ejemplo, es posible inspeccionar todas las conexiones del protocolo
TCP activas:
$ netstat -tn
Conexiones activas de Internet (servidores w/o)
Proto Recib Enviad Dirección Local Dirección remota Estado
tcp 0 352 190.183.209.200:22 189.100.34.204:43382 ESTABLISHED
La opción -n
determina que sean mostrados sólo los
números IPs y la opción -t
determina la configuración de
las conexiones del protocolo TCP. Para exibir continuamente las novas
conexões, basta informar a opción -c
.
netstat también agrega algunas funciones de otros comandos. Con la
opción -i
, muestra todas las interfaces de red activas y
estadísticas relacionadas:
$ netstat -i
Tabla de la interfaz del núcleo
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 0 0 0 520091 0 0 0 BMRU
lo 16436 0 0 0 0 0 0 0 0 LRU
En caso que el tráfico de datos muestre que algunas conexiones no
responden, el problema podrá estar en el punto remoto, o sea, en otro
computador de la red. Para identificar en que punto las conexiones no
funcionan, existe el comando traceroute
. Por ejemplo, el
comando traceroute 190.183.209.200
muestra las rutas
recorridas por un paquete hasta llegar al destino 190.183.209.200
,
permitiendo evaluar si el problema presentado se encuentra en la red
local o en la ruta hasta el destino.