in realtà è abbastanza semplice

su windows basta lanciare
codice:
arp  -a
e cercare tra le righe quelle contenente l'ip della macchina remota
codice:
Interfaccia: 192.168.0.123 --- 0xb
  Indirizzo Internet    Indirizzo fisico      Tipo
  1.2.3.4          00-11-22-33-44-55     dinamico
  192.168.0.255         ff-ff-ff-ff-ff-ff     statico
  224.0.0.22            01-00-5e-00-00-16     statico
  224.0.0.252           01-00-5e-00-00-fc     statico
  239.255.255.250       01-00-5e-7f-ff-fa     statico
per esempio questa è la configurazione presente sulla mia macchina ... c'è anche altro, ma in realtà non interessa, basta qualcosa tipo

Codice PHP:
$matches = array();

// l'ip DEVE esserci, tranne se c'è qualche strano e/o assurdo problema al sistema operativo
if (preg_match('#mio-ip.+?([A-Z0-9\-]{17})#is', `arp -a`, $matches) == false)
{
    die(
'Strano e assurdo problema nel sistema operativo!');
}

if (
$matches[1] == '00-11-22-33-44-55')
{
    echo 
'ok, puoi accedere';
}
else
{
    echo 
'mi spiace per te, niente da fare!';

mentre su linux varia poco, il comando è
codice:
arp -an
mentre l'output
codice:
[root@alpha ~]# arp -an
? (1.2.3.4) at 00:11:22:33:44:55 [ether] on eth0
l'espressione regolare può rimanere uguale, non dovrebbero esserci problemi