Comándos básicos de redes (Linux)

El objetivo de este artículo es hacer una introducción a aquellos que deseen o necesiten conocer los comandos básicos utilizados en la administración de redes.

Básicos significan que no se listan aquellos que permiten hacer cosas más avanzadas (como el comando ip).

Prerequisitos (recomendados) (en orden)

  1. Conocimiento básico sobre hardware de redes.
    1. Saber lo que es una tarjeta de red, un enrutador, un cortafuegos (informática), etc.
    2. Saber que una interfaz de red es algo por cual podemos enviar y recibir paquetes.
  2. Conocimiento básico sobre el funcionamiento de sistemas POSIX.
    1. Saber usar comandos como el cd, ls, mv, rm, tail, grep, su, …
    2. Saber editar archivos con algún editor de textos decente como el vim o el emacs.
    3. Tener una idea básica del significado de cada carpeta /etc.
    4. y tener también un poco de práctica (con un poco alcanza).
  3. Acceso como root a un sistema GNU/Linux.
  4. Conocimiento medio sobre el modelo OSI y sobre direccionamiento.

Conociendo al sistema (ifconfig)

Antes que nada es de radical importancia conocer que interfaces de red (desde ahora llamadas simplemente interfaces) tiene el sistema, que direcciones tiene asignadas, etc. Para esto usamos como root el comando:

ifconfig

El cual debería mostrar algo similar a:

eth0      Link encap:Ethernet  HWaddr 00:16:D4:04:17:88
          inet addr:192.168.0.30  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:29491 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17177 errors:0 dropped:0 overruns:0 carrier:0
          collisions:7 txqueuelen:1000
          RX bytes:13309890 (12.6 MiB)  TX bytes:2084854 (1.9 MiB)
          Interrupt:10

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8634 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8634 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3410942 (3.2 MiB)  TX bytes:3410942 (3.2 MiB)

ppp0      Link encap:Point-to-Point Protocol
          inet addr:10.12.84.165  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:7402 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8450 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:6014637 (5.7 MiB)  TX bytes:1545904 (1.4 MiB)

Cada interfaz tiene un nombre, en este ejemplo se listan las interfaces llamadas eth0, lo y ppp0. En realidad este sistema tiene más interfaces que no están listadas, por ejemplo wlan0 que representa a la conexión inalámbrica, o eth1 que representa la interfaz firewire.

Cada interfaz tiene un posible estado, o está levantada o está dada de baja. Sólo las interfaces levantadas se muestran al correr ifconfig (sin parámetros adicionales). Para listar todas las interfaces detectadas en el sistema se puede usar:

 ifconfig -a

La primer prueba (ping)

El comando ping es uno de los más importantes, porque permite determinar si es posible comunicarse con una máquina en la red. Se usa de la siguiente manera:

ping máquina

en donde máquina es el nombre o la dirección de la máquina con la cual queremos saber si es posible comunicarnos.

La forma usada por ping para determinar esto es enviar un paquete de datos en un protocolo con nombre poco conocido (ICMP) adentro de un paquete IP. Al llegar el paquete a destino, se le envía al remitente otro paquete también ICMP respondiendo que el paquete llegó.

Este comando también nos indica cuanto tiempo tardó el paquete a la ida y a la vuelta.

Se le llama vulgarmente pinguear a la acción de hacer ping. Y poder pinguear al hecho de que se logre satisfactoriamente enviar y recibir los paquetes del ping a/desde una determinada máquina.

El hecho de que en un determinado caso no se pueda pinguear, no implica que no se pueda establecer una comunicación, ni tampoco que no se puedan establecer conexiones entre las dos máquinas. De hecho muchos firewalls bloquean los mensajes ICMP, especialmente aquellos de las personas más paranoicas.

Por donde viajan los paquetes (route y traceroute)

Cuando establecemos una conexión o simplemente enviamos un paquete de datos por la red, éste deberá seguir un camino. Para tener una idea de que camino están siguiendo los paquetes podemos usar el comando traceroute. Es importante saber que este comando al igual que con muchas cosas en las redes, no es infalible.

Una forma sencilla de utilizarlo es correr:

traceroute máquina

donde máquina es el nombre o la dirección de la máquina a la cual queremos saber que camino se toma.

El funcionamiento interno de esta herramienta es muy interesante, y se basa en el uso del campo ttl (vencimiento del paquete) y de la suposición de que los "gateways" que hay en el camino le indican cuando se "vence" el paquete. Por suerte no es necesario entender el funcionamiento interno de la herramienta para hacer un uso básico, sin embargo puede resultar muy útil para diagnosticar fallos si se conoce en profundidad.

En cada línea traceroute muestra un salto. Se les llaman saltos (o hops en inglés) a cada "viaje" que da un paquete entre dos computadoras enlazadas directamente. Por ejemplo si la máquina A está conectada al router B por un cable y el router B está conectado a la máquina C inalámbricamente, entonces es necesario que los paquetes viajen dos veces para que puedan llegar de A a C y viceversa, o sea un viaje de A a B y otro viaje de A a C.

El antes mencionado campo ttl es un número que va metido en cada paquete IP, y que indica cuantos viajes puede hacer un paquete. Cada vez que el paquete viaja, se le resta 1 al ttl. Si el paquete tiene ttl⇐0 no podrá seguir viajando y deberá ser desechado (o sea tirado a un agujero negro). Por lo tanto si el paquete llega a destino este va a llegar con ttl>=0. Esta es una forma sencilla de controlar que los paquetes no viajen indefinidamente. En el caso de que un paquete no haya llegado a destino y tenga ttl⇐0 además de ser desechado el paquete, se deberá enviar un mensaje al remitente del paquete diciendo que el paquete en cuestión se quedó sin poder seguir viajando y que no pudo llegar a su destino, estos mensajes en cuestión son los que permiten al traceroute mostrar cada una de las líneas.

Por diversos motivos el traceroute puede mostrar cosas realmente extrañas, así que no habría que alarmarse (ni extrañarse) al ver algo raro…

(netcat)

(telnet)

(ssh y scp)

(wget)

(ftp)

(bash, perl, tcl, ruby, python, php, etc..., scripts)

(iptables)

Este artículo está en plena construcción;
espero en un par de días poder terminarlo.
 
manuales/soft/comandos_basicos_de_redes_linux.txt · Última modificación: 2006/12/26 16:19 (editor externo)
 
Recent changes RSS feed Creative Commons License Powered by PHP Driven by DokuWiki