A proxy ARP manapság már kevés helyen kap szerepet, de régen egy alapköve volt a hálózatok működésének. Ejtsünk hát róla pár szót.
Még a DHCP előtti időkben, mikor RARP/BOOTP szerverek adták az IP címeket, a proxy ARP nagyon elterjedt volt. Manapság is találkozhatunk vele. Ha telepítettek gépeket az osztálynak megfelelő maszkkal, akkor is működött a kommunikáció az eszközök között, mert a routeren a proxy ARP megoldotta a problémát.
A technológia lényege röviden:
Mikor egy host kommunikálni szeretne egy másikkal, a subnet mask alapján:
- ha azonos alhálózatban vannak, akkor küld egy ARP kérést a kérdéses host IP-jére, hogy megszerezze annak MAC címét
- ha nem azonos alhálózatban vannak, a default gateway-hez fordul.
De mi van a következő esetben?
A két host szeretne kommunikálni egymással. Mivel a subnet mask alapján egy alhálózatban vannak (a maszk el van írva mindkét oldalon, bal oldalon /16, jobb oldalon /23), ezért mindkét host azt hiszi, hogy egy alhálózatban vannak, és egymás IP címére küldenek ARP kéréseket (ha csak Host1 maszkja lenne rossz, akkor is hasonló a probléma, viszont abban az esetben HOST2 helyesen tudná, hogy nincs HOST1-gyel egy hálózatban, és a default gateway felé kell küldenie a csomagokat, most csak az egyszerűség kedvéért írtam el mindkét oldalon a maszkot). Működni fog? Technikailag nem, de mégis igen, mert a Cisco routeren alapból engedélyezett a proxy ARP.
Nézzük gyakorlatban a problémát.
Alap konfigok:
Host1
no ip routing
!
interface Ethernet0/0
ip address 192.168.0.10 255.255.0.0
no ip route-cache
!
!
ip default-gateway 192.168.0.1
Host2
no ip routing
!
interface Ethernet0/1
ip address 192.168.1.10 255.255.254.0
no ip route-cache
!
!
ip default-gateway 192.168.1.1
R1 conf t int e0/0 ip add 192.168.0.1 255.255.255.0 ! Proxy ARP-t kikapcsolom E0/0-n, alapból engedélyezve van no ip proxy-arp no shutdown int e0/1 ip add 192.168.1.1 255.255.255.0 no shutdown ! Proxy ARP-t kikapcsolom E0/1-n, alapból engedélyezve van no ip proxy-arp end
Nézzük, megy -e a kommunikáció…
Előtte bónusz: hogy ne kelljen annyit gépelni később, csinálok host bejegyzéseket:
HOST1(config)#ip host R1 192.168.0.1 HOST1(config)#ip host HOST2 192.168.1.10 HOST1(config)#end
HOST2(config)#ip host HOST1 192.168.0.10 HOST2(config)#ip host R1 192.168.1.1 HOST2(config)#end HOST2#
Gateway pingelhető mindkét eszközről:
HOST1#ping r1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.0.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 6/6/7 ms HOST1#
HOST2#ping r1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 8/211/1018 ms HOST2#
Na és egymást?
HOST1#ping host2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds: ..... Success rate is 0 percent (0/5) HOST1#
Nem megy. Ahogy várható volt. Na és miért nem?
HOST1#debug arp ARP packet debugging is on HOST1#ping host2 repeat 1 Type escape sequence to abort. Sending 1, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds: *Aug 30 21:20:34.851: IP ARP: sent req src 192.168.0.10 aabb.cc00.0200, dst 192.168.1.10 0000.0000.0000 Ethernet0/0 *Aug 30 21:20:35.858: IP ARP throttled out the ARP Request for 192.168.1.10. Success rate is 0 percent (0/1) HOST1# *Aug 30 21:20:36.867: IP ARP: sent req src 192.168.0.10 aabb.cc00.0200, dst 192.168.1.10 0000.0000.0000 Ethernet0/0 HOST1# *Aug 30 21:20:37.874: IP ARP throttled out the ARP Request for 192.168.1.10 HOST1#
Azaz HOST1 HOST2-nek küld ARP kérést, amelyre nyilván sosem jön válasz, hiszen nincs a subnetben ilyen IP cím.
R1 is megkapja az ARP kérést, de nem tesz semmit – mert kikapcsoltam a proxy ARP-t. Pedig ő tudja, hogy nem egy alhálóban van a két host – a routeren jó a subnet mask. Mégsem menti meg a világot, mert megtiltottam neki :). Ezt látjuk R1-en egyébként:
R1#debug arp ARP packet debugging is on R1# *Aug 30 21:21:44.508: IP ARP: rcvd req src 192.168.0.10 aabb.cc00.0200, dst 192.168.1.10 Ethernet0/0 R1# *Aug 30 21:21:46.524: IP ARP: rcvd req src 192.168.0.10 aabb.cc00.0200, dst 192.168.1.10 Ethernet0/0 R1#
Nézzük, mi történik, ha engedélyezem a proxy ARP-t:
HOST1#ping host2 rep 2 Type escape sequence to abort. Sending 2, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds: *Aug 30 21:23:28.792: IP ARP: creating incomplete entry for IP address: 192.168.1.10 interface Ethernet0/0 *Aug 30 21:23:28.792: IP ARP: sent req src 192.168.0.10 aabb.cc00.0200, dst 192.168.1.10 0000.0000.0000 Ethernet0/0 *Aug 30 21:23:28.798: IP ARP: rcvd rep src 192.168.1.10 aabb.cc00.0300, dst 192.168.0.10 Ethernet0/0.. Success rate is 0 percent (0/2) HOST1#
HOST1 kap választ az ARP kérésre – R1-től.
R1# *Aug 30 21:23:21.578: %SYS-5-CONFIG_I: Configured from console by console R1# *Aug 30 21:23:28.793: IP ARP: rcvd req src 192.168.0.10 aabb.cc00.0200, dst 192.168.1.10 Ethernet0/0 *Aug 30 21:23:28.793: IP ARP: sent rep src 192.168.1.10 aabb.cc00.0300, dst 192.168.0.10 aabb.cc00.0200 Ethernet0/0 R1# *Aug 30 21:23:29.801: IP ARP: rcvd req src 192.168.1.10 aabb.cc00.0110, dst 192.168.0.10 Ethernet0/1 R1#
Tehát látható, R1 “behazudja” a saját MAC címét HOST1-nek a kérésére, mert a router tudja, hogy a 192.168.1.0/24 hálózat felé merre küldje a csomagot, és azt is tudja, hogy HOST1 ARP kérését HOST2 sosem fogja megkapni.
A ping mégsem megy. Miért?
HOST1 R1-en keresztül már tudna kommunikálni. De HOST2 nem tudja, hogy mi HOST1 MAC címe (a proxy ARP-t csak HOST1 felé kapcsoltam be a routeren).
HOST2# *Aug 30 21:25:54.289: IP ARP: creating incomplete entry for IP address: 192.168.0.10 interface Ethernet0/1 *Aug 30 21:25:54.289: IP ARP: sent req src 192.168.1.10 aabb.cc00.0110, dst 192.168.0.10 0000.0000.0000 Ethernet0/1
Tehát R1 másik interface-n is engedélyeznem kell a proxy ARP-t:
R1(config)#int e0/1 R1(config-if)#ip pr R1(config-if)#ip proxy-arp R1(config-if)#end R1#
És most?
HOST1#ping host2 rep 2 Type escape sequence to abort. Sending 2, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds: .! Success rate is 100 percent (2/2), round-trip min/avg/max = 7/7/8 ms HOST1#
Az első ping kiesik az ARP kérés miatt, de miután megvan az ARP REPLY, működik a kommunikáció.
Ahogy az sejthető, HOST1-en és HOST2-n az ARP táblában a default gateway és a másik host MAC címének ugyanazt az eszközt látjuk – a routerét.
HOST1#sh ip arp Protocol Address Age (min) Hardware Addr Type Interface Internet 192.168.0.1 1 aabb.cc00.0300 ARPA Ethernet0/0 Internet 192.168.0.10 - aabb.cc00.0200 ARPA Ethernet0/0 Internet 192.168.1.10 1 aabb.cc00.0300 ARPA Ethernet0/0
A router interface-n ellenőrizhető, aktív -e a proxy ARP:
R1#sh ip int e0/0
Ethernet0/0 is up, line protocol is up
Internet address is 192.168.0.1/24
Broadcast address is 255.255.255.255
Address determined by setup command
MTU is 1500 bytes
Helper address is not set
Directed broadcast forwarding is disabled
Multicast reserved groups joined: 224.0.0.251
Outgoing access list is not set
Inbound access list is not set
Proxy ARP is enabled
Local Proxy ARP is disabled
Security level is default
Split horizon is enabled
ICMP redirects are always sent
ICMP unreachables are always sent
ICMP mask replies are never sent
IP fast switching is enabled
IP fast switching on the same interface is disabled
IP Flow switching is disabled
IP CEF switching is enabled
IP CEF switching turbo vector
IP multicast fast switching is enabled
IP multicast distributed fast switching is disabled
IP route-cache flags are Fast, CEF
Router Discovery is disabled
IP output packet accounting is disabled
IP access violation accounting is disabled
TCP/IP header compression is disabled
RTP/IP header compression is disabled
Policy routing is disabled
Network address translation is disabled
BGP Policy Mapping is disabled
Input features: MCI Check
IPv4 WCCP Redirect outbound is disabled
IPv4 WCCP Redirect inbound is disabled
IPv4 WCCP Redirect exclude is disabled
R1#
Remélem követhető és hasznos volt a bejegyzés. 🙂