martes, 12 de mayo de 2009

Proxy-ARP

Posted by Nicolas | martes, 12 de mayo de 2009 | Category: |

Una interesante forma de ver la importancia de ARP (RFC 826), es a través del uso de Proxy-ARP (RFC 1027). Conisderemos la red de la figura (extracto de una maqueta que usé para el BSCI), cuya intención es méramente académica, no corrrespondiedo a un diseño adecuado.



Desde un extremo vemos como P1R3 tiene todas las entradas ARP de la LAN directamente conectada (10.1.1.0/24). Ojo que por simplicidad hemos eliminado algunas entradas del debug.

P1R3#terminal monitor
P1R3#debug arp
ARP packet debugging is on
P1R3#clear arp-cache
P1R3#
4w6d: IP ARP: sent req src 10.1.1.2 0009.b72d.d5a8,
dst 10.1.1.1 0006.287a.9680 FastEthernet0
4w6d: IP ARP: sent rep src 10.1.1.2 0009.b72d.d5a8,
dst 10.1.1.2 ffff.ffff.ffff FastEthernet0
4w6d: IP ARP: rcvd rep src 10.1.1.1 0006.287a.9680, dst 10.1.1.2 FastEthernet0
4w6d: IP ARP: creating entry for IP address: 10.1.1.1, hw: 0006.287a.9680

P1R3#sh ip arp | i 10.1.1
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.2 - 0009.b72d.d5a8 ARPA FastEthernet0
Internet 10.1.1.1 0 0006.287a.9680 ARPA FastEthernet0

Por otro lado su tabla de ruteo nos muestra que no tendría inconvenientes para rutear dentro de esta LAN.

P1R3#sh ip rou
Codes: C - connected, S - static, I - IGRP, 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, E - EGP
i - IS-IS, 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.1.3.0 is directly connected, Ethernet0
C 10.1.1.0 is directly connected, FastEthernet0


P1R3#sh int | i line|Internet
Ethernet0 is up, line protocol is up
Internet address is 10.1.3.3/24
FastEthernet0 is up, line protocol is up
Internet address is 10.1.1.2/24

A continuación un extracto de la configuración del router del medio.

P1R1#sh run | b interface
interface FastEthernet0/0
ip address 10.1.1.1 255.255.255.252
no ip directed-broadcast
no ip proxy-arp
speed 100
full-duplex
!
interface FastEthernet0/1
ip address 10.1.1.5 255.255.255.252
no ip redirects
no ip directed-broadcast
speed 100
full-duplex

Todo parece en orden y así lo confirmaría las entradas de la tabla de ruteo y ARP.

P1R1#sh ip rou
Codes: C - connected, S - static, I - IGRP, 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, E - EGP
i - IS-IS, 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

172.31.0.0/24 is subnetted, 1 subnets
C 172.31.1.0 is directly connected, Serial0/0
10.0.0.0/30 is subnetted, 2 subnets
C 10.1.1.0 is directly connected, FastEthernet0/0
C 10.1.1.4 is directly connected, FastEthernet0/1

P1R1#sh ip arp | i 10.1.1
Internet 10.1.1.2 0 0009.b72d.d5a8 ARPA FastEthernet0/0
Internet 10.1.1.1 - 0006.287a.9680 ARPA FastEthernet0/0
Internet 10.1.1.6 0 000b.be66.0be1 ARPA FastEthernet0/1
Internet 10.1.1.5 - 0006.287a.9681 ARPA FastEthernet0/1

Desde el otro extremo todo parece ok también.

P1R2#sh ip rou
Codes: C - connected, S - static, I - IGRP, 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, E - EGP
i - IS-IS, 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

172.31.0.0/24 is subnetted, 1 subnets
C 172.31.1.0 is directly connected, Serial0/0
10.0.0.0/24 is subnetted, 2 subnets
C 10.1.2.0 is directly connected, FastEthernet0/0
C 10.1.1.0 is directly connected, FastEthernet0/1

