Table of Contents
Guía rápida del comando ip (iproute2), el sucesor de ifconfig (net-tools)
Mostrar los dispositivos de red y su configuración.
Configuración IP detallada.
ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 44:8b:4b:24:c0:29 brd ff:ff:ff:ff:ff:ff inet 192.168.178.33/24 brd 192.168.178.255 scope global enp2s0 valid_lft forever preferred_lft forever inet6 fe40::468a:5bff:fb24:c029/64 scope link valid_lft forever preferred_lft forever
Configuración IP básica (se lee mejor al acceder a la información relevante directamente).
ip -br addres show lo UNKNOWN 127.0.0.1/8 ::1/128 enp2s0 UP 192.168.178.50/24 2001:16b8:2886:8400:468a:5bff:fb24:c029/64 fe80::468a:5bff:fe24:c029/64 ppp0 UNKNOWN 172.27.0.2 peer 1.1.1.1/32 vboxnet0 UP 192.168.1.1/24 fe80::800:27ff:fe00:0/64 vboxnet1 DOWN vboxnet2 DOWN vboxnet3 DOWN vboxnet4 DOWN
Activar / Desactivar el dispositivo de red.
ip link set enp2s0 up ip link set enp2s0 down
Cambiar el nombre de una interfaz (enp2s0 > eth0).
ip link set enp2s0 down ip link set enp2s0 name eth0 ip link set eth0 up
Asignar / Eliminar dirección IP.
ip address add 192.168.0.33 dev enp2s0 ip address del 192.168.0.33 dev enp2s0 ip addr flush dev enp2s0 # Elimina todas las IPs de una interfaz.
Crear una interfaz virtual.
ip addr add 10.0.0.1/8 dev enp2s0 label enp2s0:1
Motrar tabla ARP. Además de la tabla ARP, muestra el estado de esas IPs vecinas: accesible, permanente, obsoleto y retrasado..
ip neigh 192.168.178.1 dev enp2s1 lladdr 24:65:21:bc:e1:1e REACHABLE fe80::2665:21ff:febc:e11e dev enp2s1 lladdr 24:65:21:bc:e1:1e router REACHABLE
Agregar entrada a la tabla ARP.
ip neigh add 192.168.0.1 lladdr 00:AA:BB:CC:DD:EE nud permanent dev enp2s0
Borrar entradas de la tabla ARP.
ip -s -s n flush 192.168.1.5 ip -s -s n flush all # Todas.
Mostrar tabla ARP.
ip neighbour
Mostrar estadísticas de las interfaces de red.
ip -s link
Establecer / Borrar una ruta.
ip route add 10.10.20.0/24 via 192.168.0.2 dev eth0 ip route del 10.10.20.0/24
Establecer la ruta predeterminada.
ip route add default via 192.168.0.1
Mostrar rutas.
ip route show
Cambiar el txqueuelen (10000).
ip link set txqueuelen 10000 dev enp2s0
Cambiar el MTU (5000).
ip link set mtu 5000 dev enp2s0
NOTA: Se puede utilizar solo las primera/s letra/s a la hora de ejecutar los comandos ip (ip n = ip neighbour, ip a = ip addr,…).
Forzar a los procesos a utilizar una determinada interfaz de red / IP
Con el comando ip se pueden configurar también “espacios de nombres de red”. Una instalación de Linux comparte un solo conjunto de interfaces de red y tablas de rutas.Se pueden modificar las entradas de la tabla de enrutamiento, pero estas afectan de manera general a todas las aplicaciones del sistema. La posibilidad de crear y configurar múltiples espacios de nombres permite tener instancias diferentes y separadas de interfaces de red y tablas de enrutamiento, las cuales operan de manera independiente una de otras.
Esto nos permite por ejemplo indicar qué aplicación o aplicaciones debe usar qué interfaz / ruta. Para ello se utiliza el objeto netns como se ve en este ejemplo, donde se crea un espacio de nombres de red “XXX”.
# Se crea un nuevo espacio de direcciones XXX. ip netns add XXX # Se asocia a ese espacio la interfaz eth1. ip link set eth2 netns XXX # Se le asigna una IP. ip netns exec XXX ip address add 192.168.178.23/24 dev eth2 # Se le asigna una dirección de loopback. ip netns exec XXX ip address add 127.0.0.1/8 dev lo # Se activa la interfaz ip netns exec XXX ip link set eth2 up # Se genera la ruta predeterminada para ese espacio de direcciones. ip netns exec XXX ip route add default via 192.168.178.1 # En el ejemplo se ejecuta una shell Bash que usará ese espacio de direcciones. # Un Ping, servidor del tipo "python -m SimpleHTTPServer", un comando ssh y cualquier otra herramienta lanzada desde esa shell usará el espacio de direcciones XXX, usando únicamente eth2. ip netns exec XXX bash # Borrar un espacio de nombres de red. ip netns delete XXX
NOTA: Es posible que se deba configurar el archivo /etc/resolv.conf para agregar servicios DNS una vez asignadas las IPs al espacio de nombres de red.
Para visualizar puertos en uso, debe especificarse el espacio de direcciones, si no comandos como netstat, lsof y demás no verán dichas conexiones al usar de manera predeterminada el espacio de direcciones predeterminado.
ip netns exec XXX lsof -Pni ip netns exec XXX netstat -putan
Denegar tráfico a una IP / red mediante el comando ip
Sin necesidad de usar el firewall se puede denegar tráfico simplemente denegando ciertas rutas.
Ejemplo para denegar las IPs de coinhive, usadas para minería en navegadores.
ip route add blackhole 217.182.160.0/20 # Deniega el tráfico a la red de manera silenciosa. ip route del prohibit 37.187.0.0/16 # Deniega el tráfico a la red enviando un mensaje ICMP "Communication administratively prohibited". ip route add unreachable 35.193.89.147 # Deniega el tráfico a la IP enviando un mensaje ICMP "Host unreachable".
Consultar la cache de rutas
Kernels anteriores a 3.6
# Consulta la cache. ip route show cache # Elimina la cache. ip route flush cache
Kernels posteriores a 3.6.
# Consultar la ruta guardada en caché por destino. ip route get x.x.x.x # Elimina la cache. ip route flush cache
Salida del comando ip coloreada
Simplemente se debe agregar la opción “-c” como parámetro, se podría también el siguiente alias para tener siempre la salida coloreada.
alias ip='ip -c'
Enlace de interés: ejecutar_aplicaciones_sobre_conexiones_vpn-ssh