Dhcp Relay

The DHCP Relay Agent

Il sorgente della pagina è questo
In reti con diverse sottoreti è complesso piazzare un dhcp server per ogni sottorete. La soluzione migliore è piazzare un dhcp server centrale e far fare il forward dei messaggi dhcp dai router. Ma il traffico dhcp è un traffico di broadcast che non viene inoltrato tra le interfacce.

La soluzione è usare un dhcp relay agent , windows server routing e remote access forniscono la possibilità di eseguire un relay agent services.

Il processo di ottenere un ip leas da un dhcp server può essere suddiviso in quattro fasi DHCPDISCOVER, DHCPOFFER, DHCPREQUEST, AND DHCPACK.

Quando un router che è configurato come relay agent riceve un dhcp broadcast conterte in un pacchetto unicast con destinazione mac/ip del dhcp server e source mac/ip del router stesso.

DHCPDISCOVER

Il client dhcp manda un messaggio di DHCPDISCOVER contenente il mach address del client dhcp, all'indirizzo ip di broadcast 255.255.255.255 e a livello di mac l'indirizzo di broadcast è FF-FF-FF-FF-FF-FF . Il dhcp relay agent riceve e processa il pacchetto di DHCPDISCOVER.

Come stabilito nella RFC 1542 il dhcp relay agent può inoltrare i pacchetti a un indirizzo ip di broadcast, multicast, o unicast. In pratica un dhcp relay agent inoltra ilo messaggio di DHCPDISCOVER a un indirizzo ip unicast che corrisponde al dhcp server. Ma prima di inoltrarlo fa le seguenti modifiche al pacchetto:

  • incremente il campo hop count del dhcp header, questo è un campo separato dal ttl. L'hop count indica quante reti il dhcpdiscover è esistito come broadcast. Quando questo valore eccede il pacchetto di dhcpdiscover viene silenziosamente scartato. Questo valore può essere configurato quando si usa il Microsoft DHCP Relay Agent il valore di default è 4.
  • aggiorna il campo Relay IP Address (Gateway IP Address field, GIADDR) nel dhcp header. Quando un dhcp client manda il messaggio di dhcpdiscover il campo di relay è settato a 0.0.0.0. Il dhcp relay agent se vede che il relay ip address è settato a 0.0.0.0 registra l'indirizzo dell'interfaccia dalla quale il messaggio di dhcp discover è stato ricevuto. Se invece non è a 0.0.0.0 il dhcp relay agent non lo modifica.
  • cambia l'indirizzo sorgente del messaggio di dhcpdiscover con l'indirizzo in cui il messaggio è stato ricevuto.
  • cambia l'indirizzo di destinazione del messaggio di dhcpdiscover

Il relay agent mand il messaggio di dhcpdiscover come un pacchetto ip unicast piuttosto che un mac level broadcast. Se il dhcp relay agent è configurato per usare dei server dhcp multipli manda a ogni dhcp server una copia del messaggio di dhcpdiscover.

Type:    UDP
Source IP:    0.0.0.0
Source Port:    68
Destination IP:    255.255.255.255
Destination Port:    67

DHCPOFFER

Il dhcp server che risponde alla richiesta ovviamente usa l'ip del relay perchè era stato messo quello come campo sorgente. Lo fa nel seguente modo:

  • controlla ip e netmask del relay in questo modo individua la sottorete da dove viene la richiesta e fa un match con il network ip e alloca un ip dallo scope adatto.
  • il pacchetto di dhcpoffer viene mandato al server relay.

Una volta che il relay riceve il pacchetto , ip di realy viene usato per determinare su quale interfaccia il messaggio di dhcpoffer deve essere instradato. Ecco il messaggio che forwarda

Type:    UDP
Source IP:    DHCP Server's IP
Source Port:    68
Destination IP:    DHCP Relay Agent IP
Destination Port:    67

Vediamo i passaggi di modifica dei messaggi tra i server dhcp e il client

DHCPREQUEST (client —> dhcp relay —> dhcp server)

Il client manda la richiesta che contiene il proprio mac come sorgente e come indirizzo di destinazione IP broadcast address (255.255.255.255) and to the MAC broadcast address (FF-FF-FF-FF-FF-FF).
Il relay lo riceve e lo invia al server in questo modo

Type:    UDP
Source IP:    0.0.0.0
Source Port:    68
Destination IP:    255.255.255.255
Destination Port:    67

DHCPACK (dhcp server—> dhcp relay —> client)

Il dhcp server manda un messaggio al dhcp relay che lo modifica nel modo che si vede sotto e lo invia al client.

Type:    UDP
Source IP:    DHCP Server's IP
Source Port:    68
Destination IP:    DHCP Relay Agent IP
Destination Port:    67
Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License