Tabla de Contenidos

205.1 Basic networking configuration

Pertenece a LPI Topic 205: Network Configuration

Direccionamiento IP

Las direcciones IPv4 (direccionamiento IP histórico) se expresan en 4 bytes. Contienen dos datos fundamentales: la dirección de red y la dirección de host (la máquina que se desea identificar).

Aunque el direccionamiento IP histórico ha previsto una segmentación implícita de redes según las clases A, B y C, la disociación entre la dirección de red y la dirección de host se expresa hoy en día con la máscara de subred.

La máscara de subred, expresada también en 4 bytes, se compone de tantos bits a 1 como bits se usen en la dirección para describir la dirección de red en una dirección IP. El resto de los bits se pone a 0.

Ejemplo de dirección IP y máscara de red asociada en decimal

Ejemplo de dirección IP y máscara de red asociada en binario

En este ejemplo, se puede observar que los 24 primeros bits de la máscara son 1, lo que indica que los 24 primeros bits de la dirección IP representan la dirección de red y los 8 restantes la dirección de host. La dirección de red es, por lo tanto, convencionalmente expresada como 192.168.1.0 con todos los bits de la parte host inicializados a 0.

Ha aparecido una nueva forma de escribir la máscara: expresando cuántos bits a 1 tiene dicha máscara. La dirección IP se escribe entonces A.B.C.D/n, siendo n el número de bits a 1 de la máscara asociada a la dirección A.B.C.D. Es la notación CIDR (Classless Internet Domain Routing). La máscara se escribe en un solo número comprendido entre 0 y 32, y por lo tanto puede escribirse rápidamente y codificarse en un número reducido de bits en la memoria de los equipos.

Dirección IP y máscara en notación CIDR:

192.168.1.5/24

ifconfig

Comando que permite realizar y consultar la configuración básica de una interfaz de red.

En Debian pertenece al paquete net-tools. A día de hoy ifconfig se está reemplazando por ip (paquete iproute2)

Activación de una interfaz

ifconfig eth0 up

Desactivación de una interfaz

ifconfig eth0 down

Configuración de una interfaz

Si queremos cambiar la configuración de red de cierta interfaz:

ifconfig eth0 192.168.1.2 netmask 255.255.255.0

Esta configuración no es persistente. Se pierde con el reinicio. Para hacerlo permanente hay que indicarlo en el fichero /etc/network/interfaces.

Interfaces virtuales

Sobre un mismo dispositivo podríamos añadir direcciones IP distintas usando la nomenclatura de dos puntos:

ifconfig eth0:0 192.168.1.20 netmask 255.255.255.0

Visualización de las interfaces

Una interfaz:

ifconfig eth0

Todas la interfaces:

ifconfig -a

Interfaces activas:

ifconfig

