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
ol
- controla el estado de los dispositivos de redaddress
oa
- manipula las direcciones IP en los dispositivosroute
or
- maneja las entradas de la tabla de enrutamientoneighbor
on
- 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 Managernetworking
- muestra, activa y desactiva la creación de redesradio
- muestra, habilita y deshabilita WiFi y WWANdevice
- muestra y manipula el estado de los dispositivos de redconnection
- 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. ]