Saltar a contenido

Comandos de red de Linux

Capa de enlace

Mostrar interfaces:

ip link show

Activar/desactivar una interfaz:

ip link set eth0 down
ip link set eth0 up

Cambiar nombre o dirección a la interfaz manualmente:

ip link set eth0 down
ip link set eth0 address 00:11:22:33:44:55
ip link set eth0 name lan
ip link set eth0 up

Mostrar opciones físicas de la interfaz:

ethtool eth0

Mostrar velocidad de la interfaz:

ethtool eth0 |grep Speed

Módulo del kernel que utiliza la interfaz:

ethtool -i eth0

Mostrar estadísticas, paquetes de error, colisiones:

ethtool -S eth0

Vlans

Añadir interfaz virtual con vlan etiquetada 101 a eth0:

ip link add link eth0 name vlan101 type vlan id 101
ip link set vlan101 up

Bonding

ip link set eth1 down
ip link set eth2 down

modprobe -r bonding
modprobe bonding mode=4

# xmit_hash_policy por defecto es 0 (hash con dirección mac)
# modprobe bonding mode=4 xmit_hash_policy=2

ip link set eth1 master bond0
ip link set eth2 master bond0

ip link set eth1 up 
ip link set eth2 up

ip link set bond0 up

cat /proc/net/bonding/bond0

Probar velocidad de red con iperf

La herramienta tradicional es iperf, con velocidades superiores a 1Gbps la nueva herramienta con más opciones iperf3 es mejor

#Servidor
iperf -s 
#Cliente
iperf -c IP_SERVIDOR

Algunas opciones útiles:

#Servidor
iperf -s -i 2 -p 5002
#Cliente
iperf -p 5002 -c IP_SERVIDOR

-t para aumentar la duración de la prueba

#Servidor
iperf -s -i 2
#Cliente
iperf -t 30 -c IP_SERVIDOR

Probar velocidad de red con netperf

Prueba realista con tcp en ambas direcciones de rendimiento.

  • https://github.com/HewlettPackard/netperf

Iniciar netserver en un host y ejecutar script en el cliente:

vi netperf-test.sh

 for i in 1
     do
      netperf -H 10.1.2.102 -t TCP_STREAM -B "outbound" -i 10 -P 0 -v 0 \
        -- -s 256K -S 256K &
      netperf -H 10.1.2.102 -t TCP_MAERTS -B "inbound"  -i 10 -P 0 -v 0 \
        -- -s 256K -S 256K &
     done

Se ejecutará en segundo plano y mostrará los resultados en la consola cuando termine.

Puedes comprobar el rendimiento de red en tiempo real durante la prueba utilizando iftop:

iftop -i eth0

Puentes

Crear puente:

brctl addif br0 usb0

Asignar interfaces al puente:

brctl addif br0 eth0
brctl addif br0 usb0
brctl addif br0 usb1
brctl delif br0 usb1

Para mostrar interfaces miembros de un puente y tabla de puertos y dirección mac:

brctl show
brctl show br0
brctl showmacs br0

Capturar paquetes

tcpdump: herramienta clásica para hacer capturas

tcpdump -w 08232010.pcap -i eth0

