Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

14 comandos útiles de red de Linux

Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Configurar, monitorear y asegurar las redes es 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, los sistemas en red fallan. Tu como un administrador son necesarios para 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 el tradicional ifconfig y route comandos.

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 sirve para configurar, agregar y eliminar interfaces de red. Utilizar ip link show comando 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

Utilice 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 de 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

Aunque 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, auditoría de seguridad y 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 predeterminado de Nmap muestra los puertos, su estado (abierto / cerrado) y los protocolos. Envía un paquete a los 1000 puertos más comunes y comprueba 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 comprobar qué hosts de 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

Utilice 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 advertencia: nadie aprecia que sus sistemas sean escaneados a través de Internet. Entonces, antes de hacerlo, solicite permiso.

También puedes usar Nmap en Windows, mira esto guía de instalación.

ping

Utilice 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 para 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.

Por defecto, ping se ejecuta en un bucle infinito. Para enviar un número definido de paquetes, use -c bandera.

$ 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 con éxito 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

Puedes usar -n marca para evitar búsquedas DNS inversas. El número de secuencia de 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
  • firewall que bloquea las solicitudes ICMP ECHO

También puede realizar una prueba de ping en línea para comprobar la conectividad de 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 utilizando 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 vuelve con el ancho de banda resultados en unos segundos.

traceroute

Si 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 de mi máquina a 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: como los paquetes ICMP de traceroute son de baja prioridad, 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 rutas basadas en la web le permiten hacer un rastreo de ruta inverso, es decir, desde un sitio web a su host. Puede consultarlos en traceroute.org or Traceroute de Geekflare.

tcpdump

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. Utilizar -n flag, si no desea que tcpdump realice búsquedas de nombres.

La salida tcpdump imprime una línea para cada paquete. Utilizar -c bandera 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 utiliza para examinar conexiones de red, tablas de enrutamiento y varias configuraciones y estadísticas de red.

Utilice la herramienta -i marca para enumerar 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

Usar -r bandera 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 dos últimas 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 cualquier paquete destinado a una red que no figura en esta tabla es manejado por el enrutador 10.0.2,2.

El comando netstat sin opciones muestra una lista de sockets abiertos. Utilizar -l marca para mostrar solo los sockets de escucha, que por defecto no se muestran. Puede usar -a bandera para mostrar sockets de escucha y no escucha. 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 que se ejecutan 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. Aunque netstat todavía está disponible, la mayoría de las distribuciones de Linux están pasando a ss mando.

usar el comando ss con -t y -a banderas para enumerar todos los sockets TCP. Esto muestra las tomas de escucha y no escucha.

$ 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 las conexiones TCP con el 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, se usaban rlogin y telnet para conectarse y administrar hosts remotos. Sin embargo, ambos sufren de 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 sin cifrar.

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

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

Para conectarse a un host remoto, necesita 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 establece una conexión con 10.0.0.50 (servidor) y el cliente ssh nunca ha visto este host remoto antes. 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.
me@10.0.0.50'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
me@10.0.0.50'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 and sftp

scp (copia segura) es muy similar a cp comando 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 en forma cifrada. El siguiente comando copia un.txt de la máquina local a 10.0.0.50:

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

sftp (ftp seguro) también es 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 que se ejecute en el host remoto. Solo necesitas un servidor ssh. Aquí hay una sesión de ejemplo:

me@ubuntu-xenial:~$ sftp 10.0.0.50
me@10.0.0.50'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

Ifconfig

Principalmente usamos ifconfig comando 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 ~]#

dig

dig (Domain Information Groper) es una herramienta flexible para interrogar a los 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 conecta 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 resolución de 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 at network.

Gracias a nuestros patrocinadores
Más lecturas excelentes sobre Linux
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder