2009-05-26

Redes desde consola

La intención de esta entrada es ayudar a los administradores a entender mejor los datos que salen por consola y las herramientas de las que se cuenta en Linux para el manejo de redes, obviamente me faltaran pero la intención es ayudarlos a tener una guia básica de como manejar las redes.

Empezaremos con entender la salida del comando principal ifconfig se encuentra usualmente en el directorio /sbin

[root@localhost ~]# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 00:00:00:FF:FF:FF
inet addr:172.17.1.8 Bcast:172.17.1.255 Mask:255.255.255.0
inet6 addr: fe80::210:18ff:fe1c:3c61/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:14588981 errors:319374 dropped:0 overruns:0 frame:162243

TX packets:12258931 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000 RX bytes:3241727361 (3.0 GiB) TX bytes:6441616508 (5.9 GiB)
Interrupt:209


Vamos dato por dato

Link encap : Te indica que tipo de conexión es, en este caso como en la mayoría será Ethernet, puede ser UNSPEC cuando la tarjeta es un tunel o tipo tun
HWAddr : Es la MAC del dispositivo
inet addr : Es la dirección IPv4 del dispositivo
Bcast : Es la dirección de broadcast del dispositivo
Mask : Es la mascara de red del dispositivo
inet6 addr : Es la dirección IPv6 del dispositivo, usualmente dada por defecto, el /64 es la indicación de la mascara de red, también usado en IPv4 lo explicare mas adelante
Scope : Es el alcance de la tarjeta o tipo de la misma, por ejemplo si es la de loopback el valor sera local, pero si es una ethernet el valor será Link o enlace.
UP : Implica que la interfaz esta disponible para ser usada por la capa 3
BROADCAST : Indica que permite escuchar peticiones de broadcast
RUNNING : Implica actividad de capa 3 en la tarjeta
MULTICAST : Indica que permite escuchar peticiones de multicast
MTU : Es la unidad máxima de transferencia medida en bytes por defecto es de 1500 para Ethernet pues es su tamaño máximo para este tipo de paquetes
Metric : Es la metrica de la red, se usa para cuando se requiere enrutar tráfico y se desea dar mayor prioridad a una ruta sobre la otra, a mayor numero menor importancia
RX packets : Es el numero de paquetes recibidos por la tarjeta, en esa misma linea se ve errors que son el numero de paquetes con errores recibido, después dropped que son la cantidad de paquetes rechazados, después overruns que son el numero de paquetes sobre dimensionados y por último frames el numero de tramas recibidas
TX packets : Es el numero de paquetes enviados por la tarjeta, en esa misma linea se ve errors que son el numero de paquetes enviados con errores, después dropped que son la cantidad de paquetes rechazados, después overruns que son el numero de paquetes sobre dimensionados y por último carrier.
Collisions : El numero de colisiones reportadas a la tarjeta, si aun tienes hub este valor es importanticimo para saber el numero de colisiones en tu red, y si ya tienes un switch entonces si el valor no es cero algo anda muy mal en tu red
txqueuelen : Indica el tamaño máximo de la cola de transmisión, es muy útil para evitar sobre cargas en dispositivos de alta latencia como modem o ISDN
RX bytes : numero de bytes recibidos
TX bytes : Numero de bytes transmitidos
Interrupt : Permite establecer la interrupción IRQ sobre la board de este dispositivo


Otro comando que nos permite conocer datos acerca de nuestra conexión es ip addr show, el cual usualmente se encuentra en el directorio /bin

[root@localhost ~]# ip addr show
3: eth1: link/ether 00:00:00:ff:ff:ff brd ff:ff:ff:ff:ff:ff mtu 1500 qdisc pfifo_fast qlen 1000
inet 172.17.1.8/24 brd 172.17.1.255 scope global eth1
inet 10.57.1.1/24 scope global eth1
inet6 fe80::210:18ff:fe1c:3c61/64 scope link
valid_lft forever preferred_lft forever


acá solo veremos un fragmento de la salida, al igual que el anterior no brinda datos de conexión y de direccionamiento, pero nos permite visualizar las IP virtuales asignadas a dicha tarjeta, que como se aprecia pueden pertenecer a otro segmento de red completamente diferente.

