Net Tools vs IPRoute2 – Parte I

 

Linux es una excelente plataforma para experimentar  y trabajar sobre networking. Las herramientas más básicas han sido heredadas de Unix (ifconfig,netstat,arp.. etc) y a decir verdad, estamos bastante cómodos con ellas. Sin embargo, hace años que el desarrollo de linux ha creado nuevas herramientas, mas poderosas aunque no tan populares; Como sabrán, me refiero, al set de herramientas iproute2.

La pregunta es: ¿Vale la pena el esfuerzo de cambiar a iproute2?

Veremos en los siguientes posts, ventajas y desventajas, uso y desusos…

Net Tools

Net Tools, también llamado mas precisamente NET-3 Networking toolkit, es un set de herramientas heredado históricamente de Unix.
Estas son: arp, hostname, ifconfig, netstat, rarp, route, plipconfig, slattach, mii-tool,  iptunnel  y ipmaddr.
A que algunas te han sorprendido eh!?
Hagamos un apropos:

arp (8): manipulate the system ARP cache
hostname (1): show or set the system's host name
ifconfig (8): configure a network interface
netstat (8):  Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships
rarp (8): manipulate the system RARP table
route (8): show / manipulate the IP routing table
plipconfig (8): fine tune PLIP device parameters
slattach (8): attach a network interface to a serial line
mii-tool (8): view, manipulate media-independent interface status
iptunnel (8): creates, deletes, and displays configured tunnels
ipmaddr (8): adds, deletes, and displays multicast addresses

Ahora bien, si utilizas linux dia a dia, muy difícilmente no conozcas arp, netstat, ifconfig, hostname y route, si no conoces algunos de esos comandos, este artículo no es para vos; Sin embargo, el resto de los comandos se utilizan en situaciones mas especificas.
Convenimos pues, en que la costumbre y la simplicidad histórica de estos comandos nos gustan.
Sin embargo, veamos ahora, como una comparación con IPRoute2 nos da una mejor idea de las diferencias que hay entre ambos.

IPRoute 2

El protagonista de iproute2 es el comando ip, en el cual se resumen la mayoría de las tareas que solíamos hacer con net-tools.
Aquí tenemos una pequeña tabla de referencia:

ifconfig ip addr show
arp ip neigh show
route -n ip route show

Hay mas, pero esto sirve para que veas que el comando ip se robará el protagonismo. Desde el comando ip podremos configurar prácticamente todo lo relacionado con las redes en linux.

Veamos como usar iproute en el día a día y dejaremos para mas adelante, las opciones mas avanzadas:

Rutas

Listar rutas:

Con net-tools usabamos:

route -n

Ahora con ip route podemos usar:
ip route | ip route ls | ip route show
Cualquiera de estos tres comandos nos da como resultado algo como lo siguiente:

default via 192.168.1.1 dev eth0 proto static
10.42.0.0/24 dev wlan0 proto kernel scope link src 10.42.0.1 metric 9
148.91.164.0/24 dev eth0 proto kernel scope link src 148.91.164.131 metric 1
169.254.0.0/16 dev eth0 scope link metric 1000

Mas adelante veremos como hacer un filtrado por tipo de ruta y otras caracteristicas, pero sigamos por lo básico.

Agregar una ruta:

Con net-tools usabamos:

route add -host ip ip-gw
route add -net netip-gw

Ahora utilizamos:

ip route add ip/net via ip-gw

Por ejemplo:

ip route add 10.1.1.0/24 via 192.168.4.1

o bien:

ip route add 10.1.1.20 via 192.168.4.1

Como verán, es indistinto si es un host o una red. Nos es muy diferente en principio, pero mas adelante veremos cuantas otras opciones tenemos para agregar.

Quitar una ruta:

Con net-tools usabamos:

route del -host ip gw ip_dw
route del -net net gw ip_gw

Ahora utilizamos:

ip route del ip via ip_gw
ip route del net via ip_gw

Direcciones IP

Es dificil pensar en no usar el ‘ifconfig’, pero hagamos un intento y veamos que sale:

Listar interfaces

Con net-tools usabamos
ifconfig | ifconfig -a