tshark: wireshark en línea de comandos, filtros de captura en [https://wiki.wireshark.org/CaptureFilters]

  • [ -i ] Interfaz de entrada
  • [ -w ] Archivo de salida
  • [ -r ] Leer opciones del archivo
  • [ -c ] limitar paquetes capturados
  • [ -a duration:X] segundos cuando parar captura
  • [ -Y ] Filtros de Wireshark

Ejemplos:

tshark -i enp3s0 -w /tmp/out.pcap -c 10
tshark -i enp3s0 -w /tmp/out.pcap -a duration:4
tshark -r /tmp/out.pcap -w /tmp/web.pcap -Y "http"

tshark -i enp3s0 -w /tmp/ping.pcap "host 8.8.8.8"
tshark -i enp3s0 -w /tmp/web.pcap "port 80"

Para mostrar en pantalla los paquetes con versión extendida (-x)

tshark -r /tmp/web.pcap
tshark -r /tmp/web.pcap -x 
tshark -r /tmp/web.pcap -x -Y "frame.number==10"

Capa de Red

Mostrar dirección ip, comando corto de ip address show:

ip a

Mostrar estadísticas (tx,rx,error,dropped)

ip -statistics a

Dirección ip fija:

Eliminar todas las direcciones de una interfaz (flush):

ip a f dev eth0

Asociar una ip a una interfaz (no olvidar la máscara):

ip a a 192.168.100.10/24 dev eth0

Se pueden asociar más de una ip a una interfaz y eliminar una en concreto:

ip a a 192.168.100.10/24 dev eth0
ip a a 192.168.200.11/27 dev eth0

ip a d 192.168.200.11/27 dev eth0

Ips dinámicas:

Liberar la ip actual:

dhclient -r

Esto debería haber liberado la ip actual y el demonio debería haber finalizado. En caso de que no podamos pedir una nueva ip no nos queda otra más que matar ese proceso con:

killall dhclient

Para pedir una nueva ip en cualquier interfaz:

dhclient

Y en una interfaz en concreto:

dhclient eth0

Si quieres ver más detalle de la concesión de ip:

dhclient -v eth0
dhclient -v -lf /tmp/eth0.lease
cat /tmp/eth0.lease

Tabla ARP

La orden tradicional arp ha quedado centralizada en la utilidad ip con la opción ip neigh

Para ver la tabla de arp actual:

ip neigh

Borrar tabla de arp:

ip neigh flush all

Añadir entrada arp permanente:

ip neigh add 192.168.100.1 lladdr 00:11:22:33:44:55 dev enp3s0

Ver sólo las entradas reachable:

ip neigh show nud reachable

Enrutamiento

Ver las rutas con ip route show:

ip r 

Para eliminar todas las rutas "ip route flush":

ip r f all

Al añadir una dirección ip a una interfaz, se añade una ruta directa que informa que para ir a la red de esa dirección ip se va directamente a través de la interfaz sin necesidad de pasar por ningún router:

$ ip r f all
$ ip a a 172.16.0.10/16 dev eth0
$ ip r s 
172.16.0.10/16  dev eth0 [...]

Añadir puerta de enlace por defecto:

ip r a default via 192.168.1.1

Eliminar puerta de enlace por defecto:

ip r d default

Añadir ruta estática:

ip r a 192.168.200.0/24 via 192.168.100.1

Activar bit de forwarding para que trabaje como router:

echo 1 > /proc/sys/net/ipv4/ip_forward

Resolución de nombres DNS

Se consulta la resolución en el archivo /etc/hosts, que contiene una línea para el nombre localhost, se pueden añadir líneas para resolver nombres sin utilizar un servidor dns:

$ cat /etc/hosts
127.0.0.1       localhost.localdomain localhost

Para resolver con servidores dns linux consulta el contenido del archivo /etc/resolv.conf

$ cat /etc/resolv.conf 
[...]
nameserver 192.168.1.1

Se consulta la línea que empieza con nameserver seguida de la ip del servidor dns que queremos usar. Si al renovar la ip dinámica el servidor dhcp ofrece un servidor dns se sobreescribe este archivo

Para forzar la resolución de nombres a través de un servidor dns de forma manual:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Enmascaramiento de ips

Enmascarar todo el tráfico que sale hacia internet por eth0

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Consultar iptables:

iptables-save
iptables -t filter -L
iptables -t nat -L

Pruebas de conectividad

Comprobar respuestas protocolo ARP:

arping 192.168.100.1

Hacer ping indefinidamente (para terminar ctrl + C)

ping 8.8.8.8

Limitar número de pings

ping -c 2 8.8.8.8

fping: Hacer pings a varios equipos de una red:

fping -g 192.168.100.100 192.168.100.110 -a -q
fping -g 192.168.100.0/24 -a -q

nmap

Sondeo ping:

nmap -sP 192.168.100.0/24
Sondeo de puerto 22

Traceroute y geolocalizar ips

traceroute: Herramienta histórica para descubrir rutas

traceroute 8.8.8.8

mtr: Si quieres más información, estadísticas y detalle de geolocalización de ips

dnf -y install mtr GeoIP GeoIP-GeoLite-data GeoIP-GeoLite-data-extra
mtr -n --report www.gencat.cat
geoiplookup 72.52.92.222

Capa de transporte

nmap y sondeo de puertos

Sondeo de puertos TCP típicos:

nmap -sS 192.168.100.1

Sondeo de un puerto concreto

nmap -sS -p 80 192.168.100.1

Sondeo de rango de puertos

nmap -sS -p 8080-8090 192.168.100.1

Sondeo de puertos aunque el ping no conteste, añadiendo la opción -PN

nmap -sS -PN -p 80 192.168.100.1

Sondeo de puerto UDP:

nmap -sU -p 53 192.168.100.1

netstat

número de puertos tcp y udp escuchando con el programa asociado:

netstat -utlnp

Las opciones se pueden combinar sin importar el orden en que van las letras, las típicas de netstat son: * -u => puertos udp * -t => puertos tcp * -p => programa que está usando esa conexión y pid (sólo lo puedes ver si eres root) * -n => muestra el número de puerto * -a => todas las conexiones * -l => puertos en escucha

Todas las conexiones tcp:

netstat -tanp 

probar puertos con netcat