Ahora explicare un poco la simboligia de redes que se muchos no les gusta tanto y que no es muy entendible, la IP esta representada de la siguiente forma 10.57.1.1/24 este numero es realmente dirección_ip/mascara, el numero 24 indica la mascara de red, donde 24 es el numero de unos en notación binaria de dicha mascara así

Address: 10.57.1.1 00001010.00111001.00000001. 00000001
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000

entonces cuado vean ese numero, es realmente la mascara de red expresada en notación decimal si la desean llamar así.


COMANDOS DE ADMINISTRACIÓN

El primero que veremos es mii-tool, ubicado en el directorio /sbin, me lo enseño mi parcerita Sandra Mosquera, es super útil para determinar si la conexión física es o no buena y además para saber la velocidad de transmisión de las tarjetas

[root@localhost ~]# mii-tool
eth0: 100 Mbit, full duplex, link ok
eth1: negotiated 100baseTx-FD, link ok
eth2: link down


Como se puede ver acá la eth0 esta fija en 100Mb, la eth1 negocio su velocidad a 100Mb y la eth2 esta desconectada.

El siguiente comando te permite ver estadisticas detalladas de la tarjeta y además forzarla a una velocidad determinada, el comando es ethtool, ubicado en /sbin, se puede usar de las siguiente forma

Para sacar las estadisticas espeificas de una tarjeta
[root@localhost ~]# ethtool -S eth1

Para cambiarle la velocidad a un tarjeta forzandola a una especifica
[root@localhost ~]# ethtool -s eth1 speed 100 duplex full


El siguiente permite adicionar direcciones a determinada tarjeta, es otro uso de el anterior comando ip addr el cual se usa así

[root@localhost ~]# ip addr add ip_address/netmask dev etht1
se le pueden agregar mas datos como métrica pero como básico es ese.

MONITOREO

Para monitoreo siempre es bueno usar lo que mas datos te muestre así al principio estos para ti sean completamente ilogicos, pero poco a poco entenderás, el primer comando para mi es el tcpdump, esta ubicado en el directorio /usr/sbin/tcpdump y nos permite ver todo el tráfico en la red en su mas bajo nivel de capas de protocolo TCP/IP el comando por defecto se usa así

[root@localhost ~]#tcpdump -i eth1 -nnnn
13:04:06.366449 IP 74.125.115.191.80 > 192.168.5.214.37519: . ack 2836 win 709
13:04:06.366494 IP 192.168.5.214.37519 > 74.125.115.191.80: . 6932:8350(1418) ack 1 win 108
13:04:06.366502 IP 192.168.5.214.37519 > 74.125.115.191.80: . 8350:9768(1418) ack 1 win 108
13:04:06.394022 IP 74.125.115.191.80 > 192.168.5.214.37519: . ack 4096 win 754
13:04:06.394076 IP 192.168.5.214.37519 > 74.125.115.191.80: . 9768:11186(1418) ack 1 win 108
13:04:06.394084 IP 192.168.5.214.37519 > 74.125.115.191.80: . 11186:12604(1418) ack 1 win 108
13:04:06.520435 IP 74.125.115.191.80 > 192.168.5.214.37519: . ack 5514 win 798
13:04:06.520476 IP 192.168.5.214.37519 > 74.125.115.191.80: . 12604:14022(1418) ack 1 win 108
13:04:06.520485 IP 192.168.5.214.37519 > 74.125.115.191.80: . 14022:15440(1418) ack 1 win 108
13:04:06.537201 IP 74.125.115.191.80 > 192.168.5.214.37519: . ack 6932 win 842
13:04:06.537244 IP 192.168.5.214.37519 > 74.125.115.191.80: P 15440:16619(1179) ack 1 win 108
13:04:06.554165 IP 74.125.115.191.80 > 192.168.5.214.37519: . ack 8350 win 887


Esa es una pequeña muestra donde veras en orden

hora protocolo IP_origen.puerto > IP_destino.puerto estado dato_de_la_trama

Se que no es muy fácil pero aprendiendo a controlarlo es muy útil, de eso es muy extenso y muchos libros se han escrito solo de este pero es lo mejor que puedes usar.

El otro es iptraf, no vine por defecto y hay que instalarlo pero es una herramienta gráfica muy útil para ver el consumo en las tarjetas.