====== Laboratorios de GNS3 ======
===== Fundamentos de redes IP =====
==== Máscara de red y subnetting ====
La máscara de red permite identificar qué parte de una dirección IP es de red.
* ''/24'' -> 24 bits para la red, 8 para los hosts
* ''/25'' -> 25 bits para la red, 7 para los hosts
* ''/26'' -> 26 bits para la red, 6 para los hosts
* ''/27'' -> 27 bits de red, 5 de host
Poniendo el ejemplo de ''/24'', hay 8 bits para hosts, así que podría representar 2⁸ = 256 direcciones.
/24
11111111.11111111.11111111.00000000
└───────────┬─────────────┘└──┬───┘
24 bits 8 bits
red host
En en caso de ''/26'', hay 6 bits para hosts, así que podría representar 2⁶ = 64 direcciones.
Como una ''/24'' tiene 256 direcciones:
256 / 64 = 4
obtenemos cuatro subredes:
0
64
128
192
Es decir:
10.0.0.0/26
10.0.0.64/26
10.0.0.128/26
10.0.0.192/26
De cada subred, dos no son utilizables para hosts porque la primera se utiliza como dirección de red y la última como broadcast.
^ CIDR ^ Direcciones por subred ^ Salto ^
| /24 | 256 | 256 |
| /25 | 128 | 128 |
| /26 | 64 | 64 |
| /27 | 32 | 32 |
En resumen, los bits de host determinan el tamaño de la subred:
* 8 bits → 256 direcciones
* 7 bits → 128
* 6 bits → 64
* 5 bits → 32
De ahí salen todos los saltos que hemos estado viendo.
En resumen, un host necesita conocer su máscara de red para determinar hasta dónde llega su red local. Si no es su red, pregunta al //gateway//:
IP destino
│
▼
aplicar mi máscara
│
▼
¿misma red que yo?
/ \
SÍ NO
│ │
▼ ▼
ARP destino ARP gateway
│ │
▼ ▼
enviar directamente al router
==== Cálculo de subred ====
===== Dos PCs conectados directamente (aquí empieza todo) =====
Conectamos dos VPCS usando cable Ethernet:
┌────────┐ ┌────────┐
│ │ │ │
│ PC1 │────────│ PC2 │
│ │ │ │
└────────┘ └────────┘
Antes de configurar una dirección IP, cada host estará así:
PC1> show
NAME IP/MASK GATEWAY MAC LPORT RHOST:PORT
PC1 0.0.0.0/0 0.0.0.0 00:50:79:66:68:00 10004 127.0.0.1:10005
fe80::250:79ff:fe66:6800/64
Cuando VPCS muestra una dirección IP ''0.0.0.0'' sencillamente está diciendo que no tiene una dirección IP configurada.
''127.0.0.1:10005'' es información relacionada con cómo GNS3/VPCS está gestionando la consola/comunicación del VPCS con el entorno local. Por ejemplo, nos podríamos conectar sin usar el menú **Consola** de GNS3 mediante ''telnet 127.0.0.1 10005''
Es decir:
PC1
┌────────────────────┐
│ │
│ IPv4: — │ ← todavía ninguna
│ │
│ MAC: │
│ 00:50:79:66:68:00 │
│ │
└─────────┬──────────┘
│
interfaz
│
│
PC2
Algo fundamental: **MAC** e **IP** no son lo mismo.
* La MAC identifica una interfaz en el nivel de enlace Ethernet.
* La IP identifica una interfaz dentro de una red IP.
Simplificando mucho por ahora:
* MAC: "¿A qué interfaz Ethernet tengo que entregar esta trama?"
* IP: "¿A qué host/red quiero llegar?"
==== Configuración de dirección IP ====
En la consola de PC1 ejecutamos:
ip 10.0.0.1/24
Y vemos cómo ha quedado la configuración:
PC1> show
NAME IP/MASK GATEWAY MAC LPORT RHOST:PORT
PC1 10.0.0.1/24 0.0.0.0 00:50:79:66:68:00 10004 127.0.0.1:10005
fe80::250:79ff:fe66:6800/64
También podríamos haber usado ''show ip'' que representa la información en vertical
Estamos diciendo a PC1: "Esta interfaz pertenece a la red IPv4 10.0.0.0/24 y su dirección dentro de esa red es 10.0.0.1."
El ''/24'' es la máscara de red.
Por ahora podemos visualizarlo así:
10.0.0.1/24
│ │
│ └── 24 bits identifican la red
│
└────────── dirección de la interfaz
La red será ''10.0.0.0/24''
y, simplificando por ahora, podremos utilizar:
10.0.0.1
10.0.0.2
10.0.0.3
...
10.0.0.254
como direcciones de hosts.
**¿Qué significa ''/24''?**
La máscara es fundamental para todo lo que viene después. ''/24'' significa que los primeros 24 bits de la dirección IPv4 representan la red.
Una IPv4 tiene 32 bits:
10.0.0.1
00001010 . 00000000 . 00000000 . 00000001
←──────────── 24 ─────────────→ ←── 8 ──→
red host
Por eso ''10.0.0.1/24'' pertenece a ''10.0.0.0/24''
Y PC1 ocupa dentro de esa red:
10.0.0.0/24
┌──────────────────────┐
Red │ 10.0.0.0 │
│ │
Host │ 10.0.0.1 ← PC1 │
│ 10.0.0.2 │
│ 10.0.0.3 │
│ ... │
│ 10.0.0.254 │
│ │
Broadcast │ 10.0.0.255 │
└──────────────────────┘
Todavía no hace falta memorizar las direcciones especiales. Las entenderemos cuando lleguemos al //broadcast//.
**¿Por qué GATEWAY sigue siendo 0.0.0.0?**
Hasta que no exista un //router// no tiene sentido configurar una dirección de //gateway// o puerta de enlace.
Ahora configuraremos PC2 con la dirección IP ''10.0.0.2'' en la misma subred que PC1:
ip 10.0.0.2/24
Ahora tenemos dos //hosts// IPv4 conectados en la misma red:
----------- 10.0.0.0/24 -------------
. ┌────────┐ ┌────────┐ .
. │ PC1 │ │ PC2 │ .
. │ │────────│ │ .
. │10.0.0.1│ │10.0.0.2│ .
. └────────┘ └────────┘ .
--------------------------------------
==== Comprobar conectividad ====
La red Ethernet utiliza direcciones MAC, no direcciones IP para transmitir datos. Entonces, ¿cómo funciona un ''ping 10.0.0.2'' desde PC1?
Este es precisamente uno de los trabajos de **ARP**.
Si nos conectamos a PC1 y ejecutamos ''arp'' veremos el siguiente mensaje:
arp table is empty
Si ahora hacemos ''ping'':
C1> ping 10.0.0.2
84 bytes from 10.0.0.2 icmp_seq=1 ttl=64 time=0.192 ms
84 bytes from 10.0.0.2 icmp_seq=2 ttl=64 time=0.392 ms
84 bytes from 10.0.0.2 icmp_seq=3 ttl=64 time=0.380 ms
84 bytes from 10.0.0.2 icmp_seq=4 ttl=64 time=0.266 ms
84 bytes from 10.0.0.2 icmp_seq=5 ttl=64 time=0.337 ms
PC1> arp
00:50:79:66:68:01 10.0.0.2 expires in 112 seconds
La tabla ARP ya sabe cuál es la MAC de PC2 tras hacer el ''ping''.
Si usásemos Wireshark para inspeccionar los paquetes en ese momento, podríamos ver el tráfico ARP:
No. 1
Time 0.000000
Source Private 66:68:00
Destination Broadcast
Protocol ARP
Info Who has 10.0.0.2? Tell 10.0.0.1
Más o menos, esto es lo que sucede:
PRIMER PING
PC1 PC2
│ │
│ 1. "¿Cuál es la MAC de 10.0.0.2?" │
│ ─────────────── ARP Request ──────────────────► │
│ │
│ 2. "10.0.0.2 tiene MAC ...01" │
│ ◄────────────── ARP Reply ───────────────────── │
│ │
│ 3. Ahora ya sé dónde entregar Ethernet │
│ ─────────────── ICMP Echo Request ────────────► │
│ │
│ 4. Respuesta │
│ ◄────────────── ICMP Echo Reply ─────────────── │
El resumen:
PC1
│
│ "Necesito llegar a 10.0.0.2"
│
▼
Tabla ARP
│
│ "No sé qué MAC corresponde"
│
▼
ARP Request
│
│ "¿Quién tiene 10.0.0.2?"
│
▼
PC2
│
│ "10.0.0.2 soy yo"
│
│ "Mi MAC es ..."
▼
ARP Reply
│
▼
PC1 aprende la asociación
│
▼
IP → MAC
│
▼
Ahora sí puede construir
la trama Ethernet
**¿Cómo puede PC1 preguntar “¿quién tiene 10.0.0.2?” si precisamente todavía no conoce la MAC de esa máquina?**
Para eso envía mensajes //broadcast//(''ff:ff:ff:ff:ff:ff''), es decir, a toda la red en busca de que alguien le responda.
Las tramas Ethernet podrían representarse asi:
┌───────────────────────────────────────────┐
│ Ethernet │
│ │
│ MAC origen = 00:50:79:66:68:01 │
│ MAC destino = 00:50:79:66:68:00 │
│ Type = IPv4 │
│ │
│ ┌───────────────────────────────────────┐ │
│ │ IPv4 │ │
│ │ │ │
│ │ IP origen = 10.0.0.2 │ │
│ │ IP destino = 10.0.0.1 │ │
│ │ Protocol = ICMP │ │
│ │ │ │
│ │ ┌───────────────────────────────────┐ │ │
│ │ │ ICMP │ │ │
│ │ │ Echo Reply │ │ │
│ │ └───────────────────────────────────┘ │ │
│ └───────────────────────────────────────┘ │
└───────────────────────────────────────────┘
===== PCs conectados a un switch =====
El switch trabaja principalmente con direcciones MAC, no con direcciones IP.
Por ejemplo, si tenemos:
SWITCH
┌───────────┐
PC-A ─────┤ puerto 1 │
PC-B ─────┤ puerto 2 │
PC-C ─────┤ puerto 3 │
└───────────┘
Su información fundamental será algo parecido a:
MAC de dispositivo Puerto
------------------ ------
AA:AA:AA:AA:AA:AA 1
BB:BB:BB:BB:BB:BB 2
CC:CC:CC:CC:CC:CC 3
Red Ethernet
┌─────────┐ ┌─────────┐ ┌─────────┐
│ PC1 │ │ PC2 │ │ PC3 │
│ │ │ │ │ │
│10.0.0.10│ │10.0.0.20│ │10.0.0.30│
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
│ │ │
└─────┐ ┌──┘ ┌────────────┘
│ │ │
┌─────────────┐
│ Switch │
└─────────────┘
El "Ethernet switch" que viene con GNS3 es un dispositivo simplificado que simula conmutación Ethernet de capa 2, así que no tiene un sistema operativo al que podamos acceder por consola como pasa con los switch IOS de Cisco.
ping
↓
ICMP
↓
IP
↓
ARP
↓
Ethernet
↓
MAC
↓
Switch
↓
cable/interfaz
La idea fundamental con los switch:
TRAMA ENTRANTE
│
▼
┌─────────────┐
│ SWITCH │
└──────┬──────┘
│
mira MAC destino
│
┌────────┴────────┐
│ │
conocida desconocida
│ │
▼ ▼
puerto concreto flooding
Resumen en tabla del cmoportamiento de un switch:
^ Situación ^ Qué mira el switch ^ Qué hace ^
| Llega una trama | MAC origen | Aprende MAC → puerto |
| MAC destino conocida | MAC destino | Envía la trama solo por ese puerto |
| MAC destino desconocida | MAC destino | Hace flooding |
| MAC destino = broadcast | ff:ff:ff:ff:ff:ff | Hace flooding |
| ARP Request | Es broadcast Ethernet | Lo inunda por los demás puertos |
| ICMP unicast después de aprender | MAC destino conocida | Lo envía solamente hacia el destino |
Importante, la tabla ARP de los dispositivos asocian direcciones IP con direcciones MAC. La tabla MAC del switch mantiene una relación dee direcciones MAC y puertos.
===== Switches interconectados =====
Topología:
RED 192.168.10.0/24
PC1 PC2
.10 .20
│ │
│ │
▼ ▼
┌───────┐ ┌───────┐
│ SW1 │────────────────────────────│ SW2 │
└───────┘ └───────┘
Al hacer desde PC1 un ping a PC2:
ARP Request
PC1 ─────────► SW1
│
│
▼
SW2
│
▼
PC2
Entre PC1 y PC2, la trama Ethernet sigue siendo esencialmente la misma trama de broadcast que está atravesando ambos switches. Los switches están **reenviando la trama**, no actuando como routers puesto que **seguimos dentro de la misma red**.
SWITCH
────────────────────────────
Extiende una red Ethernet
Reenvía tramas
Utiliza MAC
No necesita routing IP
ROUTER
────────────────────────────
Conecta redes IP
Reenvía paquetes IP
Utiliza tabla de routing
Cambia la encapsulación Ethernet
Entender el concepto de **dominio de broadcast**.
===== Dos PCs conectados en diferentes redes =====
Cuando el destino IP está en otra red, ese dispositivo normalmente es el gateway/router, no el host final.
Necesitamos introducir un tercer dispositivo que pueda actuar como router entre:
10.0.0.0/24
y:
10.0.1.0/24
Escenario:
red 10.0.0.0/24 red 10.0.1.0/24
PC1 ─────────────── Router ─────────────── PC2
10.0.0.1 ? ? 10.0.1.2
Cuando hagamos un ping 10.0.0.2 desde PC1, el razonamiento sería:
10.0.1.2
↓
no pertenece a 10.0.0.0/24
↓
debo usar mi gateway
↓
10.0.0.254
Tenemos la siguiente topología:
c3725
┌────────────┐
│ │
PC1 Fa0/0 ──────────┤ Fa0/0 │
│ │
PC2 Fa0/1 ──────────┤ Fa0/1 │
│ │
└────────────┘
Y queremos llegar a:
10.0.0.0/24 10.0.1.0/24
PC1 c3725 PC2
10.0.0.1 Fa0/0 Fa0/1 10.0.1.2
│ │ │ │
└──────────────────┘ └────────────────┘
Así el router tendrá una interfaz dentro de cada red.
Arrancamos el router y vamos a su consola. Para ver el estado actual:
R1#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset administratively down down
FastEthernet0/1 unassigned YES unset administratively down down
Configuraremos su primera interfaz (FastEthernet0/0):
configure terminal
interface FastEthernet0/0
ip address 10.0.0.254 255.255.255.0
no shutdown # Encendemos administrativamente la interfaz
end
Si ejecutamos de nuevo ''show ip interface brief'':
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 10.0.0.254 YES manual up up
FastEthernet0/1 unassigned YES unset administratively down down
Para la otra interfaz de red (FastEthernet0/1):
configure terminal
interface FastEthernet0/1
ip address 10.0.1.254 255.255.255.0
no shutdown
end
Y debería quedar todo así:
R1#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 10.0.0.254 YES manual up up
FastEthernet0/1 10.0.1.254 YES manual up up
Si queremos comprobar qué redes conoce este router, ejecutamos ''show ip route'' (para ver la tabla de enrutamiento):
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 2 subnets
C 10.0.0.0 is directly connected, FastEthernet0/0
C 10.0.1.0 is directly connected, FastEthernet0/1
¿Y si es una red que el router no conoce?
R1#show ip route 10.0.2.1
% Subnet not in table
Ahí vemos que la red 10.0.2.1 no está en su tabla de enrutamiento.
Entonces, si hacemos ''ping 10.0.2.1'' desde PC1:
PC1> ping 10.0.2.1
*10.0.0.254 icmp_seq=1 ttl=255 time=9.419 ms (ICMP type:3, code:1, Destination host unreachable)
*10.0.0.254 icmp_seq=2 ttl=255 time=0.997 ms (ICMP type:3, code:1, Destination host unreachable)
*10.0.0.254 icmp_seq=3 ttl=255 time=10.336 ms (ICMP type:3, code:1, Destination host unreachable)
*10.0.0.254 icmp_seq=4 ttl=255 time=10.270 ms (ICMP type:3, code:1, Destination host unreachable)
*10.0.0.254 icmp_seq=5 ttl=255 time=12.035 ms (ICMP type:3, code:1, Destination host unreachable)
==== Configurar gateway en los PCs ====
Aunque hayamos configurado el router para que sepa perfectamente cómo llegar de una red a la otra, los //hosts// todavía no saben que deben entregarle al router el tráfico destinado a la otra red. Debemos configurar el //gateway// en cada uno.
Si no indicamos el //gateway//, esto es lo que veremos al hacer ''ping 10.0.1.2'':
PC1> ping 10.0.1.2
No gateway found
Configuremos su gateway:
ip 10.0.0.1/24 10.0.0.254
PC1 quedará así:
PC1> show ip
NAME : PC1[1]
IP/MASK : 10.0.0.1/24
GATEWAY : 10.0.0.254
DNS :
MAC : 00:50:79:66:68:00
LPORT : 10002
RHOST:PORT : 127.0.0.1:10003
MTU : 1500
Vamos a hacer lo mismo con PC2:
ip 10.0.1.2/24 10.0.1.254
Comprobamos:
PC2> show ip
NAME : PC2[1]
IP/MASK : 10.0.1.2/24
GATEWAY : 10.0.1.254
DNS :
MAC : 00:50:79:66:68:01
LPORT : 10004
RHOST:PORT : 127.0.0.1:10005
MTU : 1500
A partir de este momento podríamos hacer ''ping 10.0.1.2'' desde PC1 y recibiremos la respuesta.
En resumen:
RED 1 RED 2
10.0.0.0/24 10.0.1.0/24
PC1 R1 PC2
10.0.0.1 Fa0/0 Fa0/1 10.0.1.2
│ .254 .254 │
│ ┌──────┐ │
└───────────────────────┤ ├──────────────────────┘
│ R1 │
└──────┘
===== Dos routers encaminando tráfico =====
Topología a construir:
RED 1 RED 2 RED 3
10.0.0.0/24 10.0.2.0/24 10.0.3.0/24
PC1 R1 R2 PC3
10.0.0.1 .254 .254 .1 10.0.3.1
│ │ │ │ │
└──────────────┤ ├─────────┤ │
│ │ │ │
Fa0/0 Fa1/0 Fa0/0 Fa0/1
│ │ │
└────── R1 ───────┴────── R2 ─────────┘
Es necesario añadir a R1 una interfaz FastEthernet adicional. Pulsamos con el botón derecho en R1 y seleccionamos **Configure**. En la pestaña **Slots**, vamos a Slot 1 y elegimos ''NM-1FE-TX''.
Debería quedar:
Slot 0 → GT96100-FE
Slot 1 → NM-1FE-TX
Slot 2 → vacío
...
Arrancamos R1 y revisamos:
R1#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset administratively down down
FastEthernet0/1 unassigned YES unset administratively down down
FastEthernet1/0 unassigned YES unset administratively down down
Configuramos Fa0/0:
enable
configure terminal
interface FastEthernet0/0
ip address 10.0.0.254 255.255.255.0
no shutdown
exit
Configuramos Fa0/1:
interface FastEthernet0/1
ip address 10.0.1.254 255.255.255.0
no shutdown
exit
end
show ip interface brief
R1#show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 10.0.0.254 YES manual up up
FastEthernet0/1 10.0.1.254 YES manual up up
FastEthernet1/0 unassigned YES unset administratively down down
Para guardar la configuración que hagamos en routers Cisco usamos la orden ''wr''. También se podría ejecutar ''copy running-config startup-config''
Añadimos un segundo router (R2) y configuramos:
enable
configure terminal
interface FastEthernet0/0
ip address 10.0.2.1 255.255.255.0
no shutdown
end
Y añadiremos una nueva red a la otra interfaz que tiene:
enable
configure terminal
interface FastEthernet0/1
ip address 10.0.3.254 255.255.255.0
no shutdown
end
Y le conectamos un PC3 configurado así:
ip 10.0.3.1/24 10.0.3.254
Ahora PC3 puede hablar con R2. Sin embargo, PC1 no podría comunicarse con PC3 porque R1 no sabe dónde está la red ''10.0.3.0/24'', no la tiene en su tabla de enrutamiento porque no está físicamente conectada a él. Es necesario establecer una **ruta estática**.
Queremos enseñarle a R1 que para llegar a ''10.0.3.0/24'' debe enviar el paquete a ''10.0.2.1'' (R2).
Nos conectamos a R1 y establecemos la ruta:
enable
configure terminal
ip route 10.0.3.0 255.255.255.0 10.0.2.1
end
Después de eso, revisamos:
R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 4 subnets
C 10.0.2.0 is directly connected, FastEthernet1/0
S 10.0.3.0 [1/0] via 10.0.2.1
C 10.0.0.0 is directly connected, FastEthernet0/0
C 10.0.1.0 is directly connected, FastEthernet0/1
La ''S'' significa //Static//, es decir, una ruta que nosotros hemos configurado manualmente.
R1#show ip route 10.0.3.1
Routing entry for 10.0.3.0/24
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
* 10.0.2.1
Route metric is 0, traffic share count is 1
R1 está diciendo "Para cualquier destino que pertenezca a ''10.0.3.0/24'', utiliza como siguiente salto ''10.0.2.1''."
Es decir:
Destino:
10.0.3.1
│
▼
pertenece a
10.0.3.0/24
│
▼
ruta estática
│
▼
siguiente salto = 10.0.2.1
│
▼
R2
Ahora nos queda por decirle a R2 cómo llegar a ''10.0.0.0/24'' a través de R1:
enable
configure terminal
ip route 10.0.0.0 255.255.255.0 10.0.2.254
end
Confirmamos:
R2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 3 subnets
C 10.0.2.0 is directly connected, FastEthernet0/0
C 10.0.3.0 is directly connected, FastEthernet0/1
S 10.0.0.0 [1/0] via 10.0.2.254
Desde este momento quedará establecido el camino tanto de ida como de vuelta de la comunicación entre PC1 y PC3, así que el ping 10.0.3.1 desde PC1 a PC3 funcionará.