[LugBS] Indirizzo IP di riserva per fallimento DHCP (lease in dhclient.conf)
Giuseppe Corbelli
cowo78 a gmail.com
Gio 31 Ago 2017 07:44:07 UTC
On 08/30/2017 11:18 AM, White_Rabbit wrote:
> On 2017-08-25 11:57, Giuseppe Corbelli wrote:
>> [...]
>> What if:
>> 1) ammazzi il dhclient che sta già verosimilmente girando in
>> background 2) levi dai piedi i lease del "persistent database" attuale
>> (tipo in /var/lib/dhcp)
>> 3) lanci dhcpd -d -v eth0
>
> Funziona* \o/
> A terminale scrive "No DHCPOFFERS RECEIVED. Trying recorded lease
> 172.16.0.58"
> A quel punto ho pure ridato ifdown, ifup, ed ha funzionato.
> Credo che a fare da discrimine sia il contenuto del persistent database
> /var/lib/dhcp/dhclient.eth0.leases
> Mi sembra che se quel file contiene qualcosa, dhclient non consideri i
> recorded lease in /etc/dhcp/dhclient.conf
> Grazie :)
>
> * A patto che il gateway risponda al ping, altrimenti NON assegna
> l'indirizzo all'interfaccia, ma scrive comunque a terminale "bound:
> renewal in [numero grande] seconds."
Giusto per perdere un po' di tempo ho dato una scorsa al codice, che non
é propriamente amichevole.
Direi che fa passare tutta la lista dei lease non expired (che
evidentemente recupera sia dai lease passati sia da dclient.conf) e
lancia uno script (/sbin/dhclient-script ad es.) con reason=TIMEOUT che
fa il mestiere os-specific.
Lì c'é un commento
# if there is no router recorded in the lease or the 1st router answers
pings
che suona simile a quanto dici tu e che mi sono ben guardato
dall'approfondire.
As far as the C program is concerned se questa minchia di script esce
con 0 l'interfaccia é considerata bound. Se il renewal time é nel futuro
si segna il timeout altrimenti se nel frattempo é scaduto il lease
rischedula tutta la fase.
Direi che quello che ti infastidisce é da cercare nello script.
Per l'esecuzione fa un fork+execve che dovrebbe loggare (in modo da
vedere cosa gli passa) e che comunque puoi vedere con strace.
--
Giuseppe Corbelli
Maggiori informazioni sulla lista
Lug
|