Algunos comandos útiles con iproute2

04/04/2019Artículo original

El propósito de iproute2 es reemplazar el conjunto de herramientas que componen las net-tools y pasar a ser él quien se encargue de configurar las interfaces de red, la tabla de rutas y gestionar la tabla ARP.

Hace poco he escrito sobre el comando netstat. El artículo trataba de cómo es posible usar netstat para mostrar dintintos tipos de información sobre el estado de la red. Hoy voy a hablar de su sustituto ss, ya que netstat se dejó de desarrollar en 2001.

Para situarnos en contexto, netstat forma parte de las comúnmente llamadas net-tools o herramientas de red. Este conjunto de herramientas lo forman los comandos ifconfig, netstat y route. Dichas herramientas han quedado obsoletas en favor de iproute2 desde hace algunos años.

A día de hoy la mayoría de distribuciones traen iproute instalado por defecto.

Veamos algunos de los comandos más útiles que nos ofrece este relativamente “nuevo” conjunto de comandos:

Obtener información sobre TCP/UDP y Sockets

Aquí entra en acción el comando ss, sustituto de netstat. Este comando está incluido en el paquete iproute2.

La función de ss es mostrar estadísticas de los sockets, mostrar información similar a netstat. Además, revela más información sobre TCP que otras herramientas. Las opciones más usadas son:

-n, --numeric Do now try to resolve service names. -r, --resolve Try to resolve numeric address/ports. -a, --all Display all sockets. -l, --listening Display listening sockets. -o, --options Show timer information. -e, --extended Show detailed socket information -m, --memory Show socket memory usage. -p, --processes Show process using socket. -i, --info Show internal TCP information. -s, --summary Print summary statistics. This option does not parse socket lists obtaining summary from various sources. It is useful when amount of sockets is so huge that parsing /proc/net/tcp is painful.

Para ver la lista completa de opciones escribe ss –help.

  Ministry Of Economy And Also Money

Algunos ejemplos prácticos:

Mostrar todos los sockects a la escucha

$ ss -lState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0128 :::sunrpc :::*LISTEN 0128 *:sunrpc *:*LISTEN 020 ::1:smtp :::*LISTEN 020127.0.0.1:smtp *:*LISTEN 0128 *:17500 *:*LISTEN 0128 *:43076 *:*LISTEN 0128 :::50925 :::*

Para entender el significado de las columnas, puedes dirigirte al artículo de netstat.

Mostrar conexiones ssh establecidas

# ss -o state stablished '( dport = :ssh or sport = :ssh)'Recv-Q Send-Q Local Address:Port Peer Address:Port00192.168.1.36:60240 207.97.227.239:ssh

El parámetro -o permite establecer qué opciones mostrar, varios ejemplos son:

Mostrar conexiones SMTP establecidas

# ss -o state established '( dport = :smtp or sport = :smtp )'

Mostrar conexiones HTTP establecidas

# ss -o state established '( dport = :http or sport = :http )'

En los casos anteriores se ha filtrado únicamente los paquetes TCP con estado established. Para mostrar otros estados puedes escribir:

# ss -4 state NOMBRE-DEL-FILTRO

Donde -4 indica paquetes TCP IPv4 y NOMBRE-DEL-FILTRO puede tomar los siguientes valores:

  1. established
  2. syn-sent
  3. syn-recv
  4. fin-wait-1
  5. fin-wait-2
  6. time-wait
  7. closed
  8. close-wait
  9. last-ack
  10. listen
  11. closing
  12. all : Todos los estados de arriba
  13. connected : Todos los estados salvo listen y closed
  14. synchronized
  15. bucket : Mostrar estados mantenidos como minisockets, como time-wait and syn-recv.
  16. big : Lo contrario al estado bucket.

Por ejemplo:

# ss -4 state time-wait

Encontrar procesos locales conectados al servidor X (Servidor Gráfico)

# ss -x src /tmp/.X11-unix/*

Hacer coincidir direcciones remotas y puertos

ss dst ADDRESS_PATTERN## Mostrar todos los puertos conectados de forma remota desde 192.168.1.5##ss dst 192.168.1.5## Mostrar todos los puertos conectados de forma remota desde 192.168.1.5:http##ss dst 192.168.1.5:httpss dst 192.168.1.5:smtpss dst 192.168.1.5:443

Mostrar conexiones realizadas por una ip en el puerto http hacia nuestra máquina

ss dst 123.1.2.100:http

Es posible mostrar todas las conexiones realizadas por cualquier máquina, por el puerto http por ejemplo:

# ss dst *:http

Hacer coincidir direcciones locales y puertos

ss src ADDRESS_PATTERN# Encontrar todas las ips conectadas a elbauldelprogramador.com (5.39.89.44) ##### Mostrar todos los puertos conectados a la dirección local 5.39.89.44 ##ss src 5.39.89.44## http (80) port only ##ss src 5.39.89.44:httpss src 5.39.89.44:80## smtp (25) port only ##ss src 5.39.89.44:smtpss src 5.39.89.44:25

Mostrar el número y el tipo de conexiones activas

ss -ant | awk '{print $NF}'| grep -v '[a-z]'| sort | uniq -c

Mostrar un resumen del estado de los sockets

# ss -s

Listar todos los puertos a la escucha junto con el PID del programa

ss -tlnp

Configuración de la interfaz de red

Antiguamente se usaba el comando ifconfig:

# ifconfig eth0 up# ifconfig eth0 192.168.1.1 netmask 255.255.255.0

En iproute2 la configuración de interfaces de red se lleva a cabo con el subcomando link:

  Configurar Eclipse/Java para programadores de Visual Studio/C#

Activar interfaz

# ip link set eth0 up

Donde eth0 debe ser la interfaz de red a activar.

Establecer dirección ip a la interfaz

# ip addr add 192.168.1.33/24 dev eth0

Para comprobar la correcta configuración de la interfaz, muestra la información de dicha interfaz:

# ip addr ls# ip addr show# ip addr ls eth0

Enrutamiento

La versión moderna del comando route -n o netstat -r es:

# ip ro

Para añádir o eliminar reglas de enrutamiento se usa ip ro add|del destino via gateway. Para añadir una nueva ruta a 10.0.0.0/16:

# ip ro add 10.0.0.0/16 via 192.168.0.1# ip ro del 10.0.0.0/16 via 192.168.0.1

Encontrar la ruta hacia una dirección IP

Para averiguar qué interfaz está usando tu pc, puedes usar el comando ip route get IP. Así:

# ip route get 5.39.89.445.39.89.44 via 10.61.29.89 dev eth1 src 192.168.1.36

está usando la interfaz eth1, gateway 10.61.29.89 y la interfaz tiene la ip privada 192.168.1.36

  Cómo es el proceso de extraer conocimiento a partir de bases de datos

Conclusión

Aunque este artículo ha sido una remezcla de comandos, espero que haya quedado claro para qué sirve cada uno, y a partir de ahora podrás sacarle partido.

Referencias

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad