14 comandos útiles de red de Linux

Publicado: 2015-02-15

La configuración, el monitoreo y la seguridad de las redes forman una parte esencial del trabajo de un administrador de sistemas. Cuando se trata de administrar redes Linux, hay muchos comandos y utilidades disponibles.

A veces fallan los sistemas en red. Usted, como administrador, debe diagnosticar y resolver problemas. El monitoreo ayuda a detectar problemas y solucionarlos antes de que las cosas se salgan de control. La supervisión de la seguridad y el rendimiento también forma una parte esencial de las actividades de un administrador.

Aquí discutimos algunos comandos de uso común para administrar redes Linux.

ip

El paquete iproute2 incluye el comando IP que se utiliza para la configuración de red y enrutamiento. Esto reemplaza los comandos tradicionales ifconfig y route .

ip toma un segundo argumento que especifica el objeto en el que desea ejecutar un comando y una acción como agregar, eliminar o mostrar.

enlace IP

ip link es para configurar, agregar y eliminar interfaces de red. Use el comando ip link show para mostrar todas las interfaces de red en el sistema:

 $ ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 02:35:97:08:6b:2a brd ff:ff:ff:ff:ff:ff 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:6f:60:ff brd ff:ff:ff:ff:ff:ff

Puede ver la página de manual de ip link con:

 $ man ip-link

dirección IP

Use el comando de dirección IP para mostrar direcciones, vincular nuevas direcciones o eliminar las antiguas. El comando de dirección IP de la página del manual se denomina dirección IP.

Por ejemplo, el siguiente comando muestra la dirección IP asignada a la interfaz de red enp0s8:

 ip address show dev enp0s8 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:6f:60:ff brd ff:ff:ff:ff:ff:ff inet 10.0.0.51/24 brd 10.0.0.255 scope global enp0s8 ...

ruta ip

Utilice la ruta IP para imprimir o mostrar la tabla de enrutamiento. El siguiente comando muestra el contenido de la tabla de enrutamiento:

 $ ip route show default via 10.0.2.2 dev enp0s3 10.0.0.0/24 dev enp0s8 proto kernel scope link src 10.0.0.51 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15

nmap

Si bien Nmap se ha utilizado en muchas películas, The Matrix Reloaded ( Wikipedia , IMDB , Amazon ) convirtió a Nmap en una estrella de cine.

Nmap ("Network Mapper") es una poderosa utilidad utilizada para el descubrimiento de redes, la auditoría de seguridad y la administración. Muchos administradores de sistemas lo usan para determinar cuáles de sus sistemas están en línea y también para la detección del sistema operativo y la detección de servicios.

El escaneo Nmap predeterminado muestra los puertos, su estado (abierto/cerrado) y los protocolos. Envía un paquete a los 1000 puertos más comunes y verifica la respuesta.

 $ nmap 10.0.0.50 Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-07 10:32 UTC Nmap scan report for 10.0.0.50 Host is up (0.00077s latency). Not shown: 997 filtered ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp closed mysql

Para verificar qué hosts en su red están activos:

 $ nmap -sn 10.0.0.0/24 Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-07 11:59 UTC Nmap scan report for 10.0.0.1 Host is up (0.00084s latency). Nmap scan report for 10.0.0.50 Host is up (0.0021s latency). Nmap scan report for 10.0.0.51 Host is up (0.00026s latency). Nmap done: 256 IP addresses (3 hosts up) scanned in 2.61 seconds

Use el indicador -O para identificar qué sistema operativo está ejecutando un host.

 $ sudo nmap 10.0.0.50 -O Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-07 13:44 UTC Nmap scan report for 10.0.0.50 Host is up (0.00053s latency). ... Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3 OS details: Linux 3.10 - 3.19 Network Distance: 1 hop OS detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 21.95 seconds

Una palabra de precaución: a nadie le gusta que sus sistemas sean escaneados a través de Internet. Así que antes de hacerlo, pide permiso.

También puede usar Nmap en Windows, consulte esta guía de instalación.

silbido

Use ping para ver si un host está vivo. Este comando súper simple lo ayuda a verificar el estado de un host o un segmento de red. El comando ping envía un paquete ICMP ECHO_REQUEST al host de destino y espera a ver si responde.

Sin embargo, algunos hosts bloquean las solicitudes de eco ICMP con un firewall. Algunos sitios en Internet también pueden hacer lo mismo.

De forma predeterminada, ping se ejecuta en un bucle infinito. Para enviar un número definido de paquetes, use el indicador -c .

 $ ping -c 3 google.com PING google.com (172.217.167.238): 56 data bytes 64 bytes from 172.217.167.238: icmp_seq=0 ttl=118 time=7.898 ms 64 bytes from 172.217.167.238: icmp_seq=1 ttl=118 time=7.960 ms 64 bytes from 172.217.167.238: icmp_seq=2 ttl=118 time=6.247 ms --- google.com ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 6.247/7.368/7.960/0.793 ms

Con el indicador -o, el ping sale correctamente después de recibir un paquete de respuesta.

 $ ping -o google.com PING google.com (172.217.167.46): 56 data bytes 64 bytes from 172.217.167.46: icmp_seq=0 ttl=118 time=7.540 ms --- google.com ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 7.540/7.540/7.540/0.000 ms

Puede usar el indicador -n para evitar búsquedas DNS inversas. El número de secuencia ICMP es particularmente importante. Una interrupción en los números de secuencia indica paquetes perdidos.

Un ping fallido podría deberse a

  • falla de red
  • el anfitrión no está vivo
  • cortafuegos que bloquea las solicitudes ICMP ECHO

También puede realizar una prueba de ping en línea para verificar la conectividad desde diferentes partes del mundo.

iPerf

Mientras que ping verifica la disponibilidad de un host, iPerf ayuda a analizar y medir el rendimiento de la red entre dos hosts. Con iPerf, abre una conexión entre dos hosts y envía algunos datos. iPerf luego muestra el ancho de banda disponible entre los dos hosts.

Puede instalar un iPerf usando su administrador de paquetes de distribución. Por ejemplo, en distribuciones basadas en Ubuntu, puede instalar así:

 $ sudo apt install iperf -y

Una vez que haya instalado iPerf en ambas máquinas, inicie el servidor iPerf en una de ellas. El siguiente ejemplo inicia el servidor iPerf en un host con la dirección IP 10.0.0.51.

 $ iperf -s ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------

En la segunda máquina, inicie iPerf con el indicador -c. Esto se conecta con el servidor y envía algunos datos.

 $ iperf -c 10.0.0.51 ------------------------------------------------------------ Client connecting to 10.0.0.51, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.0.0.50 port 42177 connected with 10.0.0.51 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.13 GBytes 972 Mbits/sec

iPerf regresa con los resultados del ancho de banda en unos segundos.

trazar ruta

Si el ping muestra paquetes faltantes, debe usar traceroute para ver qué ruta están tomando los paquetes. Traceroute muestra la secuencia de puertas de enlace a través de las cuales viajan los paquetes para llegar a su destino. Por ejemplo, traceroute from my machine to google.com muestra lo siguiente:

 $ traceroute google.com traceroute to google.com (172.217.167.46), 64 hops max, 52 byte packets 1 dlinkrouter.dlink (192.168.0.1) 5.376 ms 2.076 ms 1.932 ms 2 10.194.0.1 (10.194.0.1) 5.190 ms 5.125 ms 4.989 ms 3 broadband.actcorp.in (49.207.47.201) 7.165 ms 5.749 ms 5.755 ms 4 broadband.actcorp.in (49.207.47.225) 5.918 ms * 8.483 ms ... 9 108.170.251.97 (108.170.251.97) 6.359 ms del03s16-in-f14.1e100.net (172.217.167.46) 5.448 ms 108.170.251.97 (108.170.251.97) 6.400 ms

La línea 4 de esta salida muestra un * en los tiempos de ida y vuelta. Esto indica que no se recibió respuesta. Esto puede deberse a muchas razones: dado que los paquetes ICMP de traceroute tienen una prioridad baja, un enrutador puede descartarlos. O podría haber simplemente congestión. Si ve un * en todos los campos de tiempo para una puerta de enlace determinada, es posible que la puerta de enlace esté inactiva.

Muchas herramientas de rastreo de ruta basadas en la web le permiten hacer un rastreo de ruta inverso, es decir, desde un sitio web hasta su host. Puede consultarlos en traceroute.org o Geekflare Traceroute.

volcado tcp

tcpdump es una herramienta de detección de paquetes y puede ser de gran ayuda para resolver problemas de red. Escucha el tráfico de la red e imprime la información del paquete según los criterios que defina.

Por ejemplo, puede examinar todos los paquetes enviados hacia o desde un host en particular, Ubuntu18 en este ejemplo:

 $ sudo tcpdump host ubuntu18 -n -c 5 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 14:12:11.509092 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 2991049004:2991049112, ack 2956233368, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 108 14:12:11.509146 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 108:252, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 144 14:12:11.509218 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 252:288, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 36 14:12:11.509259 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 288:500, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 212 14:12:11.509331 IP 10.0.0.4.22 > 183.83.208.234.9633: Flags [P.], seq 500:768, ack 1, win 501, options [nop,nop,TS val 292041322 ecr 405604219], length 268 5 packets captured 6 packets received by filter 0 packets dropped by kernel

De forma predeterminada, tcpdump resuelve las direcciones IP en nombres de host. Utilice el indicador -n si no desea que tcpdump realice búsquedas de nombres.

La salida de tcpdump imprime una línea para cada paquete. Use el indicador -c para limitar la salida, 5 en el ejemplo anterior.

tcpdump es útil para resolver problemas de red y también para identificar problemas potenciales. Es una buena idea ejecutar un tcpdump en su red de vez en cuando para verificar que todo esté en orden.

netstat

El comando Netstat se usa para examinar las conexiones de red, las tablas de enrutamiento y varias estadísticas y configuraciones de red.

Use el indicador -i para listar las interfaces de red en su sistema.

Aquí hay un ejemplo:

 $ netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 4001 0 0 0 2283 0 0 0 BMRU eth1 1500 0 27154 0 0 0 838962 0 0 0 BMRU lo 65536 0 0 0 0 0 0 0 0 0 LRU

El uso de la bandera -r mostrará la tabla de enrutamiento. Esto muestra la ruta configurada para enviar paquetes de red.

 $ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0 10.0.0.0 * 255.255.255.0 U 0 0 0 eth1 10.0.2.0 * 255.255.255.0 U 0 0 0 eth0

Un asterisco en las últimas dos líneas indica que no se requiere una puerta de enlace para enviar paquetes a ningún host en estas redes. Este host está conectado directamente a las redes 10.0.0.0 y 10.0.2.0.

En la primera línea, el destino es el predeterminado, lo que significa que el enrutador 10.0.2,2 maneja cualquier paquete destinado a una red que no figura en esta tabla.

El comando netstat sin ninguna opción muestra una lista de sockets abiertos. Use el indicador -l para mostrar solo los sockets de escucha, que de forma predeterminada no se muestran. Puede usar la bandera -a para mostrar los enchufes que escuchan y los que no escuchan. Aquí hay un ejemplo:

 $ netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:ssh *:* LISTEN tcp 0 36 10.0.2.15:ssh 10.0.2.2:51017 ESTABLISHED tcp6 0 0 [::]:ssh [::]:* LISTEN udp 0 0 *:bootpc *:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 3 [ ] DGRAM 8186 /run/systemd/notify ...

Más ejemplos de comandos de Netstat aquí

ss

Las instalaciones de Linux tienen muchos servicios ejecutándose de forma predeterminada. Estos deben desactivarse o preferiblemente eliminarse, ya que esto ayuda a reducir la superficie de ataque. Puede ver qué servicios se están ejecutando con el comando netstat. Si bien netstat todavía está disponible, la mayoría de las distribuciones de Linux están haciendo la transición al comando ss .

use el comando ss con las banderas -t y -a para listar todos los sockets TCP. Esto muestra los enchufes que escuchan y los que no escuchan.

 $ ss -t -a State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:sunrpc *:* LISTEN 0 128 *:http *:* LISTEN 0 128 *:ssh *:* LISTEN 0 128 *:60031 *:* ESTAB 0 0 10.0.2.15:ssh 10.0.2.2:51699 ESTAB 0 0 10.0.2.15:ssh 10.0.2.2:51049 LISTEN 0 128 :::sunrpc :::* LISTEN 0 128 :::http :::* LISTEN 0 128 :::ssh :::* LISTEN 0 128 :::54715 :::*

Para mostrar solo conexiones TCP con estado establecido:

 ss -a -t -o state established Recv-Q Send-Q Local Address:Port Peer Address:Port 0 0 10.0.2.15:ssh 10.0.2.2:51699 timer:(keepalive,23min,0) 0 0 10.0.2.15:ssh 10.0.2.2:51049 timer:(keepalive,114min,0)

ssh

ssh le permite conectarse de forma segura con hosts remotos a través de Internet. Anteriormente, rlogin y telnet se usaban para conectarse y administrar hosts remotos. Sin embargo, ambos tienen un defecto fundamental, es decir, envían toda la información, incluidos los nombres de inicio de sesión y las contraseñas, en texto claro.

ssh permite la comunicación segura a través de Internet con las siguientes dos funciones:

  • Confirma que el host remoto es quien dice ser.
  • Encripta toda la comunicación entre los hosts.

Para conectarse a un host remoto, debe tener un servidor OpenSSH ejecutándose en el host remoto. Puede instalarlo usando su administrador de paquetes de distribución. Por ejemplo en Ubuntu puedes instalarlo así:

 $ sudo apt install openssh-server

Aquí hay un ejemplo que muestra cómo puede conectarse al host remoto 10.0.0.50 usando el comando ssh:

 me@ubuntu-xenial:~$ ssh 10.0.0.50 The authenticity of host '10.0.0.50 (10.0.0.50)' can't be established. ECDSA key fingerprint is SHA256:s2tNJQa/C1/W0SevGm7Rt3xoBZG1QL5yT3ff/+PMpnY. Are you sure you want to continue connecting (yes/no)? yes

