Configuración de red, diagnóstico y solución de problemas generales de Linux son partes esenciales de la administración del sistema. Incluso para un desarrollador que trabaja con sistemas Linux, el conocimiento sobre comandos de red de Linux es una ventaja añadida.
En concreto, si quieres convertirte en ingeniero DevOps o formar parte de SRE, es fundamental conocer todos los comandos de solución de problemas de Linux ya que formarán parte de tus actividades del día a día.
Esta publicación cubrirá los importantes comandos de resolución de problemas y redes de Linux que están disponibles de forma nativa en los sistemas Linux.
¿Cuáles son los mejores comandos de solución de problemas y redes de Linux?
A continuación se muestra la lista de comandos de resolución de problemas disponibles de forma nativa.
Comando | Descripción |
hostname | Para verificar y establecer el nombre de host del servidor. |
host | Para obtener detalles del DNS del host |
ping | Comprueba si se puede acceder al servidor remoto mediante el protocolo ICMP. También muestra el tiempo de ida y vuelta de los paquetes. |
curl | Una utilidad multiplataforma que se utiliza para transferir datos. Se puede utilizar para solucionar varios problemas de red. |
wget | Utilidad para descargar archivos. Se puede utilizar para solucionar problemas de conexión y conectividad de proxy. |
ip | Un reemplazo para ifconfig . Se puede usar para configurar y recuperar información sobre las interfaces de red de los sistemas |
arp | Utilidad para ver y administrar caché arp. |
ss/netstat | Principalmente utilizado para verificar las conexiones y PID en puertos y sockets Unix. |
tracerout e | Esta utilidad utiliza el protocolo ICMP y encuentra los saltos involucrados en la lectura del servidor de destino. También muestra el tiempo que tarda entre saltos. |
mtr | mtr es una mezcla de ping y traceroute . También proporciona información adicional, como hosts intermedios y capacidad de respuesta. |
dig | Le ayuda a obtener los registros DNS asociados con un nombre de dominio. |
nslookup | Comando similar a cavar. |
nc | utilidad para depurar sockets TCP/UDP. |
telnet | Se puede utilizar para probar la conectividad remota en los puertos |
route | Le ayuda a obtener toda la información de la tabla de rutas |
tcpdump | Esta utilidad lo ayuda a capturar paquetes de red y analizarlos en busca de problemas de red. |
lsof | enumere todos los archivos abiertos y la información del proceso que lo abrió |
Comprendamos cada comando y veamos cómo podemos usarlo para solucionar problemas de Linux.
Nota importante: Cada comando/utilidad mencionado en esta publicación tiene muchas opciones y banderas. Cada comando tiene una página de manual y puede usarla para identificar los indicadores y las opciones que se requieren para su caso de uso. Por ejemplo, para
ip
comando, puede escribirloman ip
en la terminal para obtener todos los detalles sobre ese comando.
1. nombre de host
El comando de nombre de host se utiliza para ver el nombre de host de la máquina y configurar el nombre de host.
hostname
Puede usar el comando hostname para establecer un nuevo nombre de host para la máquina. Por ejemplo,
sudo hostname temp.com
Si configura el nombre de host usando “hostname
”, cuando reinicie la máquina, el nombre de host cambiará al nombre especificado en el archivo de nombre de host (por ejemplo:/etc/hostname).
Entonces, si desea cambiar el nombre de host de forma permanente, puede usar /etc/hosts
archivo o archivo de nombre de host relevante presente en el servidor.
- Para máquinas ubuntu, puede cambiarlo en
/etc/hostname
archivo. - Para RHEL, CentOS y Fedora, puede cambiarlo en
/etc/sysconfig/network
archivo.
2. anfitrión
El comando Host es para la búsqueda inversa de IP o un nombre DNS.
Por ejemplo, si desea encontrar un DNS adjunto con una IP, puede usar los comandos de host de la siguiente manera.
host 8.8.8.8
También puede hacer lo contrario para encontrar la dirección IP asociada con el nombre de dominio. Por ejemplo,
host devopscube.com
3. hacer ping
La utilidad de red ping se utiliza para comprobar si el servidor remoto es accesible o no. Se utiliza principalmente para verificar la conectividad y solucionar problemas de la red.
Proporciona los siguientes detalles.
- Bytes enviados y recibidos
- Paquetes enviados, recibidos y perdidos
- Tiempo aproximado de ida y vuelta (en milisegundos)
El comando ping tiene la siguiente sintaxis.
ping <IP or DNS>
Por ejemplo,
ping devopscube.com
Para hacer ping a la dirección IP
ping 8.8.8.8
Si desea limitar la salida de ping sin usar ctrl+c, puede usar el indicador "-c" con un número como se muestra a continuación.
ping -c 1 devopscube.com
4. rizo
La utilidad Curl se utiliza principalmente para transferir datos desde o hacia un servidor. Sin embargo, puede usarlo para solucionar problemas de red.
Para solucionar problemas de red, curl
admite protocolos como DICT
, FILE
, FTP
, FTPS
, GOPHER
, HTTP
, HTTPS
, IMAP
, IMAPS
, LDAP
, LDAPS
, MQTT
, POP3
, POP3S
, RTMP
, RTMPS
, RTSP
, SCP
, SFTP
, SMB
, SMBS
, SMTP
, SMTPS
, TELNET
y TFTP
Por ejemplo, curl
puede verificar la conectividad en el puerto 22 usando telnet.
curl -v telnet://192.168.33.10:22
Puede verificar la conectividad FTP usando curl.
curl ftp://ftptest.net
También puede solucionar problemas de conectividad del servidor web.
curl http://devopscube.com -I
5. wget
El wget
El comando se usa principalmente para obtener páginas web.
Puedes usar wget
para solucionar problemas de red también.
Por ejemplo, puede solucionar problemas de conexión del servidor proxy mediante wget.
wget -e use_proxy=yes http_proxy=<proxy_host:port> http://externalsite.com
Puede comprobar si un sitio web está activo recuperando los archivos.
wget www.google.com
6. ip (ifconfig)
ip
El comando se utiliza para mostrar y manipular rutas e interfaces de red. ip El comando es la versión más nueva de ifconfig
. ifconfig funciona en todos los sistemas, pero es mejor usar el comando ip en lugar de ifconfig.
Veamos algunos ejemplos de ip
comando.
Mostrar dispositivos de red y configuración
ip addr
Puede usar este comando con tuberías y grep para obtener resultados más granulares, como la dirección IP de la interfaz eth0. Es muy útil cuando trabaja en herramientas de automatización que requieren que la IP se obtenga dinámicamente.
El siguiente comando obtiene la dirección IP de eth0
interfaz de red.
ip a | grep eth0 | grep "inet" | awk -F" " '{print $2}'
Obtener detalles de una interfaz específica
ip a show eth0
Puede enumerar las tablas de enrutamiento.
ip route
ip route list
7. arp
ARP (Protocolo de resolución de direcciones ) muestra la tabla de caché de las direcciones IP y las direcciones MAC de las redes locales con las que interactuó el sistema.
arp
Salida de ejemplo,
[email protected]:~$ arp
Address HWtype HWaddress Flags Mask Iface
10.0.2.3 ether 52:54:00:12:35:03 C eth0
192.168.33.1 ether 0a:00:27:00:00:00 C eth1
10.0.2.2 ether 52:54:00:12:35:02 C eth0
8. ss (netstat)
El ss
comando es un reemplazo para netstat
. Todavía puedes usar el netstat
comando en todos los sistemas.
Usando ss
comando, puede obtener más información que netstat
dominio. El comando ss es rápido porque obtiene toda la información del espacio de usuario del kernel.
Ahora echemos un vistazo a algunos usos de ss
comando.
Lista de todas las conexiones
El “ss
El comando ” enumerará todas las conexiones de socket TCP, UDP y Unix en su máquina.
[email protected]:~$ ss Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u_str ESTAB 0 0 * 7594 * 0 u_str ESTAB 0 0 @/com/ubuntu/upstart 7605 * 0 u_str ESTAB 0 0 * 29701 * 0 u_str ESTAB 0 0 /var/run/dbus/system_bus_socket 29702 * 0 tcp ESTAB 0 400 172.31.18.184:ssh 1.22.167.31:61808
La salida del ss
El comando será grande para que pueda usar ” ss | less
” para hacer que la salida se pueda desplazar.
Filtrado de sockets TCP, UDP y Unix
Si desea filtrar los detalles del socket TCP, UDP o UNIX, use el indicador "-t", "-u" y "-x" con el comando "ss". Mostrará todas las conexiones establecidas a los puertos específicos. Si desea enumerar los puertos conectados y de escucha usando "a" con la bandera específica como se muestra a continuación.
ss -ta ss -ua ss -xa
Lista de todos los puertos de escucha
Para enumerar todos los puertos de escucha, use el indicador "-l" con el comando ss. Para enumerar sockets TCP, UDP o UNIX específicos, use el indicador "-t", "-u" y "-x" con "-l" como se muestra a continuación.
[email protected]:~$ ss -lt State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* LISTEN 0 50 :::http-alt :::* LISTEN 0 50 :::55857 :::* LISTEN 0 128 :::ssh :::* LISTEN 0 50 :::53285 :::* [email protected]:~$
Lista de todos los establecidos
Para listar todos los puertos establecidos, use el state established
bandera como se muestra a continuación.
ss -t -r state established
Para listar todos los sockets en estado de escucha,
ss -t -r state listening
9. trazar ruta
Si no tiene un traceroute
utilidad en su sistema o servidor, puede instalarlo desde el repositorio nativo.
traceroute
es una utilidad de solución de problemas de red. Usando traceroute puede encontrar la cantidad de saltos necesarios para que un paquete en particular llegue al destino.
Por ejemplo,
traceroute google.com
Aquí está la salida.
traceroute to google.com (173.194.33.163), 30 hops max, 60 byte packets 1 ec2-50-112-0-84.us-west-2.compute.amazonaws.com (50.112.0.84) 1.974 ms 1.895 ms 1.899 ms 2 100.64.1.247 (100.64.1.247) 1.414 ms 100.64.1.137 (100.64.1.137) 1.127 ms 100.64.1.97 (100.64.1.97) 1.313 ms 3 100.64.0.198 (100.64.0.198) 1.443 ms 100.64.0.62 (100.64.0.62) 2.160 ms 100.64.0.60 (100.64.0.60) 2.116 ms 10 66.249.94.214 (66.249.94.214) 6.313 ms 7.104 ms 209.85.249.34 (209.85.249.34) 5.986 ms 11 209.85.244.65 (209.85.244.65) 6.157 ms 6.341 ms 6.574 m. . 12 sea09s18-in-f3.1e100.net (173.194.33.163) 6.302 ms 6.517 ms 6.071 ms [email protected]:~$
El resultado anterior muestra el conteo de saltos (12) para llegar a google.com desde el servidor devopscube AWS ec2.
10. metros
El mtr
La utilidad es una herramienta de diagnóstico de red para solucionar los cuellos de botella de la red. Combina la funcionalidad de ambos ping
y traceroute
Por ejemplo, el siguiente comando muestra el traceroute
salida en tiempo real.
mtr google.com
Aquí está la salida.
informe mtr
Puede generar un informe usando el indicador –report. Cuando ejecuta el informe mtr, envía 10 paquetes al destino y crea el informe.
mtr -n --report google.com
11. cavar
Si tiene alguna tarea relacionada con la búsqueda de DNS, puede usar “dig
” comando para consultar los servidores de nombres DNS.
Obtener todos los registros DNS con dig
El siguiente comando devuelve todos los registros DNS y la información TTL de un twitter.com
dig twiter.com ANY
Usa +short
para obtener la salida sin detalles.
dig google.com ANY +short
Obtener registro DNS específico con dig
Por ejemplo, si desea obtener el A record
para el nombre de dominio en particular, puede usar el comando dig. +short
proporcionará la información sin detalles
dig www.google.com A +short
De manera similar, puede obtener la información de otros registros por separado usando los siguientes comandos.
dig google.com CNAME +short
dig google.com MX +short
dig google.com TXT +short
dig google.com NS +short
Búsqueda inversa de DNS con dig
Puede realizar una búsqueda inversa de DNS con dig usando el siguiente comando. Reemplazar 8.8.8.8
con la IP requerida
dig -x 8.8.8.8
12. nslookup
Nslookup (Búsqueda de servidor de nombres) se utiliza para comprobar las entradas de DNS. Es similar al comando de excavación.
Para verificar los registros DNS de un dominio, puede usar el siguiente comando.
nslookup google.com
También puede realizar una búsqueda inversa con la dirección IP.
nslookup 8.8.8.8
Para obtener todos los registros DNS de un nombre de dominio, puede usar lo siguiente.
nslookup -type=any google.com
Del mismo modo, puede consultar registros como mx
, soa
etc.
13. nc (netcat)
El nc
El comando (netcat) se conoce como el ejército suizo de comandos de red.
Usando nc
, puede verificar la conectividad de un servicio que se ejecuta en un puerto específico.
Por ejemplo, para comprobar si ssh
puerto está abierto, puede usar el siguiente comando.
nc -v -n 192.168.33.10 22
netcat
también se puede utilizar para la transferencia de datos a través de TCP/UDP y escaneo de puertos.
No se recomienda escanear puertos en entornos de nube. Debe solicitar al proveedor de la nube que realice operaciones de escaneo de puertos en su entorno.
14. telnet
El comando telnet se usa para solucionar problemas de las conexiones TCP en un puerto.
Para verificar la conectividad del puerto usando telnet, use el siguiente comando.
telnet 10.4.5.5 22
15. ruta
La “route
El comando ” se utiliza para obtener los detalles de la tabla de rutas de su sistema y manipularla. Veamos algunos ejemplos del comando de ruta.
Lista de todas las rutas
Ejecute la “route
” comando sin ningún argumento para enumerar todas las rutas existentes en su sistema o servidor.
[email protected]:~$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default ip-172-31-16-1. 0.0.0.0 UG 0 0 0 eth0 172.17.0.0 * 255.255.0.0 U 0 0 0 docker0 172.31.16.0 * 255.255.240.0 U 0 0 0 eth0 [email protected]:~$
Si desea obtener la salida completa en forma numérica sin ningún nombre de host, puede usar el indicador "-n" con el comando de ruta.
[email protected]:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.31.16.1 0.0.0.0 UG 0 0 0 eth0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.31.16.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0 [email protected]:~$
16. volcado tcp
El tcpdump
El comando se utiliza principalmente para solucionar problemas de tráfico de red.
Nota: Para analizar la salida detcpdump
El comando requiere algo de aprendizaje, por lo que explicarlo está fuera del alcance de este artículo.
tcpdump
El comando funciona con las interfaces de red del sistema. Por lo tanto, debe usar privilegios administrativos para ejecutar el comando.
Lista de todas las interfaces de red
Use el siguiente comando para enumerar todas las interfaces.
sudo tcpdump --list-interfaces
Capturar paquetes en una interfaz específica
Para obtener el volcado de paquetes en una interfaz específica, puede usar el siguiente comando.
Nota: presionectrl + c
para dejar de capturar los paquetes.
sudo tcpdump -i eth0
Para limitar la captura de paquetes, puede usar -c
bandera con el número.
Por ejemplo,
sudo tcpdump -i eth0 -c 10
Capturar paquetes en todas las interfaces
Para capturar paquetes en todas las interfaces, utilice any
bandera como se muestra a continuación.
sudo tcpdump -i any
17. lsof
lsof
es un comando que se usaría en la resolución de problemas de Linux del día a día. Este comando es igualmente importante para cualquiera que trabaje con sistemas Linux.
Para enumerar todos los archivos abiertos, ejecute lsof
comando.
lsof
Uno de los errores comunes que enfrentan los desarrolladores y los ingenieros de DevOps es "Error de enlace fallido:la dirección ya está en uso “. Puede encontrar el ID de proceso asociado con un puerto usando el siguiente comando. Puede eliminar el proceso para liberar el puerto.
lsof -i :8080
Utilidades de solución de problemas de red de terceros
Hay más utilidades de línea de comandos para la solución de problemas de redes disponibles de soluciones de terceros.
Debe instalarlos por separado y usarlos para solucionar problemas. Por razones de cumplimiento de seguridad, no todas las organizaciones le permitirán hacerlo. Sin embargo, si tiene la opción de usar herramientas de terceros, puede explorarlas.
Conclusión
En este artículo, hemos cubierto las importantes utilidades de línea de comandos de Linux para configuración y resolución de problemas de red.
Si se está iniciando en la administración de sistemas, DevOps o roles SRE, es esencial conocer estas utilidades para respaldar los proyectos en los que está trabajando.
Cada utilidad tiene muchas funcionalidades y puede explorar más para cumplir con sus requisitos.
Si cree que nos hemos perdido algún comando importante, infórmenos en la sección de comentarios.
Además, si desea aprender a usar scripts de shell, consulte nuestra guía sobre cómo aprender a usar scripts de shell. Si son desarrolladores, consulten mi guía sobre los comandos de Linux que todo desarrollador debería conocer.