Page MenuHomeVyOS Platform

The show dhcp server leases operation mode command does not work as expected
Closed, ResolvedPublicBUG

Assigned To
Authored By
a.hajiyev
Nov 24 2023, 1:17 PM
Referenced Files
Restricted File
Nov 24 2023, 1:42 PM
Restricted File
Nov 24 2023, 1:41 PM
Restricted File
Nov 24 2023, 1:41 PM
Restricted File
Nov 24 2023, 1:40 PM
Restricted File
Nov 24 2023, 1:40 PM

Description

VyOS 1.4-rolling-202311100309
The configurations:
Primary:

set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 default-router '192.168.11.1'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 name-server '192.168.11.1'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 domain-name 'vyos.net'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 range 0 start '192.168.11.20'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 range 0 stop '192.168.11.250'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 enable-failover
set service dhcp-server failover source-address '192.168.11.11'
set service dhcp-server failover name 'LAN'
set service dhcp-server failover remote '192.168.11.12'
set service dhcp-server failover status 'primary'

Secondary:

set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 default-router '192.168.11.1'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 name-server '192.168.11.1'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 domain-name 'vyos.net'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 range 0 start '192.168.11.20'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 range 0 stop '192.168.11.250'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 enable-failover
set service dhcp-server failover source-address '192.168.11.12'
set service dhcp-server failover name 'LAN'
set service dhcp-server failover remote '192.168.11.11'
set service dhcp-server failover status 'secondary'

Checking:

vyos@Active# run sh dhcp server leases
IP Address      MAC address        State    Lease start          Lease expiration     Remaining    Pool    Hostname
--------------  -----------------  -------  -------------------  -------------------  -----------  ------  ---------------
192.168.11.136  00:0c:29:a5:42:d2  active   2023/11/24 12:07:36  2023/11/25 12:07:36  23:04:17     LAN     DESKTOP-HBDI2AP
vyos@Standby# run sh dhcp server leases
IP Address      MAC address        State    Lease start          Lease expiration     Remaining    Pool    Hostname
--------------  -----------------  -------  -------------------  -------------------  -----------  ------  ----------
192.168.11.133  00:50:79:66:68:04  active   2023/11/24 12:05:29  2023/11/25 12:05:29  23:01:54     LAN     PC5
192.168.11.134  00:50:79:66:68:03  active   2023/11/24 12:13:37  2023/11/25 12:13:37  23:10:02     LAN     PC4
vyos@Active# sudo netstat -putane | grep dhcp
tcp        0      0 0.0.0.0:7911            0.0.0.0:*               LISTEN      0          18812      4413/dhcpd
tcp        0      0 192.168.11.11:647       0.0.0.0:*               LISTEN      0          18814      4413/dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           0          18811      4413/dhcpd
vyos@Standby# sudo netstat -putane | grep dhcp
tcp        0      0 192.168.11.12:647       0.0.0.0:*               LISTEN      0          19414      4803/dhcpd
udp        0      0 0.0.0.0:67              0.0.0.0:*                           0          19412      4803/dhcpd

But inside /config/dhcpd.leases file we can see the leased IP addresses.

Attaching both lease files{F3911042}

{F3911041}
{F3911045}

Details

Difficulty level
Unknown (require assessment)
Version
1.5-rolling-202311231639, vyos-1.4-rolling-202311240309-amd64.iso
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)

Event Timeline

a.hajiyev updated the task description. (Show Details)
a.hajiyev updated the task description. (Show Details)

Do you want to see leases state == backup?
What is the expected?

show dhcp server leases state all
show dhcp server leases state backup

Changing this line: https://github.com/vyos/vyos-1x/blob/current/src/op_mode/dhcp.py#L117C9-L117C107

From

if data_lease['remaining'] != '' and data_lease['pool'] in pool and data_lease['state'] != 'free':

To

if data_lease['remaining'] != '' and  data_lease['state'] != 'free':

Prints leases that were granted by the other dhcp-server (same output as in 1.3). For example, a server wich has this patch:

vyos@SECONDARY# run show dhcp server leases 
IP Address      MAC address        State    Lease start          Lease expiration     Remaining    Pool    Hostname
--------------  -----------------  -------  -------------------  -------------------  -----------  ------  ----------
192.168.11.134  50:00:00:06:00:00  active   2023/11/24 11:58:50  2023/11/25 11:58:50  20:18:25     LAN     vyos
192.168.11.133  50:00:00:05:00:00  active   2023/11/24 12:03:32  2023/11/25 12:03:32  20:23:07     LAN     vyos
192.168.11.135  00:50:79:66:68:07  active   2023/11/24 12:06:09  2023/11/25 12:06:09  20:23:19
[edit]
vyos@SECONDARY#

And primary, which remains with original code, and provided lease 192.168.11.135:

vyos@PRIMARY# run show dhcp server leases 
IP Address      MAC address        State    Lease start          Lease expiration     Remaining    Pool    Hostname
--------------  -----------------  -------  -------------------  -------------------  -----------  ------  ----------
192.168.11.135  00:50:79:66:68:07  active   2023/11/24 12:06:09  2023/11/25 12:06:09  20:23:20     LAN     VPCS1
[edit]
vyos@PRIMARY#

More check might be needed, for example, with several pools

And going further, we may create an extra column, in order to print if the lease was granted by Local-Router or by fail-over router..
Example:

vyos@SECONDARY:~$ show dhcp server leases 
IP Address      MAC address        State    Lease start          Lease expiration     Remaining    Pool      Hostname    Server
--------------  -----------------  -------  -------------------  -------------------  -----------  --------  ----------  ---------------
10.11.11.101    00:50:79:66:68:08  active   2023/11/24 17:00:44  2023/11/25 17:00:44  23:29:15     VIF-1001  VPCS1       Local-Server
192.168.11.134  50:00:00:06:00:00  active   2023/11/24 11:58:50  2023/11/25 11:58:50  18:27:21     LAN       vyos        Local-Server
192.168.11.133  50:00:00:05:00:00  active   2023/11/24 12:03:32  2023/11/25 12:03:32  18:32:03     LAN       vyos        Local-Server
192.168.11.135  00:50:79:66:68:07  active   2023/11/24 12:06:09  2023/11/25 12:06:09  18:34:40                           Failover-Server
vyos@SECONDARY:~$ show config comm | grep dhcp
set service dhcp-server failover name 'LAN'
set service dhcp-server failover remote '192.168.11.11'
set service dhcp-server failover source-address '192.168.11.12'
set service dhcp-server failover status 'secondary'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 default-router '192.168.11.1'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 domain-name 'vyos.net'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 enable-failover
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 name-server '192.168.11.1'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 range 0 start '192.168.11.20'
set service dhcp-server shared-network-name LAN subnet 192.168.11.0/24 range 0 stop '192.168.11.250'
set service dhcp-server shared-network-name VIF-1001 subnet 10.11.11.0/24 default-router '10.11.11.1'
set service dhcp-server shared-network-name VIF-1001 subnet 10.11.11.0/24 name-server '1.1.1.1'
set service dhcp-server shared-network-name VIF-1001 subnet 10.11.11.0/24 range 0 start '10.11.11.101'
set service dhcp-server shared-network-name VIF-1001 subnet 10.11.11.0/24 range 0 stop '10.11.11.120'
vyos@SECONDARY:~$
n.fort changed the task status from Open to Confirmed.Nov 24 2023, 5:54 PM
n.fort claimed this task.
n.fort added a project: VyOS 1.5 Circinus.
n.fort changed Version from 1.4 to 1.5-rolling-202311231639, vyos-1.4-rolling-202311240309-amd64.iso.

What is the difference between local router and failover router? It is not clear. My local router in failover mode ;) but state master.

"The show dhcp server leases operation mode command does not work as expected"

Could you describe what is expected behaviour? I see some configs and some output. However, the issue is not described and is not clear to others.

The problem is that, comparing to command output on 1.3, it only show the leases granted by the router (and doesn't contain leases granted by the second router, regardless of states primary|secondary.
So user might think synchronization between routers defined in fail-over mode is broken.
But this is not the case. As explained in the description, all information about leases, granted by both routers, is present on lease files on both routers.

n.fort changed the task status from Confirmed to Needs testing.Dec 11 2023, 11:08 AM