Ejemplo de salida de ifconfig:

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.2.10  netmask 255.255.255.0  broadcast 192.168.2.255
        inet6 fe80::a00:27ff:fedd:3798  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:dd:37:98  txqueuelen 1000  (Ethernet)
        RX packets 2757  bytes 219645 (214.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1541  bytes 240732 (235.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

En versiones nuevas, el nombre de los dispositivos de red es diferente. Se utiliza el esquema Predictable Name para identificar las interfaces en términos de buses del hardware. Por ejemplo, enp0s3: en diría que es una tarjeta ethernet; p0 es el bus y s3 el puerto del bus al que está conectada la tarjeta.

Interfaz de red loopback

Es un dispositivo de red virtual que se utiliza para simular el tráfico de red entre procesos del mismo sistema.

También es útiles para hacer comprobaciones de redundancia, autodescubrimiento… Si no tenemos bien configurado el loopback, nos puede fallar la red porque algunas herramientas que utilizan esta interfaz para hacer comprobaciones del estado de la red fallarán.

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 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Se le asigna la dirección 127.0.0.1 y el nombre lo.

Todas las redes del tipo 127.x.x.x están reservadas para dispotivos loopback.

En el archivo /etc/hosts se le asigna el nombre de red localhost:

127.0.0.1 localhost
127.0.1.1 debian10

Según la configuración anterior, llamando tanto a localhost como debian10, nuestra máquina responderá.

route

Comando que permite crear y visualizar las rutas para las interfaces de nuestra máquina local.

Las rutas es la manera que tiene el sistema de saber a dónde enviar los paquetes (de dónde vienen y a dónde van). Para ello, el sistema mantiene una tabla de rutas donde se define la red a la que pertenece nuestra máquina y hacia dónde tiene que enviar los datos cuando van a otra red. Si nuestra máquina pertecene a la red 192.168.0.x y queremos enviar información a la 10.0.0.x, es preciso saber cómo enrutar esos datos. La puerta de salida de nuestro sistema es lo que se conoce como gateway. Por tanto, si queremos enviar de una red a otra, hay que definir cuál es el gateway de nuestro sistema.

Para ver las rutas actuales:

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
link-local      0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Aunque puede haber diferentes gateways para diferentes redes, solo puede haber un gateway por defecto.

Si solo queremos ver direcciones IP y no nombres:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Creación de entrada loopback:

route add -net 127.0.0.1

Crea la ruta hacia la red 192.168.3.0 vía eth0:

route add –net 192.168.3.0 netmask 255.255.255.0 eth0

Es decir, todas las peticiones que vayan a la red 192.168.3.0 pasarán por la interfaz eth0.

Podemos ahorrarnos escribir la máscara de red si utilizamos la notación CIDR: route add -net 192.168.3.0/24 eth0

Eliminar el gateway por defecto:

route del default gw 10.0.2.2

Si eliminamos el gateway por defecto, no se podría salir a ninguna red

Añadir una ruta por defecto:

route add default gw 10.0.2.2

Eliminar una ruta:

route del –net 192.168.3.0 netmask 255.255.255.0 eth0

Interpretando la salida del comando route

Flags Descripción
U UP: la ruta está activa y es utilizable
H Host: indica ruta a un host destino
G Gateway: el destino está accesible a través de una puerta de enlace
D Dynamic: la ruta a sido configurada por un protocolo de enrutamiento
! El kernel ha rechado la ruta

ARP

ARP (Address Resolution Protocol) es el protocolo responsable de encontrar la dirección de hardware (dirección MAC) que corresponde a una determinada dirección IP.

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fe45:b8a7  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:45:b8:a7  txqueuelen 1000  (Ethernet)
        RX packets 533  bytes 47832 (46.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 567  bytes 51428 (50.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

La parte ether indica la dirección MAC del dispositivo de red (08:00:27:45:b8:a7).

arp: comando que permite mostrar y administrar los valores almacenados en la cache ARP. En esta caché solo aparecerán las relaciones que se han tenido que realizar para que la máquina se conectase a otras máquinas. Según vayamos conectándonos a determinadas máquinas, se irá actualizando esa tabla. De esta manera acelerará la manera de encontrar dichas máquinas.

Salida del comando arp:

Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.2.1              ether   0a:00:27:00:00:04   C                     eth1
10.0.2.3                 ether   52:54:00:12:35:03   C                     eth0
10.0.2.2                 ether   52:54:00:12:35:02   C                     eth0

Opciones:

Ejemplo eliminando una entrada:

arp -d 10.0.2.3

Añadir una entrada en la tabla ARP:

arp –s 192.168.1.41 08:00:27:3D:B5:1D

Eliminar una entrada de la tabla ARP:

arp –d 192.168.1.41

Mostrar la tabla ARP:

arp [-a | -e]

/etc/ethers

Este fichero permite la configuración de un gran número de asociaciones estáticas. Si sabemos que vamos a conectarnos a ciertas máquinas, lo definimos y aceleraríamos las conexiones.

El fichero /etc/ethers no existe por defecto. Si queremos hacer uso de él, debemos crearlo.

Estructura:

MAC1         DIRECCION_IP1
MAC2         DIRECCION_IP2
(...)

Ejemplo de fichero /etc/ethers:

08:00:27:3D:B5:1D 192.168.1.40
08:00:27:88:33:1B 192.168.1.41

Esta información la usará ARP.

ip

Comando que permite consultar y configurar los dispositivos de red y tablas de rutas. Busca sustituir los comandos ifconfig, route y arp.

El comando ip pertenece al paquete iproute2

Mostrar dispositivos de red (como ifconfig):

ip addr show
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:45:b8:a7 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
       valid_lft 79228sec preferred_lft 79228sec
    inet6 fe80::a00:27ff:fe45:b8a7/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:dd:37:98 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.10/24 brd 192.168.2.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fedd:3798/64 scope link
       valid_lft forever preferred_lft forever

Se puede abreviar con ip a

Ver el estado de las conexiones:

ip link show

Ejemplo:

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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:45:b8:a7 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:dd:37:98 brd ff:ff:ff:ff:ff:ff

Activación/Desactivación de un interfaz:

ip link set eth0 <up/down>

Configuración de una interfaz

ip addr show <dev>

Ejemplo:

ip addr add 192.168.1.42/24 dev eth0
ip addr del 192.168.1.45/24 dev eth0

Configuración de rutas

ip route show
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.2.0/24 dev eth1 proto kernel scope link src 192.168.2.10

Añadir ruta:

ip route add 10.10.20.0/24 via 192.168.50.100 dev eth0

Eliminar ruta:

ip route del 10.10.20.0/24

Añadir gateway por defecto:

ip route add default via 192.168.50.100

Consulta de tabla ARP:

ip neigh show

Ejemplo:

192.168.2.1 dev eth1 lladdr 0a:00:27:00:00:04 REACHABLE
10.0.2.3 dev eth0 lladdr 52:54:00:12:35:03 STALE
10.0.2.2 dev eth0 lladdr 52:54:00:12:35:02 STALE

iw

Herramienta similar a ip para gestionar dispositivos y redes inalámbricas.

Opciones:

Mostrar dispositivos inalámbricos:

iw dev

Conectar dispositivo inalámbrico a la red “mired”

iw dev wlan0 connect "mired"

wlan0 sería el nombre de la interfaz inalámbrica.

Buscar redes disponibles:

iw dev wlan0 scan

Comprobar el estado de la red:

iw dev wlan0 link

iwconfig

Comando que muestra la información y realiza la configuración de la interfaces inalámbricas. Equivale a ifconfig

iwconfig pertenece al paquete wireless-tools. Herramientas que se están reemplazando por iw.

Opciones:

Conectarse a una red inalámbrica:

iwconfig wlan0 essid "mired"

Canal a utilizar:

iwconfig wlan0 channel 3

Tipo de red a utilizar:

iwconfig wlan0 mode Ad-Hoc

iwlist

Comando que busca las redes inalámbricas disponibles y nos muestra información sobre ellas.

iwlist wlan0 scanning

Tests

¿Podemos asignar 2 direcciones IPs a una misma interfaz de red?

Sí, utilizando la nomenclatura de los dos puntos:

ifconfig eth0:0 192.168.1.10

¿Qué ocurría si al visualizar la tabla de rutas de nuestra máquina observamos que tiene 2 gateways (puertas de enlace)?

No sería ningún problema si son gateways normales, es decir, que no son por defecto. Podemos tener tantos gateways como queramos.

¿Y si tiene 2 gateway (puertas de enlace) por defecto?

Habrá un conflicto de red. El sistema, al buscar el gateway por defecto, se va a encontrar dos diferentes y no sabrá qué hacer.

A network client has an ethernet interface configured with an IP address in the subnet 192.168.0.0/24. This subnet has a router, with the IP address 192.168.0.1, that connects this subnet to the Internet. What needs to be done on the client to enable it to use the router as its default gateway?

What is the command to add another IP address to an interface that already has (at least) one IP address? (Please specify two answer)