GNU/Linux >> Tutoriales Linux >  >> Linux

5 comandos de solución de problemas de red de Linux

La configuración de redes y la resolución de problemas son tareas cruciales que los administradores de sistemas deben realizar con regularidad. Algunas de estas tareas pueden ser desafiantes. Sin embargo, cuando se trata de problemas de conectividad, el uso de las herramientas adecuadas lo ayudará a lograr los resultados de una manera más rápida y consistente.

El comando ip

La ip El comando es una utilidad integral para mostrar y manipular objetos de red en su sistema Linux, incluidas direcciones IP, rutas y tablas ARP. Es una herramienta útil para configurar la red, así como para solucionar problemas de conectividad de red.

La ip El comando reemplaza la funcionalidad de muchos comandos provistos con las antiguas net-tools paquete como ifconfig , route y arp , pero agrega muchas otras funciones.

En su forma más básica, puede ejecutar ip y proporcionar un objeto de red para manipular, como una dirección, enlace o ruta, y un subcomando para realizar una acción. Si no da un subcomando, muchos objetos por defecto muestran show subcomando para mostrar información relacionada con ese objeto.

Esta es la sintaxis básica:

ip <OBJECT> [COMMAND]

Por ejemplo, para ver el estado del enlace en todos los dispositivos de la red, ejecute ip link show :

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff

Porque show es el subcomando predeterminado, también puede obtener el mismo resultado ejecutando ip link o incluso ip l (muchos objetos reconocen una abreviatura).

La ip comando gestiona muchos objetos. Los principales son:

  • link o l - controla el estado de los dispositivos de red
  • address o a - manipula las direcciones IP en los dispositivos
  • route o r - maneja las entradas de la tabla de enrutamiento
  • neighbor o n - controla las entradas de la tabla ARP

Puede ver una lista completa de objetos y comandos ejecutando ip help .

Algunos ejemplos útiles del comando ip

Mostrar estadísticas de red -s en formato legible por humanos -h para una interfaz de red específica:

$ ip -s -h l show dev enp1s0
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    820M       303k     0       182k    0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    19.9M      60.9k    0       0       0       0    

Mostrar las direcciones IP de todas las interfaces:

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:b5:c7:2b brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.169/24 brd 192.168.122.255 scope global noprefixroute enp1s0
       valid_lft forever preferred_lft forever
    inet6 fe80::7ecf:5cc8:5c1f:1009/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Muestra la dirección IP de una sola interfaz, por ejemplo, enp1s0 :

$ ip a show dev enp1s0

Agregar otra dirección IP a una interfaz (requiere sudo o root usuario):

$ sudo ip a change 192.168.122.170 dev enp1s0

Mostrar la tabla de enrutamiento:

$ ip route
default via 192.168.122.1 dev enp1s0 proto static metric 100 
192.168.122.0/24 dev enp1s0 proto kernel scope link src 192.168.122.169 metric 100

Agregar una ruta (puerta de enlace predeterminada):

$ sudo ip route add default via 192.168.122.1 dev enp1s0

La ip El comando es una interfaz de nivel inferior para configurar las opciones de red en su sistema Linux. Si bien es útil como herramienta de solución de problemas, puede ser más difícil configurar la red con él. Por esta razón, muchas distribuciones proporcionan una interfaz de nivel superior para realizar la misma tarea. A continuación, echemos un vistazo a la herramienta de configuración de Network Manager nmcli , que proporciona una forma integrada de configurar la red.

La herramienta nmcli

Network Manager es una aplicación de configuración de red disponible de forma predeterminada con muchas distribuciones de Linux, incluidas RHEL y Fedora. Network Manager se ejecuta como un demonio y su objetivo es proporcionar una interfaz de nivel superior para que la configuración de la red sea más sencilla y automatizada.

Es común que los usuarios de Linux de escritorio o servidores con una interfaz gráfica utilicen clientes de GUI de Network Manager para configurar la red. Para los casos en los que trabaja con servidores sin cabeza o si desea automatizar la configuración a través de scripts de shell, el nmcli herramienta es muy útil.

Administrador de red y nmcli son una combinación versátil que le permite verificar y configurar muchas opciones de red. La sintaxis básica para nmcli es:

nmcli <OBJECT> [COMMAND] [ARGUMENTS]

Los objetos más comunes son:

  • general - muestra el estado y los permisos de Network Manager
  • networking - muestra, activa y desactiva la creación de redes
  • radio - muestra, habilita y deshabilita WiFi y WWAN
  • device - muestra y manipula el estado de los dispositivos de red
  • connection - gestiona los perfiles de conexión de Network Manager

Es imposible cubrir todas las opciones en una sola publicación de blog. Veamos algunos ejemplos de cómo usar nmcli para tareas comunes de configuración de red. Para obtener más ejemplos, consulte la página oficial de nmcli-examples o las páginas man con man nmcli-examples .

Verifique el estado de los dispositivos de red:

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION 
enp1s0  ethernet  connected  enp1s0
enp7s0  ethernet  disconnected  --
lo      loopback  unmanaged  -- 

Mostrar todos los perfiles de conexión:

$ nmcli con show 
NAME    UUID                                  TYPE      DEVICE 
enp1s0  1bb35a4a-ad02-4cad-978a-4a97ea9527cb  ethernet  enp1s0

Mostrar detalles sobre una conexión específica (por ejemplo, enp1s0 ):

$ nmcli connection show enp1s0 

Recuperar parámetros específicos de una conexión (por ejemplo, dirección IP y DNS):

$ nmcli -g ip4.address,ip4.dns connection show enp1s0
192.168.122.169/24
192.168.122.1

Modifique los parámetros de conexión, por ejemplo, cambie de DHCP a conexión manual:

$ sudo nmcli con mod enp1s0 ipv4.method manual ipv4.addresses 192.168.122.169/24 ipv4.dns 192.168.122.1 ipv4.gateway 192.168.122.1

Reinicie la conexión para habilitar nuevas opciones:

$ sudo nmcli con down enp1s0
$ sudo nmcli con up enp1s0

Agregar un nuevo perfil de conexión:

$ sudo nmcli connection add con-name enp7s0 ifname enp7s0 type ethernet ip4 192.168.64.88/24 

nmcli también le permite editar un perfil de conexión de forma interactiva. Esta interfaz proporciona ayuda y autocompletado a través de la pestaña clave, que lo guía a través de las muchas opciones disponibles. Active el editor usando nmcli connection edit CONNECTION-NAME :

$ sudo nmcli connection edit enp7s0 

===| nmcli interactive connection editor |===

Editing existing '802-3-ethernet' connection: 'enp7s0'

Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy.


En el editor, puede definir parámetros específicos con el set dominio. Usa la pestaña clave de autocompletado para ver todas las opciones disponibles:

nmcli> set ipv4.<PRESS TAB>
addresses            dhcp-hostname        dhcp-timeout         dns-search           may-fail             routes
dad-timeout          dhcp-hostname-flags  dns                  gateway              method               route-table
dhcp-client-id       dhcp-iaid            dns-options          ignore-auto-dns      never-default        routing-rules
dhcp-fqdn            dhcp-send-hostname   dns-priority         ignore-auto-routes   route-metric         
nmcli> set ipv4.addresses 192.168.64.90/24

Entonces puedes print los valores actuales:

nmcli> print ipv4.addresses 
ipv4.addresses: 192.168.64.88/24, 192.168.64.90/24

Cuando termine sus cambios, save a la conexión y quit para completar la operación:

nmcli> save
Connection 'enp7s0' (94170029-5620-4f90-ad78-704b21480b1a) successfully updated.
nmcli> quit

Finalmente, reinicie la conexión para que los cambios sean efectivos.

Administrador de red y nmcli son una solución completa para la configuración de redes. Si nunca lo ha usado antes, comience con algunos de los comandos básicos y avance gradualmente a configuraciones más complejas. Consulte las páginas man y los ejemplos para ejecutar tareas específicas.

A continuación, revisemos algunos comandos que lo ayudarán con la solución de problemas de red, comenzando con la resolución de nombres.

El comando nslookup

Cuando se gestionan problemas de conectividad, la resolución de nombres DNS suele ser una fuente de dolores de cabeza. El nslookup La utilidad lo ayuda a verificar y solucionar problemas de resolución de nombres DNS.

Este comando está disponible con bind-utils paquete en sistemas RHEL8 y Fedora. Instálelo con dnf :

$ sudo dnf install -y bind-utils

Para verificar rápidamente la resolución de nombres para un host en particular, use nslookup con el nombre de host como argumento. El comando utiliza la configuración DNS predeterminada para la resolución de nombres:

$ nslookup redhat.com
Server:        192.168.122.1
Address:    192.168.122.1#53

Non-authoritative answer:
Name:    redhat.com
Address: 209.132.183.105

Si falla la resolución de nombres, puede utilizar un servidor de nombres alternativo para la resolución proporcionando su dirección como tercer argumento:

$ nslookup redhat.com 192.168.0.9
Server:        192.168.0.9
Address:    192.168.0.9#53

Non-authoritative answer:
Name:    redhat.com
Address: 209.132.183.105

Esta información es útil para solucionar problemas, ya que ayuda a identificar si el problema es local debido a un servidor específico o algo más extenso.

También puede usarlo para ejecutar consultas DNS inversas proporcionando la dirección IP en lugar de un nombre de host:

$ nslookup 209.132.183.105
105.183.132.209.in-addr.arpa    name = redirect.redhat.com.

El nslookup La utilidad es una herramienta útil para ayudar a solucionar problemas de red relacionados con la resolución de nombres DNS. A continuación, echemos un vistazo a la solución de problemas de sockets de red local.

La utilidad ss

Otra tarea común al solucionar problemas de conectividad de red es determinar si se ha establecido una conexión o si un servicio en particular está disponible en un servidor.

El ss comando, abreviatura de estadísticas de socket , es una herramienta conveniente que muestra información de socket de red. Es el reemplazo moderno de netstat que proporciona una funcionalidad similar, pero incluye algunas funciones adicionales.

Usa ss sin opciones para ver la lista completa de todos los sockets de red establecidos para los tipos de socket TCP, UDP y UNIX.

$ ss
Netid    State     Recv-Q    Send-Q                                               Local Address:Port              Peer Address:Port
u_str    ESTAB     0         0                                                                * 25812                        * 25811
u_str    ESTAB     0         0                                      /run/systemd/journal/stdout 23604                        * 23603
... TRUNCATED OUTPUT
u_str    ESTAB     0         0                                                                * 22566                        * 22171
icmp6    UNCONN    0         0                                                                *:ipv6-icmp                    *:*   
icmp6    UNCONN    0         0                                                                *:ipv6-icmp                    *:*   
tcp      ESTAB     0         0                                                  192.168.122.169:ssh              192.168.122.1:45626

Dado que el comando predeterminado muestra todas las conexiones de red establecidas, esta lista puede ser extensa en una máquina ocupada, con más de mil entradas. Para ayudarte con la solución de problemas, ss proporciona varias opciones de filtrado.

Puede mostrar información de socket para tipos de socket específicos con los siguientes parámetros de línea de comandos:-t para TCP, -u para UDP y -x para UNIX.

Por ejemplo, muestre la información del socket TCP con ss -t :

$ ss -t
State           Recv-Q            Send-Q                         Local Address:Port                        Peer Address:Port
ESTAB           0                 0                            192.168.122.169:ssh                        192.168.122.1:45626

También puede filtrar la lista por nombre de host o dirección IP de origen o destino. Por ejemplo, aquí hay una lista de conexiones establecidas para la dirección IP de destino 192.168.122.1:

$ ss dst 192.168.122.1
Netid         State         Recv-Q          Send-Q                     Local Address:Port                    Peer Address:Port
tcp           ESTAB         0               0                        192.168.122.169:ssh                    192.168.122.1:45626

Estos comandos son útiles para solucionar problemas de conectividad de red en general o entre hosts específicos en la red. Otra aplicación práctica para ss es verificar si los servicios de red están escuchando en la máquina local con la dirección y el puerto correctos. Para verificar los sockets de escucha, use la opción -l :

$ ss -l
Netid   State    Recv-Q   Send-Q                           Local Address:Port                     Peer Address:Port
nl      UNCONN   0        0                                         rtnl:NetworkManager/909                   *
nl      UNCONN   0        0                                         rtnl:systemd-resolve/1122                 *
... TRUNCATED OUTPUT
udp     UNCONN   0        0                                      0.0.0.0:hostmon                       0.0.0.0:*
udp     UNCONN   0        0                                127.0.0.53%lo:domain                        0.0.0.0:
udp     UNCONN   0        0                                    127.0.0.1:323                           0.0.0.0:*
udp     UNCONN   0        0                                         [::]:hostmon                          [::]:*
udp     UNCONN   0        0                                        [::1]:323                              [::]:*
tcp     LISTEN   0        128                                    0.0.0.0:ssh                           0.0.0.0:*
tcp     LISTEN   0        128                                    0.0.0.0:hostmon                       0.0.0.0:*
tcp     LISTEN   0        128                                       [::]:ssh                              [::]:
tcp     LISTEN   0        128                                       [::]:hostmon                          [::]:*

Puede utilizar las mismas opciones de filtrado descritas anteriormente para filtrar tipos de socket específicos. Por ejemplo, para listar todos los sockets TCP que escuchan, ingrese:

$ ss -lt
State            Recv-Q            Send-Q                       Local Address:Port                          Peer Address:Port
LISTEN           0                 128                                0.0.0.0:ssh                                0.0.0.0:*
LISTEN           0                 128                                0.0.0.0:hostmon                            0.0.0.0:
LISTEN           0                 128                                   [::]:ssh                                   [::]:
LISTEN           0                 128                                   [::]:hostmon                               [::]:

En lugar de mostrar el nombre del servicio, como ssh o hostmon , ss puede mostrar números de puerto usando -n opción:

$ ss -ltn
State             Recv-Q            Send-Q                       Local Address:Port                        Peer Address:Port
LISTEN            0                 128                                0.0.0.0:22                               0.0.0.0:
LISTEN            0                 128                                0.0.0.0:5355                             0.0.0.0:
LISTEN            0                 128                                   [::]:22                                  [::]:
LISTEN            0                 128                                   [::]:5355                                [::]:

Finalmente, otra opción útil es -p para mostrar información relacionada con el proceso, como el nombre de usuario y el ID del proceso (PID). Algunos servicios pueden requerir privilegios elevados a través de sudo o como root para listar la información del proceso:

$ sudo ss -tnlp
State      Recv-Q     Send-Q         Local Address:Port           Peer Address:Port
LISTEN     0          128                  0.0.0.0:22                  0.0.0.0:*         users:(("sshd",pid=919,fd=5))
LISTEN     0          128                  0.0.0.0:5355                0.0.0.0:*         users:(("systemd-resolve",pid=1122,fd=13))
LISTEN     0          128                     [::]:22                     [::]:*         users:(("sshd",pid=919,fd=7))
LISTEN     0          128                     [::]:5355                   [::]:*         users:(("systemd-resolve",pid=1122,fd=15))

El ss tool es un comando esencial en la caja de herramientas del administrador del sistema para las tareas de solución de problemas de red. A continuación, echemos un vistazo a tracepath para rastrear la conectividad de red entre hosts.

El comando rastrear ruta

El tracepath El comando es una herramienta de solución de problemas de red que muestra la ruta de conectividad de la red entre el host local y un host remoto, identificando todos los enrutadores utilizados para enrutar el tráfico entre ellos.

En caso de que no pueda conectarse a un servicio de red en un host remoto, tracepath le ayuda a determinar dónde está el problema.

tracepath es un reemplazo para traceroute , que ofrece una funcionalidad similar. La principal diferencia es que tracepath utiliza puertos UDP aleatorios en lugar del protocolo ICMP para el seguimiento, por lo que no requiere privilegios elevados para ejecutarse.

Para el uso básico, proporcione el nombre de host o la dirección IP del host de destino. También puede proporcionar la opción -n para mostrar las direcciones IP de los enrutadores en lugar de sus nombres:

$ tracepath -n sat65server
 1?: [LOCALHOST]                      pmtu 1500
 1:  192.168.122.1                                         0.415ms 
 1:  192.168.122.1                                         0.299ms 
 2:  192.168.10.10                                         0.904ms 
 3:  192.168.88.1                                          1.127ms 
 4:  192.168.0.95                                          2.020ms
     Resume: pmtu 1500 

Si tracepath no se puede conectar a un salto de red, muestra sin respuesta . Por defecto, el número máximo de saltos que intenta es 30, que suele ser suficiente. Puedes cambiar eso con la opción -m .

Supongamos que no recibe respuestas después de un salto en particular. Ese es un buen indicador de dónde ir a continuación para su tarea de solución de problemas. tracepath la información no es definitiva, ya que el tráfico podría estar bloqueado por varias razones. Sin embargo, lo ayuda a reducir el problema y concentrarse en los esfuerzos de resolución.

Por razones de seguridad, muchos enrutadores en Internet bloquean el tráfico, así que tracepath puede no ser tan útil para rastrear la conectividad con los servicios de Internet. Sigue siendo útil para solucionar problemas de la red local.

¿Qué sigue?

En este artículo, exploramos cinco herramientas esenciales de configuración de red y solución de problemas para sistemas Linux. Estas herramientas son poderosas y brindan muchas opciones que son difíciles de cubrir en una sola publicación. Lo alentamos a que los revise y mire la documentación y las páginas man para ver cómo puede incorporarlos a su flujo de trabajo.

Hay otras herramientas útiles de red de Linux, como tcpdump , nmap y firewall-cmd . Estas herramientas están cubiertas en otros artículos sobre Habilitar Sysadmin.

[ ¿La red es difícil de administrar? Consulte Network Automation for Everyone, un libro gratuito de Red Hat. ]


Linux
  1. 5 razones para usar Linux en 2020

  2. 5 errores de novato en Linux

  3. Solución de problemas de hardware en Linux

  4. Comando de eco de Linux

  5. Servicio de sistema operativo Linux 'red'

Una guía para principiantes sobre la resolución de problemas de red en Linux

Mis comandos de solución de problemas de red de Linux

40 comandos de red Linux útiles para administradores de sistemas modernos

Los 50 comandos IP útiles de Linux para administradores de red

Comando de descarga de Linux

Comandos Nmap - 17 comandos básicos para la red Linux