Recibe un mensaje que dice que no se puede establecer la autenticidad del host 10.0.0.50, esto se debe a que es la primera vez que se realiza una conexión con 10.0.0.50 (servidor) y el cliente ssh nunca antes había visto este host remoto. Ingrese sí para continuar con la conexión. Una vez establecida la conexión, se le solicitará una contraseña:

 Warning: Permanently added '10.0.0.50' (ECDSA) to the list of known hosts. [email protected]'s password:

Después de ingresar la contraseña correcta, iniciará sesión en el host remoto.

 Welcome to Ubuntu 14.04.6 LTS (GNU/Linux 3.13.0-170-generic x86_64) * Documentation: https://help.ubuntu.com/ .. me@vagrant-ubuntu-trusty-64:~$

Puede salir de este shell remoto con el comando exit.

Además, puede ejecutar fácilmente un solo comando en el host remoto usando ssh. Por ejemplo, para ejecutar df -h en el host remoto:

 $ ssh 10.0.0.50 df -h [email protected]'s password: Filesystem Size Used Avail Use% Mounted on udev 241M 12K 241M 1% /dev tmpfs 49M 384K 49M 1% /run /dev/sda1 40G 1.6G 37G 5% / ... none 224G 113G 111G 51% /vagrant me@ubuntu-xenial:~$

scp y sftp

scp (copia segura) es muy similar al comando cp para copiar archivos, con una adición: puede incluir nombres de host remotos en los nombres de ruta de origen o destino. El nombre de host y la ruta del directorio están separados por dos puntos. Esto le permite copiar archivos de forma segura a través de la red de forma cifrada. El siguiente comando copia a.txt de la máquina local a 10.0.0.50:

 me@ubuntu-xenial:~$ scp a.txt 10.0.0.50:/home/me [email protected]'s password: a.txt 100% 0 0.0KB/s 00:00

sftp (ftp seguro) es también un programa de copia de archivos similar a ftp . Sin embargo, utiliza un túnel encriptado SSH para copiar archivos, en lugar de enviar todo en texto sin cifrar. Además, no necesita un servidor FTP ejecutándose en el host remoto. Solo necesitas un servidor ssh. Aquí hay una sesión de ejemplo:

 me@ubuntu-xenial:~$ sftp 10.0.0.50 [email protected]'s password: Connected to 10.0.0.50. sftp> put kali-linux-2020.3-installer-netinst-i386.iso Uploading kali-linux-2020.3-installer-netinst-i386.iso to /home/me/kali-linux-2020.3-installer-netinst-i386.iso kali-linux-2020.3-installer-netinst-i386.iso 100% 435MB 27.2MB/s 00:16 sftp> bye

Si configuración

Principalmente usamos el comando ifconfig para verificar la dirección IP asignada al sistema.

 [root@lab ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 209.97.137.171 netmask 255.255.240.0 broadcast 209.97.143.255 inet6 fe80::c035:b2ff:fe9d:72d5 prefixlen 64 scopeid 0x20<link> ether c2:35:b2:9d:72:d5 txqueuelen 1000 (Ethernet) RX packets 1333200 bytes 167143230 (159.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 979666 bytes 93582595 (89.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 16 bytes 1392 (1.3 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 16 bytes 1392 (1.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@lab ~]#

excavar

dig (Domain Information Groper) es una herramienta flexible para interrogar servidores de nombres DNS.

Realiza búsquedas de DNS y muestra las respuestas que se devuelven desde los servidores de nombres.

 [root@lab ~]# dig geekflare.com ; <<>> DiG 9.11.13-RedHat-9.11.13-5.el8_2 <<>> geekflare.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12310 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;geekflare.com. IN A ;; ANSWER SECTION: geekflare.com. 30 IN A 104.27.119.115 geekflare.com. 30 IN A 104.27.118.115 ;; Query time: 12 msec ;; SERVER: 67.207.67.2#53(67.207.67.2) ;; WHEN: Wed Sep 16 17:58:45 UTC 2020 ;; MSG SIZE rcvd: 74 [root@lab ~]#

telnet

telnet conecte el host y el puerto de destino a través de un protocolo telnet si se establece una conexión, significa que la conectividad entre dos hosts funciona bien.

 [root@lab ~]# telnet gf.dev 443 Trying 104.27.153.44... Connected to gf.dev. Escape character is '^]'.

nslookup

nslookup es un programa para consultar servidores de nombres de dominio y resolver IP.

 [root@lab ~]# nslookup relicflare.com Server: 67.207.67.2 Address: 67.207.67.2#53 Non-authoritative answer: Name: relicflare.com Address: 192.64.119.178 [root@lab ~]#

Resumen

La creación de redes en Linux es un tema amplio, con una gran cantidad de comandos y utilidades. En este artículo, hemos discutido algunos comandos de uso común que, con suerte, lo ayudarán a administrar y proteger su red.