Con iproute utilizamos

ip addr | ip addr list | ip addr show

Que nos devolverá un output como el siguiente:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 63:34:55:66:11:3a brd ff:ff:ff:ff:ff:ff
inet 123.41.14.135/24</strong> brd 123.41.14.255 scope global eth0
inet6 fe80::6531:50ff:fe68:1d34/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: &lt;BROADCAST,MULTICAST&gt; mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:26:82:dc:9d:51 brd ff:ff:ff:ff:ff:ff

En principio, el output de ip addr tiene mas info del que acostumbramos con ifconfig, pero nada de que preocuparse. Verán señalado en el output anterior, alguna data interesante señalada.

Asignar direcciones:

Con net-tools usabamos ifconfig de la siguiente manera para asignar una dirección IP:

ifconfig eth0 ip netmask netmask

Con iproute usaremos:

ip addr add ip/prefix dev eth0

Y para eleminar una ip de manera similar:

ip addr del ip/prefix dev eth0

Primeras conclusiones

Si bien iproute no parece incrementar la dificultad de configurar básicamente nuestras redes, no deja de ser cierto que la costumbre tira para seguir usando el viejo set de utilidades unix-like, sin embargo, en los próximos posts veremos usos mas avanzados y útiles que haran inclinar la balanza.

~have fun

EFI Devices Mapping

Esta es una pequeña explicación de la nomenclatura utilizada por intel en la EFI Shell.

Un ejemplo, es cuando utilizamos el comando map, una de las entradas se vería algo así:

fs0 : Acpi(HWP0002,100)/Pci(1|0)/Scsi(Pun0,Lun0)/HD(Part1,Sig8E89981A-0B97-11D7-9C4C-AF87605217DA)

Explicación:

Acpi(HWP0002,100):

  • Tipo de dispositivo HWP0002 (= Logical Block Address (LBA) device)
  • PCI número de host 100 (“ROPE“ = circuitry handling I/O for PCI; defines I/O card slot)

Pci(1|0):

  • device/slot número 1
  • función numero 0

Scsi(Pun0,Lun0):

  • Pun: Physical Unit (SCSI address)
  • Lun: Logical Unit

HD(PartX,SigY):

  • Partición X
  • Disco con código Y

PCs y Servidores

Esta vez escribiré un post que quizás se aleja de lo normal para este blog, pero soy consciente de que la comunidad linux esta lleno de usuarios desktops que aún tienen algunos conceptos no muy claros o completamente equivocados.
Al abundar manuales y tutoriales sobre como convertir ‘tu pc en un servidor’ instalando un linux y algún paquete, quizás algunos han llegado a creer que los servidores que alojan los millones de teras de la web son simples PCs. Por otro lado hay quienes quizás sepan que no es así, pero no han tenido el privilegio de conocer las características de los servidores.
Permitan me hacer esta vez, una pequeña descripción de las diferencias entre servidores y PCs.

PCs = Servidores

Voy a comenzar contradiciendo me. Cualquier PC con el software adecuado, configurado y corriendo, puede ser un servidor, ya que en si, un servidor es un nodo de la red que provee un servicio. Existen muchísimos servicios posibles, DNS, DHCP, NFS, CIFS, HTTP, FTP, etc. Pero no es a esta acepción de la palabra servidor a la que me refiero. En este caso utilizo la palabra servidor como sustantivo y no como característica.Entonces, cuando digo servidor, en este post, voy a referirme a ciertas maquinas que estan especialmente diseñadas para dar servicio continuamente evitando cualquier tipo de interrupción. Aquí esta el meollo de la cuestión.

Servidores

Como acabo de decir, los servidores son computadoras diseñadas para funcionar ininterrumpidamente durante años, un lustro,  décadas o más.

  • Componentes electronicos:
    La primer característica que diferencia de las PCs, son sus componentes electronicos. Los servidores utilizan la mejor calidad de componentes para evitar cualquier avería, ya sea por desgaste o por temperatura o hasta incluso por mal uso.
  • Memorias:
    Las memorias utilizadas por los servidores suelen ir un paso adelante de lo que existe en el mercado hogareño. Además de ser mas veloces, tienen un sistema de control de errores. Estas memorias llamdas ECC (Error correction code) poseen mecanismos que detectan errores de transmisión y pueden corregirlos gracias a ‘métodos binarios’.
    Por si esto fuera poco, algunos servidores pueden alcanzar varios gigas de memoria (32,64,128, 512 o 1024 GBs). Valores que por el momento estan lejos de las PCs.
  • Procesadores:
    No todo es i386. Muchos servidores utilizan otro tipos de procesadores que no son del tipo intel 386 (aclaro todos los procesadores de PCs tienen una arquitectura muy similar (un poco mejorada) al viejo 386 y sus seguidores – Incluso los AMD). Un ejemplo de procesadores no-386 son los POWER PC, PA-RISC, SPARC. Estas arquitecturas diferentes a 386 implican que necesitan software compilado explicita-mente para esa arquitectura.
    Por otro lado, los servidores no solo utilizan multiples cores desde hace rato, si no que ademas, tienen múltiples procesadores. Algunos servidores tienen cientos de procesadores con sus respectivos múltiples cores por procesador.
  • Hot Swap:
    Para evitar la interrupción del funcionamiento de un servidor, estos suelen tener redundancia de todo tipo, permitiendo que los procesadores, fuentes, discos, coolers e incluso algunas placas, puedan ser removidas o insertadas en el servidor sin la necesidad de apagar el servidor y sin peligro de quemarse. Ejemplos:
    – Redundancia de Fuentes: Un servidor puede tener varias fuentes, en caso de que una se queme, el servidor sigue andando con las que le quedan y la dañada puede ser retirada sin necesidad de apagar el servidor.
    – Redundancia de discos: Los servidores soportan una capacidad muy grande de discos, y estos al igual que las fuentes, suelen tener la capacidad de ser retirados o insertados sin peligro de quemarse.
  • Consolas:
    Las consolas son un sistema embebido en el servidor que funciona independientemente del sistema operativo. De esta manera, el servidor puede ser prendido, apagado o configurado sin necesidad de estar en el datacenter. Además desde la consola podemos acceder a la interface de usuario del  sistema operativo, ya sea gráfico o en linea de comandos. Estas consolas tienen muchísimas funcionalidades mas, pero esta fuera de este primer vistazo.

Estas son algunas de las principales y mas notorias diferencias entre los servidores y las PCs. Existen mas, pero escapa a la intención de este post.

Ejemplos
Para visualizar un poco mas, quiero dar algunos ejemplos de servidores:
HP Proliant DL380 G8
Este es un HP Proliant DL 380 G8. Es un servidor bastante chico en comparación con otros. Y fijensé sus características:
Hasta 2 procesadores, total de 16 cores
24 slots de memoria ram, soportando hasta 384 GB a 1333 Mhz
Hasta 12 discos, con una capacidad máxima de 4,8 Teras.
Haz click aquí para mas info sobre este server.
ibm-power770

Este servido es mas grande, es de marca IBM, y en realidad, son 4 servidores. Pero pueden configurarse para funcionar como uno solo.
En total, soporta hasta:
48 procesadores de 4,2 Ghz, arquitectura POWER7
4 Teras de memoria RAM ECC, a 1066 Mghz
24 Discos hot swap.

Como podrán ver, esto escapa a la realidad de las PCs.

Vendedores:
Existen  varias empresas que venden servidores, aquí mostre servidores HP e IBM, sin embargo Oracle, al comprar SUN se hizo con su gama de servidores con procesadores SPARC. Por otro lado existen otras marcas no tan conocidas, pero dignas de ser investigadas y probadas, por ejemplo la marca Mountain de españa, o SuperMicro. No tengo experiencia con estas marcas, pero investigando un poco, de gana de probar y comparar.

Para finalizar les dejo como ejemplos el portfolio de los servidores HP e IBM en los siguientes documentos:
Servidores HP: 4AA0-8758ENW
Servidores IBM Power 7: ibm_power7_systems_express_blades_quick_reference_guide

Hasta aquí, comparto lo que conozco por experiencia, si detectas errores, por favor comentarlos, estamos para aprender unos de otros!

 

~ have fun