109.3 Lección 1
Certificación: |
LPIC-1 |
---|---|
Versión: |
5.0 |
Tema: |
109 Fundamentos de redes |
Objetivo: |
109.3 Resolución de problemas básicos de red |
Lección: |
1 de 2 |
Introducción
Linux tiene unas capacidades de red muy flexibles y potentes. De hecho, los sistemas operativos basados en Linux se utilizan a menudo en los dispositivos de red habituales, incluidos los equipos comerciales más caros. La creación de redes con Linux podría ser una certificación en sí misma. Teniendo esto en cuenta, esta lección sólo va a cubrir algunas herramientas básicas de configuración y resolución de problemas.
Asegúrase de revisar las lecciones sobre protocolos de Internet y configuración de redes persistentes antes de continuar. A continuación, cubriremos las herramientas para configurar y solucionar problemas de redes IPv4 e IPv6.
Aunque no es un objetivo oficial, los packet sniffers como tcpdump
son herramientas útiles para la resolución de problemas. Los rastreadores de paquetes permiten ver y grabar los datos que entran o salen de una interfaz de red. Herramientas como hex viewers y protocol analyzers pueden ser usadas para ver estos paquetes con más detalle de lo que un sniffer de paquetes suele permitir. No estaría de más conocer estos programas.
Sobre el comando ip
El comando ip
es una utilidad bastante reciente que se utiliza para ver y configurar casi todo lo relacionado con las configuraciones de red. Esta lección cubre algunos de los subcomandos más usados de ip
, pero apenas es una mirada de lo que está disponible. Aprender a leer la documentación le ayudará a ser mucho más eficiente con ella.
Cada subcomando de ip
tiene su propia página de manual. La sección SEE ALSO
de la página man de ip
tiene una lista de ellos:
$ man ip ... SEE ALSO ip-address(8), ip-addrlabel(8), ip-l2tp(8), ip-link(8), ip-maddress(8), ip-monitor(8), ip-mroute(8), ip-neighbour(8), ip-netns(8), ip- ntable(8), ip-route(8), ip-rule(8), ip-tcp_metrics(8), ip-token(8), ip- tunnel(8), ip-xfrm(8) IP Command reference ip-cref.ps ...
En lugar de mirar esto cada vez que necesite la página man, simplemente añada -
y el nombre del subcomando a ip
, por ejemplo, man ip-route
.
Otra fuente de información es la función de ayuda. Para ver la ayuda integrada, añada help
después del subcomando:
$ ip address help Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ] [ CONFFLAG-LIST ] ip address del IFADDR dev IFNAME [mngtmpaddr] ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ master DEVICE ] [ type TYPE ] [ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up] [ vrf NAME ] ] ip address {showdump|restore} IFADDR := PREFIX | ADDR peer PREFIX ...
Revisión de máscaras de red y enrutamiento
IPv4 e IPv6 son lo que se conoce como protocolos enrutados. Esto significa que están diseñados de tal manera que los diseñadores de redes pueden controlar el flujo de tráfico. Ethernet no es un protocolo enrutable. Esto significa que si se conecta un grupo de dispositivos usando sólo Ethernet, hay muy poco que se pueda hacer para controlar el flujo de tráfico de la red. Cualquier medida para controlar el tráfico acabaría siendo similar a la de los protocolos enrutables y de enrutamiento actuales.
Los protocolos enrutables permiten a los diseñadores de redes segmentarlas para reducir los requisitos de procesamiento de los dispositivos de conectividad, proporcionar redundancia y gestionar el tráfico.
Las direcciones IPv4 e IPv6 tienen dos secciones. El primer conjunto de bits constituye la sección de red, mientras que el segundo conjunto constituye la parte de host. El número de bits que componen la parte de red viene determinado por la máscara de red (también llamada máscara de subred). A veces también se denomina longitud del prefijo. Independientemente de cómo se llame, es el número de bits que la máquina trata como la parte de red de la dirección. Con IPv4, a veces se especifica en notación decimal con puntos.
A continuación se muestra un ejemplo utilizando IPv4. Observe cómo los dígitos binarios mantienen su valor de posición en los octetos incluso cuando se divide por la máscara de red.
192.168.130.5/20 192 168 130 5 11000000 10101000 10000010 00000101 20 bits = 11111111 11111111 11110000 00000000 Network = 192.168.128.0 Host = 2.5
La parte de red de una dirección es utilizada por las máquinas IPv4 o IPv6 para buscar en su tabla de enrutamiento la interfaz por la que debe enviarse un paquete. Cuando un host IPv4 o IPv6 con el enrutamiento activado recibe un paquete que no es para el propio host, intenta hacer coincidir la parte de red del destino con una red en la tabla de enrutamiento. Si se ubica una entrada que coincida, envía el paquete al destino especificado en la tabla de enrutamiento. Si no se encuentra ninguna entrada y se ha configurado una ruta por defecto, se envía a la ruta por defecto. Si no se localiza ninguna entrada y no se ha configurado ninguna ruta por defecto, el paquete se descarta.
Configurar una interfaz
Hay dos herramientas que cubriremos que puede usar para configurar una interfaz de red: ifconfig
o ip
. El programa ifconfig
, aunque sigue siendo ampliamente utilizado, se considera una herramienta heredada y puede no estar disponible en los sistemas más nuevos.
Tip
|
En las nuevas distribuciones de Linux, la instalación del paquete |
Antes de configurar una interfaz, debe saber qué interfaces están disponibles. Hay varias formas de hacerlo. Una forma es utilizar la opción -a
de ifconfig
:
$ ifconfig -a
Otra forma es con ip
. A veces verá ejemplos con ip addr
, ip a
, y algunos con ip address
, son sinónimos. Oficialmente, el subcomando es ip address
. Esto significa que si desea ver la página del manual, debe utilizar man ip-address
y no man ip-addr
.
El subcomando link
para ip
listará los enlaces de interfaz disponibles para su configuración:
$ 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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:18:57 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:ab:11:3e brd ff:ff:ff:ff:ff:ff
Asumiendo que el sistema de archivos sys
está montado, también puede listar el contenido de /sys/class/net
:
$ ls /sys/class/net enp0s3 enp0s8 lo
Para configurar una interfaz con ifconfig
, debe iniciar la sesión como root o utilizar una herramienta como sudo
para ejecutar el comando con privilegios de root. Siga el siguiente ejemplo:
# ifconfig enp1s0 192.168.50.50/24
La versión de Linux de ifconfig
es flexible con la forma de especificar la máscara de subred:
# ifconfig eth2 192.168.50.50 netmask 255.255.255.0 # ifconfig eth2 192.168.50.50 netmask 0xffffff00 # ifconfig enp0s8 add 2001:db8::10/64
Revise que con IPv6 usted ha utilizado la palabra clave add
. Si no precede una dirección IPv6 con add
, recibirá un mensaje de error.
El siguiente comando configura una interfaz con ip
:
# ip addr add 192.168.5.5/24 dev enp0s8 # ip addr add 2001:db8::10/64 dev enp0s8
Con ip
, se utiliza el mismo comando tanto para IPv4 como para IPv6.
Configuración de opciones de bajo nivel
El comando ip link
se utiliza para configurar la interfaz de bajo nivel o los ajustes de protocolo como VLANs, ARP, o MTUs, o deshabilitar una interfaz.
Una tarea común para ip link
es desactivar o activar una interfaz. Esto también se puede hacer con ifconfig
:
# ip link set dev enp0s8 down # ip link show dev enp0s8 3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000 link/ether 08:00:27:ab:11:3e brd ff:ff:ff:ff:ff:ff # ifconfig enp0s8 up # ip link show dev enp0s8 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:ab:11:3e brd ff:ff:ff:ff:ff:ff
A veces puede ser necesario ajustar la MTU de una interfaz. Al igual que con la habilitación/deshabilitación de interfaces, esto puede hacerse con ifconfig
o ip link
:
# ip link set enp0s8 mtu 2000 # ip link show dev enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:53:59 brd ff:ff:ff:ff:ff:ff # ifconfig enp0s3 mtu 1500 # ip link show dev enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000 link/ether 08:00:27:54:53:59 brd ff:ff:ff:ff:ff:ff
La tabla de enrutamiento
Los comandos route
, netstat -r
, o ip route
pueden ser utilizados para ver su tabla de rutas. Si desea modificar sus rutas, debe utilizar route
o ip route
. A continuación se muestran ejemplos de visualización de una tabla de enrutamiento:
$ 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 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8 $ ip route default via 10.0.2.2 dev enp0s3 proto dhcp metric 100 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 192.168.150.0/24 dev enp0s8 proto kernel scope link src 192.168.150.200 $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3 10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 192.168.150.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8
Fíjese en que no hay ninguna salida relativa a IPv6. Si desea ver su tabla de enrutamiento para IPv6, debe utilizar route -6
, netstat -6r
, o ip -6 route
.
$ route -6 Kernel IPv6 routing table Destination Next Hop Flag Met Ref Use If 2001:db8::/64 [::] U 256 0 0 enp0s8 fe80::/64 [::] U 100 0 0 enp0s3 2002:a00::/24 [::] !n 1024 0 0 lo [::]/0 2001:db8::1 UG 1 0 0 enp0s8 localhost/128 [::] Un 0 2 84 lo 2001:db8::10/128 [::] Un 0 1 0 lo fe80::a00:27ff:fe54:5359/128 [::] Un 0 1 0 lo ff00::/8 [::] U 256 1 3 enp0s3 ff00::/8 [::] U 256 1 6 enp0s8
Se ha omitido un ejemplo de netstat -r6
porque su salida es idéntica a route -6
. Parte de la salida del comando route
anterior se explica por sí misma. La columna Flag
proporciona alguna información sobre la ruta. La columna flags, U
indica que la ruta está activa. !
significa que la ruta ha sido rechazada, es decir, una ruta con una bandera !
no será utilizada. n
significa que la ruta no ha sido cacheada. El kernel mantiene una caché de rutas para búsquedas más rápidas por separado de todas las rutas conocidas. G
indica una puerta de enlace. La columna Metric
o Met
no es utilizada por el kernel. Se refiere a la distancia administrativa al objetivo. Esta distancia administrativa es utilizada por los protocolos de enrutamiento para determinar las rutas dinámicas. La columna Ref
es el recuento de referencias, o el número de usos de una ruta. Al igual que Metric
, no es utilizada por el kernel de Linux. La columna Use
muestra el número de búsquedas de una ruta.
En la salida de netstat -r
, MSS
indica el tamaño máximo de segmento para las conexiones TCP sobre esa ruta. La columna Window
muestra el tamaño predeterminado de la ventana TCP. La columna irtt
muestra el tiempo de ida y vuelta de los paquetes en esta ruta.
La salida de ip route
o ip -6 route
es la siguiente:
-
Destino.
-
Dirección opcional seguida de interfaz.
-
El protocolo de enrutamiento utilizado para añadir la ruta.
-
El ámbito de la ruta. Si se omite, se trata de un ámbito global o de una puerta de enlace.
-
La métrica de la ruta. Esta es utilizada por los protocolos de enrutamiento dinámico para determinar el coste de la ruta. La mayoría de los sistemas no la utilizan.
-
Si es una ruta IPv6, la preferencia de ruta RFC4191.
Algunos ejemplos lo aclararán:
- Ejemplo de IPv4
-
default via 10.0.2.2 dev enp0s3 proto dhcp metric 100
-
El destino es la ruta por defecto.
-
La dirección de la puerta de enlace es
10.0.2.2
alcanzable a través de la interfazenp0s3
. -
Ha sido añadida a la tabla de enrutamiento por DHCP.
-
Se ha omitido el ámbito, por lo que es global.
-
La ruta tiene un valor de coste de
100
. -
No hay preferencia de ruta IPv6.
-
- Ejemplo de IPv6
-
fc0::/64 dev enp0s8 proto kernel metric 256 pref medium
-
El destino es
fc0::/64
. -
Es alcanzable a través de la interfaz
enp0s8
. -
Ha sido añadida automáticamente por el kernel.
-
Se ha omitido el ámbito, por lo que es global.
-
La ruta tiene un valor de coste de
256
. -
Tiene una preferencia IPv6 de
media
.
-
Gestión de rutas
Las rutas pueden ser gestionadas utilizando route
o ip route
. A continuación se muestra un ejemplo de cómo añadir y eliminar una ruta utilizando el comando route
. Con route
, debe utilizar la opción -6
para IPv6:
# ping6 -c 2 2001:db8:1::20 connect: Network is unreachable # route -6 add 2001:db8:1::/64 gw 2001:db8::3 # ping6 -c 2 2001:db8:1::20 PING 2001:db8:1::20(2001:db8:1::20) 56 data bytes 64 bytes from 2001:db8:1::20: icmp_seq=1 ttl=64 time=0.451 ms 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.438 ms # route -6 del 2001:db8:1::/64 gw 2001:db8::3 # ping6 -c 2 2001:db8:1::20 connect: Network is unreachable
A continuación se muestra el mismo ejemplo utilizando el comando ip route
:
# ping6 -c 2 2001:db8:1:20 connect: Network is unreachable # ip route add 2001:db8:1::/64 via 2001:db8::3 # ping6 -c 2 2001:db8:1:20 PING 2001:db8:1::20(2001:db8:1::20) 56 data bytes 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.529 ms 64 bytes from 2001:db8:1::20: icmp_seq=2 ttl=64 time=0.438 ms # ip route del 2001:db8:1::/64 via 2001:db8::3 # ping6 -c 2 2001:db8:1::20 connect: Network is unreachable
Ejercicios guiados
-
¿Qué comandos se pueden utilizar para listar las interfaces de red?
-
¿Cómo se desactiva temporalmente una interfaz? ¿Cómo se vuelve a habilitar?
-
¿Cuál de las siguientes es una máscara de subred razonable para IPv4?
0.0.0.255
255.0.255.0
255.252.0.0
/24
-
¿Qué comandos puede utilizar para verificar su ruta por defecto?
-
¿Cómo se añade una segunda dirección IP a una interfaz?
Ejercicios de exploración
-
¿Qué subcomando de
ip
se puede utilizar para configurar el etiquetado vlan? -
¿Cómo se configura una ruta por defecto?
-
¿Cómo se puede obtener información detallada sobre el comando
ip neighbour
? ¿Qué sucede si lo ejecuta por sí mismo? -
¿Cómo se hace una copia de seguridad de la tabla de enrutamiento? ¿Cómo se restaura desde ella?
-
¿Qué subcomando
ip
puede utilizarse para configurar las opciones del árbol de expansión?
Resumen
La red se configura normalmente mediante los scripts de inicio del sistema o un ayudante como NetworkManager. La mayoría de las distribuciones tienen herramientas que editarán los archivos de configuración de los scripts de inicio por usted. Consulte la documentación de su distribución para más detalles.
Ser capaz de configurar manualmente la red le permite solucionar los problemas de forma más eficaz. Es útil en entornos mínimos utilizados para cosas como la restauración de copias de seguridad o la migración a un nuevo hardware.
Las utilidades que se cubren en esta sección tienen más funcionalidades que las ya anteriormente mencionadas en la lección. Valdría la pena hojear la página de manual de cada una para familiarizarse con las opciones disponibles. Los comandos ss
e ip
son herramientas modernas y recomendadas, mientras que el resto de las que se cubren, aunque todavía son de uso común, se consideran herramientas heredadas.
La mejor manera de familiarizarse con las herramientas cubiertas es la práctica. Utilizando un ordenador con una cantidad modesta de RAM, es posible configurar un laboratorio de red virtual utilizando máquinas virtuales con las que se puede practicar. Tres máquinas virtuales son suficientes para familiarizarse con las herramientas enumeradas.
Los comandos utilizados en esta lección incluyen:
ifconfig
-
Utilidad heredada para configurar las interfaces de red y revisar sus estados.
ip
-
Moderna y versátil utilidad para configurar las interfaces de red y revisar sus estados.
netstat
-
Comando heredado utilizado para ver las conexiones de red actuales y la información de las rutas.
route
-
Comando heredado utilizado para ver o modificar la tabla de enrutamiento de un sistema.
Respuestas a los ejercicios guiados
-
¿Qué comandos se pueden utilizar para listar las interfaces de red?
Cualquiera de los siguientes comandos:
ip link
,ifconfig -a
, ols /sys/class/net
-
¿Cómo se desactiva temporalmente una interfaz? ¿Cómo se vuelve a habilitar?
Puede utilizar
ifconfig
oip link
:Utilizando
ifconfig
:$ ifconfig wlan1 down $ ifconfig wlan1 up
Utilizando
ip link
:$ ip link set wlan1 down $ ip link set wlan1 up
-
¿Cuál de las siguientes es una máscara de subred razonable para IPv4?
-
255.252.0.0
-
/24
Las otras máscaras de las listas no son válidas porque no separan la dirección limpiamente en dos secciones, la primera parte define la red y la segunda el host. Los bits más a la izquierda de una máscara siempre serán
1
y los bits de la derecha siempre serán0
.
-
-
¿Qué comandos puede utilizar para verificar su ruta por defecto?
Puede utilizar
route
,netstat -r
oip route
:$ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default server 0.0.0.0 UG 600 0 0 wlan1 192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 wlan1 $ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default server 0.0.0.0 UG 0 0 0 wlan1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan1 $ ip route default via 192.168.1.20 dev wlan1 proto static metric 600 192.168.1.0/24 dev wlan1 proto kernel scope link src 192.168.1.24 metric 600
-
¿Cómo se añade una segunda dirección IP a una interfaz?
Se usaría
ip address
oifconfig
. Tomando en cuenta queifconfig
es una herramienta heredada:$ ip addr add 172.16.15.16/16 dev enp0s9 label enp0s9:sub1
La parte del comando
label enp0s9:sub1
añade un alias aenp0s9
. Si no usa la herramienta heredadaifconfig
puede omitir esto. Si lo hace, el comando seguirá funcionando, pero la dirección que acaba de añadir no aparecerá en la salida deifconfig
.También puede utilizar
ifconfig
:$ ifconfig enp0s9:sub1 172.16.15.16/16
Respuestas a los ejercicios de exploración
-
¿Qué subcomando de
ip
se puede utilizar para configurar el etiquetado vlan?ip link
tiene una opción devlan
que puede ser utilizada. A continuación se muestra un ejemplo de etiquetado de una subinterfaz con vlan 20.# ip link add link enp0s9 name enp0s9.20 type vlan id 20
-
¿Cómo se configura una ruta por defecto?
Utilizando
route
oip route
:# route add default gw 192.168.1.1 # ip route add default via 192.168.1.1
-
¿Cómo se puede obtener información detallada sobre el comando
ip neighbour
? ¿Qué sucede si lo ejecuta por sí mismo?Leyendo la página de man:
$ man ip-neigbour
Se muestra la caché ARP:
$ ip neighbour 10.0.2.2 dev enp0s3 lladdr 52:54:00:12:35:02 REACHABLE
-
¿Cómo se hace una copia de seguridad de la tabla de enrutamiento? ¿Cómo se restaura desde ella?
El siguiente ejemplo muestra la copia de seguridad y la restauración de una tabla de enrutamiento:
# ip route save > /root/routes/route_backup # ip route restore < /root/routes/route_backup
-
¿Qué subcomando
ip
puede utilizarse para configurar las opciones del árbol de expansión?De forma similar a la gestión de la configuración de las vlan,
ip link
puede configurar el árbol de expansión utilizando el tipobridge
. El ejemplo muestra la adición de una interfaz virtual con una prioridad STP de 50:# ip link add link enp0s9 name enp0s9.50 type bridge priority 50