Tabla de Contenidos
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á.
