ARP protokoll


Om ditt nätverk använder IPv4 är det Address Resolution Protocol (ARP) som används för att koppla ihop IPv4-adresser med MAC-adresser. Detta avsnitt förklarar hur ARP fungerar.

För att kommunicera i ett nätverk behöver varje nätverksenhet adressuppgifter – främst en adress på lager 3 (IP-adress) och en adress på lager 2 (MAC-adress). Här nedan en bild med förenklade MAC-adresser.

Problemet uppstår när en host bara känner till destinationens IP-adress men inte dess MAC-adress. För att kunna skicka en ram till rätt mottagare måste båda adresserna vara kända. Om mottagaren finns i samma nätverk används mottagarens MAC-adress, men om mottagaren finns i ett annat nätverk används i stället MAC-adressen till default gateway (routern).

Här kommer Address Resolution Protocol (ARP) in i bilden. ARP används i IPv4-nätverk för att mappa, det vill säga binda samman, IP-adresser med motsvarande MAC-adresser.

ARP funktioner

ARP har två viktiga uppgifter:

  • Upplösa IPv4-adresser till motsvarande MAC-adresser.
  • Underhålla en ARP-tabell (cache) som lagrar kopplingar mellan kända IP- och MAC-adresser.

När ett paket skickas ner till datalänkskiktet för att kapslas in i en Ethernet-ram, kontrollerar enheten sin ARP-tabell (som lagras tillfälligt i RAM-minnet) för att hitta den MAC-adress som hör ihop med den aktuella IPv4-adressen.

  • Om destinationens IPv4-adress finns i samma nätverk som avsändaren, söker enheten direkt efter mottagarens adress i ARP-tabellen.
  • Om destinationen finns i ett annat nätverk, söker enheten istället efter MAC-adressen till sin default gateway (routern).

I båda fallen handlar det alltså om att matcha en IPv4-adress med rätt MAC-adress. Varje post i ARP-tabellen innehåller en sådan mappning, vilket gör att enheten snabbt kan slå upp rätt information.

Om den efterfrågade IPv4-adressen finns i tabellen används motsvarande MAC-adress som destinationsadress i ramen. Om ingen post finns skickar enheten istället ut en ARP-förfrågan i nätverket för att ta reda på den rätta MAC-adressen.

ARP-förfrågan

En ARP-förfrågan är själva frågan som skickas ut i nätverket:

Vem har den här IP-adressen? Tala om din MAC-adress för mig.

Eftersom avsändaren ännu inte vet vilken enhet som har den angivna IP-adressen, skickas förfrågan som en broadcast i en Ethernet-ram till alla enheter i det lokala nätverket.

  • Alla mottagare tar emot ARP-förfrågan.
  • Endast den enhet vars IP-adress matchar förfrågans Target Protocol Address svarar.
  • Svaret (ARP Reply) skickas som unicast tillbaka till den som frågade, och innehåller den korrekta MAC-adressen.

ARP-paket

En ARP-förfrågan skickas alltid som en Ethernet-ram. Ramen består av två delar:

  1. Ethernet-headern – styr hur ramen levereras i nätverket.
    • Destinations-MAC: broadcast (FF:FF:FF:FF:FF:FF) → alla enheter tar emot ramen.
    • Source-MAC: avsändarens MAC-adress.
    • Typ: 0x0806 → talar om att nyttolasten är ett ARP-paket.
  2. ARP-paket – själva frågan eller svaret som ligger som last i Ethernet-ramen. Det innehåller bland annat:
    • Hardware type = 1 (vanligtvis Ethernet = 1).
    • Protocol type = 4 (vanligtvis IPv4 = 0x0800).
    • Hardware address length = 6 (6 byte för MAC).
    • Protocol address length = 4 (4 byte för IPv4).
    • Operation code = 1 (1 = Request, 2 = Reply).
    • Source MAC och Source Protocol Address (avsändarens MAC och IP).
    • Target MAC = 0000.0000.0000 (okänd i Request, fylls i vid Reply).
    • Target Protocol Address (IP-adressen man vill veta MAC-adressen för).

ARP-svar

Endast den enhet som har den efterfrågade IPv4-adressen skickar ett ARP-svar. Svaret skickas som unicast direkt tillbaka till den ursprungliga avsändaren och kapslas i en Ethernet-ram med följande fält:

  • Destinations-MAC-adress – MAC-adressen till avsändaren av ARP-förfrågan.
  • Source-MAC-adress – MAC-adressen till enheten som skickar svaret.
  • Typ0x0806, vilket visar att ramen innehåller ett ARP-meddelande.

När avsändaren tar emot ARP-svaret lägger den till en post i sin ARP-tabell där IPv4-adressen kopplas till den mottagna MAC-adressen. Nästa gång ett paket ska skickas till samma destination kan rätt MAC-adress hämtas direkt ur ARP-tabellen. Om inget svar tas emot kan ingen Ethernet-ram skapas, och paketet kasseras.

Poster i ARP-tabellen är alltid tids stämplade. Om en post inte används under en viss tid rensas den automatiskt bort. Det är även möjligt att skapa statisk ARP-poster som ligger kvar permanent, men detta används sällan eftersom de inte tas bort automatiskt utan måste hanteras manuellt.

Obs: IPv6 använder en liknande process, ICMPv6 Neighbor Discovery (ND), som använder neighbor solicitation och neighbor advertisement på samma sätt som IPv4 använder ARP Request och ARP Replay.

Jämförelse: ARP-förfrågan vs. ARP-svar
Aspekt ARP-förfrågan (Request) ARP-svar (Reply)
Syfte Ta reda på MAC-adressen för en känd IPv4-adress. Meddela MAC-adressen som motsvarar den efterfrågade IPv4-adressen.
Skickas som Broadcast Unicast till den ursprungliga frågeställaren
DA-MAC FF-FF-FF-FF-FF-FF (broadcast) MAC-adressen för avsändaren av ARP-förfrågan
SA-MAC MAC-adressen för avsändaren av ARP-förfrågan MAC-adressen för avsändaren av ARP-svaret
EtherType 0x0806 0x0806
Vem genererar? Enhet som saknar mappning i sin ARP-tabell. Endast enheten vars IPv4-adress matchar förfrågan.
Vem tar emot? Alla enheter på det lokala nätet (LAN). Endast den ursprungliga avsändaren av ARP-förfrågan.
När uppstår? När ingen giltig ARP-post finns för mål-IPv4. Som svar på en matchande ARP-förfrågan.
Effekt på ARP-tabell Ingen direkt uppdatering. Avsändaren lägger till/uppdaterar IPv4↔MAC-mappning.

ARP i fjärrkommunikation

När en host vill kommunicera med en enhet utanför sitt eget nätverk, används default gateway (vanligtvis en router). Det betyder att ramen inte skickas direkt till mottagarens MAC-adress, utan till routerns MAC-adress.

Förloppet ser ut så här:

  1. Avsändaren ser att destinations-IPv4-adressen inte tillhör det egna nätverket.
  2. Paketet skickas därför till default gateway.
  3. I Ethernet-ramen sätts:
    1. Destination MAC = routerns MAC-adress.
    2. Source MAC = avsändarens egen MAC-adress.
  4. Routern tar emot ramen, avkapslar den och läser IPv4-headern.
  5. Baserat på sin routingtabell skickar routern vidare paketet mot nästa hopp på vägen till slutdestinationen.

Om routerns MAC-adress inte redan finns i avsändarens ARP-tabell måste avsändaren först göra en ARP-förfrågan för att ta reda på den. När svaret kommer kan kommunikationen fortsätta utan problem.

ARP-tabellen

Alla enheter i ett nätverk lagrar tillfälliga kopplingar mellan IPv4-adresser och MAC-adresser i en ARP-tabell (även kallad ARP-cache). När en enhet väl har fått reda på en MAC-adress via ARP behöver den alltså inte fråga igen förrän posten försvinner ur tabellen (vilket sker automatiskt efter en viss tid).

För att se innehållet i en ARP-tabell används olika kommandon beroende på system:

Cisco-router eller switch:

R1# show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  192.168.10.1            -   a0e0.af0d.e140  ARPA   GigabitEthernet0/0/0
Internet  209.165.200.225         -   a0e0.af0d.e141  ARPA   GigabitEthernet0/0/1
Internet  209.165.200.226         1   a03d.6fe1.9d91  ARPA   GigabitEthernet0/0/1
R1#

Windows-dator:

C:\Users\PC> arp -a
Interface: 192.168.1.124 --- 0x10
  Internet Address      Physical Address      Type
  192.168.1.1           c8-d7-19-cc-a0-86     dynamic
  192.168.1.101         08-3e-0c-f5-f7-77     dynamic
  192.168.1.110         08-3e-0c-f5-f7-56     dynamic
  192.168.1.112         ac-b3-13-4a-bd-d0     dynamic
  192.168.1.117         08-3e-0c-f5-f7-5c     dynamic
  192.168.1.126         24-77-03-45-5d-c4     dynamic
  192.168.1.146         94-57-a5-0c-5b-02     dynamic
  192.168.1.255         ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.251           01-00-5e-00-00-fb     static
  239.255.255.250       01-00-5e-7f-ff-fa     static
  255.255.255.255       ff-ff-ff-ff-ff-ff     static
C:\Users\PC>

Båda kommandona visar vilka IPv4-adresser som för tillfället är kopplade till vilka MAC-adresser. På så sätt kan man kontrollera vilka adresser som har blivit upplösta via ARP i nätverket.

Obs! På Cisco-nätverkshanterare lagras varje ARP-post som standard i 240 minuter (4 timmar), vilket kallas ARP-timeaout, och värdet kan ändras per interface.

Ta bort poster ur en ARP-tabell

Alla nätverksenheter har en ARP-cachetimer som automatiskt rensar ut poster i ARP-tabellen när de inte har använts under en viss tid. Exakt tidsgräns beror på operativsystemet. I nyare Windows-versioner ligger denna tid vanligtvis mellan 15 och 45 sekunder.

Det går även att radera poster manuellt. Om en post tas bort måste enheten återigen skicka en ARP-förfrågan och ta emot ett ARP-svar för att fylla på tabellen med rätt koppling mellan IPv4- och MAC-adresser.

Exempel på Windows PC

För att ta bort alla poster:

arp -d *

För att ta bort en specifik post:

arp -d 192.168.10.20

Efter att posten har tagits bort och datorn behöver nå samma IP igen, skickas en ny ARP Request för att hämta MAC-adressen.

Exempel: Cisco-router eller switch (IOS)

För att visa ARP-tabellen:

show ip arp

För att ta bort en specifik post:

clear arp-cache 192.168.10.20

För att rensa hela ARP-tabellen:

clear arp-cache

Efteråt kommer routern automatiskt skicka nya ARP-förfrågningar när den behöver nå dessa adresser.

ARP och nätverksproblem

När en ARP-förfrågan skickas som broadcast tas den emot av alla enheter i det lokala nätverket. I vanliga nätverk märks detta knappt, men i stora nät med många klienter kan det ge en tillfällig prestandaförlust, till exempel när många datorer startas samtidigt och ska börja kommunicera. Så snart enheterna har lärt sig de nödvändiga MAC-adresserna stabiliseras nätverksprestandan igen.

ARP och säkerhet

Eftersom ARP-förfrågningar alltid skickas som broadcasts måste alla enheter i ett lokalt nätverk ta emot och behandla dem. I ett nätverk med många enheter kan detta tillfälligt påverka prestandan, men effekten brukar vara liten och snabbt övergående.

Det som däremot utgör en verklig risk är att ARP saknar autentisering – protokollet litar helt på att de mottagna svaren är äkta. Detta öppnar upp för attacker som kallas ARP spoofing eller ARP poisoning.

Vid en sådan attack skickar angriparen ut falska ARP-svar där den påstår att dess egen MAC-adress tillhör en annan enhets IPv4-adress, exempelvis routerns. På så sätt kan angriparen lura andra datorer i nätverket att:

  • skicka all sin trafik till angriparens dator istället för till routern,
  • eller att felaktigt koppla en serveradress till angriparens MAC-adress.

Detta gör det möjligt för angriparen att:

  • avlyssna (sniffa) trafiken mellan två enheter,
  • manipulera data innan den skickas vidare,
  • eller helt enkelt stoppa trafiken (en form av Denial of Service).

I små nätverk är detta ovanligt, men i större företagsmiljöer kan det vara en allvarlig säkerhetsrisk. Där används därför skyddsmekanismer, till exempel:

  • Dynamic ARP Inspection (DAI) på switchar – kontrollerar att ARP-svar överensstämmer med giltiga adressbindningar.
  • Statiska ARP-poster – används ibland i känsliga system, men är opraktiskt i större nätverk eftersom de måste konfigureras och underhållas manuellt.

I den här kursen går vi inte djupare in på dessa tekniker, men det är viktigt att känna till att ARP i sin grundform är osäkert och kan missbrukas av angripare.