Site Tools


retain_dhcp_lease_info_after_a_reboot

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
retain_dhcp_lease_info_after_a_reboot [2023/02/07 16:57] rs232retain_dhcp_lease_info_after_a_reboot [2023/08/15 18:32] (current) – [Method 2: Copying the lease database to permanent storage at halt time] petervdm
Line 1: Line 1:
 ====== Retain DHCP Lease Information after a Reboot ====== ====== Retain DHCP Lease Information after a Reboot ======
  
-By default dnsmasq stored DHCP lease information in RAM, this means that an operation like e.g. a reboot wipe the lease database forcing a new one to be created. This might be inconvenient as devices might end up with a new IP address at renewal timeIn order for dnsmasq to maintain its DHCP lease information, persistent storage, (such as USB) is neededThere are currently two options you might consider:+By defaultdnsmasq stores DHCP lease data in (volatile) RAM. This means that operations such as a reboot will erase the lease databaseforcing a new one to be created. This could be inconvenient, since client devices might receive a new IP address after DHCP renewal. For dnsmasq to maintain its DHCP lease information, the router needs persistent storage, (such as USB).
  
-1) This isn't a scripting method/example //per se//. It may not be what you're looking for.+There are currently two common methods for dealing with this.
  
-Navigate to [[:advanced-dhcpdns|DHCP/DNS]] under the Advanced menu.  In the **//Dnsmasq Custom configuration//** field, enter: 
  
-<code ->+===== Method 1: Store the lease database on permanent storage ===== 
 + 
 +The first method does not use scripting. The goal of the first method is to store the lease database on permanent storage. 
 + 
 + \\ 
 + 
 +  - Under Advanced, go to the [[advanced-dhcpdns|DHCP/DNS/TFTP]] menu. In the //Dnsmasq Custom configuration// field, enter: \\ \\ <code ->
 dhcp-leasefile=/mnt/usb/dnsmasq/dnsmasq.leases dhcp-leasefile=/mnt/usb/dnsmasq/dnsmasq.leases
 +</code> \\ 
 +  - Use a path relative to your own system.  Click Save. \\ \\ 
 +  - Using permanent storage means client devices won't lose connectivity if the router reboots. Because the lease database is not stored in RAM, a reboot won't erase it. This can be useful, for example, when devices are connected to a switch. Moreover, clients won't display in the [[status-devices|Device List]] as having an active lease until their current lease expires, and they've requested a new one. FreshTomato will just continue where if left off. \\ \\  
 +  - Notice that the example points to a USB device labelled "usb". You might have a different name on your system, depending on how storage was formatted. This also means you can store the data on other permanent media, like a CIFS share. However, for such configurations, it is not wise to use JFFS. JFFS is not recommended for frequent writes (which in this case, would occur every time a new IP is sent).
 +
 +
 +===== Method 2: Copying the lease database to permanent storage at halt time =====
 +
 +\\ The second approach is to keep the lease database in its default location and copy it to permanent storage at "halt" time. It is later restored when the init process runs during boot.
 +
 + \\ \\ For example, in the Init field in the [[admin-scripts|Scripts]] menu, enter:\\
 +
 +<code ->
 +[ -f /mnt/usb/dnsmasq.leases ] && {
 +sort -b -k 2 -u -z /tmp/var/lib/misc/dnsmasq.leases > /tmp/dnsmasq.tmp1
 +sort -b -k 2 -u -z /mnt/usb/dnsmasq.leases > /tmp/dnsmasq.tmp2
 +diff -a /tmp/dnsmasq.tmp1 /tmp/dnsmasq.tmp2 | grep -E '^>' | sed 's/^>\ //' >> /tmp/var/lib/misc/dnsmasq.leases
 +kill -HUP `ps | grep -E [d]nsmasq | awk '{ print $1 }'`
 +rm /tmp/dnsmasq.tmp1
 +rm /tmp/dnsmasq.tmp2
 +rm -f /mnt/usb/dnsmasq.leases
 +}
 </code> </code>
  
-Use a path relative to your own system.  Click Save.+ \\
  
-The idea is essentially to store the lease database directly on non-volatile storage. This can be useful, for example, when devices are connected to a switch. They won't lose network connectivity if the router is down (rebooted).  They won't display as having an active lease in the Device List until their current lease expiresand they request a new oneFreshTomato will just continue where if left off. Please also notice the example above points to a USB device with a label name "usb" you might have different names on your system depending on how the storage was formatted. This also means you can store on different permanent storage e.g. CIFS. For this specific operation though you are discouraged from using JFFS as this latter is never recommended for frequent writes (as it would occur every time a new IP is dispatched).+ \\ 
 + 
 +in the //Halt// field In the [[admin-scripts|Scripts]] menuenter:\\ 
 + 
 +<code -> 
 +cp -f /tmp/var/lib/misc/dnsmasq.leases /mnt/usb/dnsmasq.leases 
 +</code>
  
  \\  \\
  
-2) A different approach is to keep the lease database in its default location and copy it to permanent storage at "halt" time to then restore it when the device runs the "init" at boot. e.g.+ \\
  
-Administration/Scripts/Init\\ +Method 2 can be used with any type of storage, including JFFSWhen using method only with USB, an alternative is to enter the former set of configuration lines into the //Run after mounting// field and the latter set of lines in the //Run before unmounting/fields in the [[nas-usb|USB Support]] menu
-<code ->[ -f /mnt/usb/dnsmasq.leases ] && { + 
- sort -b -k -u -z /tmp/var/lib/misc/dnsmasq.leases > /tmp/dnsmasq.tmp1 + \\ 
- sort -b -k 2 -u -z /mnt/usb/dnsmasq.leases > /tmp/dnsmasq.tmp2 + 
- diff -a /tm + \\
- kill -HUP `ps | grep  +
- rm /tmp/dnsmasq.tmp1 +
- rm /tmp/dnsmasq.tmp2 +
-}</code>+
  
-Administration/Scripts/Halt\\ 
-<code ->cp -f /tmp/var/lib/misc/dnsmasq.leases /mnt/usb/dnsmasq.leases</code> 
  
-This method 2) can be used with any storage, JFFS included, where for USB (only) an alternative is to performed the save/copy within the ''Run after mounting/Run before unmounting'' on the [[nas-usb|USB page]] instead than the generic script section. 
retain_dhcp_lease_info_after_a_reboot.1675789033.txt.gz · Last modified: 2023/02/07 16:57 by rs232