P1R2#sh ip arp | i 10.1.1
Internet 10.1.1.2 0 0006.287a.9681 ARPA FastEthernet0/1
Internet 10.1.1.1 0 0006.287a.9681 ARPA FastEthernet0/1
Internet 10.1.1.6 - 000b.be66.0be1 ARPA FastEthernet0/1
Internet 10.1.1.5 0 0006.287a.9681 ARPA FastEthernet0/1

Es hora de probar la conectivida de extremo a extremo, debería funcionar, no?

P1R2#ping 10.1.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.2, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

Desde el otro extremo:

P1R3#ping 10.1.1.6

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.6, timeout is 2 seconds:

4w6d: IP ARP: creating incomplete entry for IP address: 10.1.1.6 interface FastEthernet0
4w6d: IP ARP: sent req src 10.1.1.2 0009.b72d.d5a8,
dst 10.1.1.6 0000.0000.0000 FastEthernet0.
4w6d: IP ARP throttled out the ARP Request for 10.1.1.6.
4w6d: IP ARP: sent req src 10.1.1.2 0009.b72d.d5a8,
dst 10.1.1.6 0000.0000.0000 FastEthernet0.
4w6d: IP ARP: sent req src 10.1.1.2 0009.b72d.d5a8,
dst 10.1.1.6 0000.0000.0000 FastEthernet0.
4w6d: IP ARP: sent req src 10.1.1.2 0009.b72d.d5a8,
dst 10.1.1.6 0000.0000.0000 FastEthernet0.
Success rate is 0 percent (0/5)

P1R3#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.2 - 0009.b72d.d5a8 ARPA FastEthernet0
Internet 10.1.1.1 3 0006.287a.9680 ARPA FastEthernet0
Internet 10.1.1.6 0 Incomplete ARPA

No funciona. Por qué?, Bueno, la tabla ARP de P1R3 nos da una pista, por alguna razón sólo tiene dos entradas de la LAN, más una entrada incompleta para nuestro destino. Es aquí donde entra en juego la discrepancia de máscaras en las subnets conectadas, puesto que si bien P1R3 espera recibir MACs de la 10.1.1.0/24, P1R1 sólo ve conectada por su interface FastEthernet0/0 la subnet 10.1.1.0/30, pero al mismo tiempo ve la 10.1.1.4/30 por la FastEthernet0/1, por ende quizás podría actuar como switch y redireccionar nuetro trafico a nivel de capa 2, no?. Pues bien, eso se logra con Proxy-ARP, que básicamente permite a un router responder las consultas ARP que escucha por una interface con su propia MAC si tiene la entrada respectiva en su tabla.

Veámoslo en acción!

P1R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
P1R1(config)#int f0/0
P1R1(config-if)#ip proxy-arp

Y la respectiva prueba de rigor.

P1R3#ping 10.1.1.6

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.6, timeout is 2 seconds:

01:00:56: IP ARP: creating incomplete entry for IP address: 10.1.1.6 interface FastEthernet0
01:00:56: IP ARP: sent req src 10.1.1.2 0009.b72d.d5a8,
dst 10.1.1.6 0000.0000.0000 FastEthernet0
01:00:56: IP ARP: rcvd rep src 10.1.1.6 0006.287a.9680, dst 10.1.1.2 FastEthernet0.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 1/2/4 ms


Efectivamente tardó un packete en ahora procesar el ARP Request/Reply como muestra el debug, pero ahora sí le entrada queda registrada en la tabla ARP de P1R3 con la MAC (0006.287a.9680) de P1R1 que actúa como Proxy ;)

P1R3#sh ip arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.2 - 0009.b72d.d5a8 ARPA FastEthernet0
Internet 10.1.3.3 - 0009.b72d.d5a9 ARPA Ethernet0
Internet 10.1.1.1 1 0006.287a.9680 ARPA FastEthernet0
Internet 10.1.3.4 1 000b.be79.8741 ARPA Ethernet0
Internet 10.1.1.6 0 0006.287a.9680 ARPA FastEthernet0

En total 2 comentarios:

  1. TUX: Curioso y útil. Gracias

  2. Ahora comprendo la facilidad para acceso remoto. Excelente! Mil gracias.


Leave a Reply