Comandos de red de Linux¶
Capa de enlace¶
Mostrar interfaces:
Activar/desactivar una interfaz:
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:
Mostrar velocidad de la interfaz:
Módulo del kernel que utiliza la interfaz:
Mostrar estadísticas, paquetes de error, colisiones:
Vlans¶
Añadir interfaz virtual con vlan etiquetada 101 a eth0:
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
Algunas opciones útiles:
-t para aumentar la duración de la prueba
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:
Puentes¶
Crear puente:
Asignar interfaces al puente:
Para mostrar interfaces miembros de un puente y tabla de puertos y dirección mac:
Capturar paquetes¶
tcpdump: herramienta clásica para hacer capturas
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)
Capa de Red¶
Mostrar dirección ip, comando corto de ip address show:
Mostrar estadísticas (tx,rx,error,dropped)
Dirección ip fija:¶
Eliminar todas las direcciones de una interfaz (flush):
Asociar una ip a una interfaz (no olvidar la máscara):
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:
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:
Para pedir una nueva ip en cualquier interfaz:
Y en una interfaz en concreto:
Si quieres ver más detalle de la concesión de ip:
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:
Borrar tabla de arp:
Añadir entrada arp permanente:
Ver sólo las entradas reachable:
Enrutamiento¶
Ver las rutas con ip route show:
Para eliminar todas las rutas "ip route flush":
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:
Añadir puerta de enlace por defecto:
Eliminar puerta de enlace por defecto:
Añadir ruta estática:
Activar bit de forwarding para que trabaje como router:
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:
Para resolver con servidores dns linux consulta el contenido del archivo /etc/resolv.conf
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:
Enmascaramiento de ips¶
Enmascarar todo el tráfico que sale hacia internet por eth0
Consultar iptables:
Pruebas de conectividad¶
Comprobar respuestas protocolo ARP:
Hacer ping indefinidamente (para terminar ctrl + C)
Limitar número de pings
fping: Hacer pings a varios equipos de una red:
nmap
Sondeo ping:
Sondeo de puerto 22Traceroute y geolocalizar ips¶
traceroute: Herramienta histórica para descubrir rutas
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:
Sondeo de un puerto concreto
Sondeo de rango de puertos
Sondeo de puertos aunque el ping no conteste, añadiendo la opción -PN
Sondeo de puerto UDP:
netstat¶
número de puertos tcp y udp escuchando con el programa asociado:
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: