ARP (Address Resolution Protocol) este protocol care face intern fiecărui sistem de operare asocierea între adresele IP și adresele MAC ale stațiilor cu care comunică. De multe ori stațiile cunosc adresele IP ale vecinilor dar nu știu adresele MAC; protocolul ARP completează o tabelă ARP locală sistemului cu intrările necesare. Protocolul ARP este rulat implicit de sistemul de operare atunci când se comunică cu o stație a cărei adresă MAC nu este cunoscută.
Ne propunem să urmărim tabela ARP a unui sistem Linux.
Pe stația host
urmăriți tabela ARP folosind comanda:
root@host:~# ip neighbor show [...]
Este posibil ca tabela să fie goală (neexistând comunicație recentă) sau să aibă unele intrări (cele mai recente comunicații) sau intrările să fie marcate STALE
(intrări nesigure).
Pentru a popula tabela ARP inițiați comunicație cu celelalte stații folosind comanda ping
:
root@host:~# ping -c 1 10.10.10.2 PING 10.10.10.2 (10.10.10.2) 56(84) bytes of data. 64 bytes from 10.10.10.2: icmp_req=1 ttl=64 time=0.033 ms [...] root@host:~# ping -c 1 10.10.20.2 PING 10.10.20.2 (10.10.20.2) 56(84) bytes of data. 64 bytes from 10.10.20.2: icmp_req=1 ttl=64 time=0.036 ms [...] root@host:~# ping -c 1 10.10.30.2 PING 10.10.30.2 (10.10.30.2) 56(84) bytes of data. 64 bytes from 10.10.30.2: icmp_req=1 ttl=64 time=0.080 ms [...]
Urmăriți din nou tabela ARP:
root@host:~# ip neighbor show 10.10.10.2 dev veth-red lladdr 00:16:3e:8e:84:21 REACHABLE 10.10.20.2 dev veth-green lladdr 00:16:3e:d1:b2:95 REACHABLE 10.10.30.2 dev veth-blue lladdr 00:16:3e:32:0f:ae REACHABLE 10.8.0.1 dev eth0 lladdr 0a:00:27:00:00:00 REACHABLE
Observați că fiecare stație (red
, green
și blue
) are câte o intrare aferentă în tabela ARP marcată cu REACHABLE
(intrare validă). Intrarea suplimentară este comunicarea mașinii virtuale (stației host
) cu sistemul fep.grid.pub.ro
.
Realizați pașii de mai sus pentru fiecare dintre stațiile red
, green
și blue
:
Observați că în tabela ARP a fiecăreia dintre stațiile red
, green
și blue
se găsește câte o intrare ARP, corespunzătoare stației host
. Aceasta se întâmplă întrucât comunicațiile trec prin default gateway (adică prin stația host
) iar fiecare stație trebuie să cunoască doar adresa MAC a gateway-ului.