Las redes nos permiten interconectar dispositivos como diferentes ordenadores, impresoras, servidores y otras máquinas para que se comuniquen entre sí. De este modo podemos compartir información y funcionalidades.
A cada dispositivo conectado a una red lo conocemos como nodo. Las redes pueden ser locales o no, destacando Internet (La “red de redes”) por interconectar diferentes redes entre sí.
Las direcciones IP
Como vimos en nuestro curso de introducción al desarrollo web, cada nodo de una red debe estar identificado por una dirección única. A esta dirección la conocemos como IP (Internet Protocol), y permite el enrutado de los paquetes de información que viajan por la red.
Las comunicaciones en la red se realizan por medio del envío y recepción de paquetes, que contienen cabeceras con metainformación y buffers de datos. Gracias a estas cabeceras, cuando toda la información haya llegado a su destino, se podrá cerrar el canal de comunicación, recomponiendo el mensaje original.
En la actualidad conviven dos tipos de direcciones IP:
- IPv4 es la versión 4, más antigua pero también más utilizada. Emplea direcciones de 32 bits, lo que permite que existan 4.3 billones de direcciones diferentes. Existen técnicas como NAT (Network Address Translation) que permiten conectar más dispositivos, al ofrecer una única dirección pública y diferentes direcciones locales.
- IPv6 es la versión 6 y utiliza 128 bits, habilitando 3.4 x 1038 direcciones diferentes. La interoperabilidad con IPv4 no está garantizada, pero este sistema es más capaz para redes con gran número de dispositivos, como las requeridas por sistemas que implementen IoT.
IPv4
Las direcciones IPv4 se componen por 4 secciones de 8 bits (octetos):
127.0.0.1
De estos octetos, cuyos valores oscilan entre 0 y 255, se utiliza parte para identificar la red y parte para identificar el host dentro de la red. Así, tenemos tres clases de direcciones (más la D y la E, para usos especiales):
- Clase A: dedica un octeto a identificar la red y 3 a identificar el host dentro de la red. Como el primer bit de su primer octeto tiene que ser 0, solo existen 126 redes de clase A.
- Clase B: dedica dos octetos a cada finalidad. Los dos primeros bits del primer octeto siempre son 10, pro lo que hay un máximo de 16.384 redes de clase B.
- Clase C: dedica tres octetos a identificar la red y solo uno a identificar el host. En este caso se reserva el valor 110 para los 3 primeros bits del primer octeto, ofreciendo 2.1 millones de redes clase C en total.
¿Cómo se asigna una IP?
El ISP (Internet Service Provider) es el agente encargado de ofrecer un rango de direcciones IP a la organización. Dentro de la organización (o de la red doméstica) se puede asignar direcciones a cada dispositivo de forma manual (mediante una IP estática) o de forma dinámica (DHCP o Dynamic Host Configuration Protocol).
Archivos de interés
A la hora de trabajar con redes te puede interesar conocer los siguientes archivos:
- /etc/resolv.conf - contiene el nameserver y opciones.
- /etc/hosts - se consulta antes del DNS para enrutar nombres de dominio a IPs
Cómo configurar redes en Linux
Los archivos de configuración de redes en Linux se encuentran en el directorio /etc. En Debian los encontraremos bajo /etc/network, mientras que en RH y SUSE estarán en /etc/sysconfig/network. También tenemos disponibles comandos de gestión de redes como nmtui o nmcli. Sin embargo, suele ser más cómodo trabajar con la GUI.
Estas utilidades nos permiten gestionar las interfaces de red, que son el canal de comunicación que une un dispositivo a una red. Cada dispositivo puede tener más de una interfaz, y estas pueden activarse o desactivarse.
- Disponemos de otras utilidades como ip (ip addr show o ip route show) o ifconfig si queremos gestionar nuestras redes desde la CLI.
- También puede ser útil el comando route, que nos permite gestionar las rutas de nuestros hosts o redes.
- El comando traceroute nos puede ayudar a determinar los saltos que está realizando una llamada antes de llegar a su destino.
- Otras utilidades de interés pueden ser ethtool, netstat, nmap, tcpdump, iptraf, mtr o dig.
Navegadores no-GUI
A la hora de navegar en Internet todos hemos utilizado alguno de los navegadores populares. Pero también podemos encontrarnos con la necesidad de navegar sin tener acceso a estas herramientas.
Para ello podemos utilizar:
- Navegadores no gráficos, como lynx, elinks o w3m.
- wget, si queremos descargar archivos.
- curl si necesitamos hacer una llamada HTTP.
Transferencia de archivos
Cuando queremos hacer transferencias de archivos entre diversos dispositivos utilizamos el protocolo FTP (File Transfer Protocol). Este protocolo presenta ciertas inseguridades, ya que data de los años 70, pero sigue en uso. Pese a ello, conviene la utilización de sistemas que encripten credenciales, como SFTP.
El FTP conecta a un servidor (quien tiene o recibe el archivo) con un cliente (quien lo envía o solicita). Existen clientes FTP tanto de GUI como de CLI, destacando en este último sentido ftp, sftp, ncftp o yafc.
Otro sistema seguro para transferir archivos es SCP (Secuer Copy Protocol), que se basa en la autenticación vía SSH, de la que hablaremos a continuación.
Ejecución remota de comandos
Otra opción útil al conectarnos a una red es la posibilidad de conectarnos vía SSH a otro dispositivo para utilizar sus sistemas de administración. El comando ssh nos permite establecer este tipo de conexiones.
Resumen
- Linux nos permite interconectar dispositivos en redes locales o remotas.
- Podemos comunicarnos entre dispositivos utilizando los protocolos habituales (HTTP, HTTPS, FTP, SFTP, SCP, SSH…).
Comandos y shortcuts
- hostname - devuelve el nombre del host en el que nos encontramos. También puede manipularlo utilizando opciones.
- ping - manda una señal a un host para ver si responde. Ofrece información sobre el tiempo que tardan en transmitirse los paquetes y el ratio de pérdidas.
- nslookup - ofrece información sobre un nameserver.
- nmcli - accede a la utilidad network manager mediante la CLI.
- mntui - se trata de otro network manager.
- dig +short myip.opendns.com @resolver1.opendns.com - muestra mi IP pública.
- route - gestiona las rutas de la red.
- traceroute - muestra los saltos entre rutas que realiza una llamada.
- w3m - navegador no-gráfico.
- wget - descarga páginas web y archivos.
- curl - realiza llamadas HTTP